Skip to content

Commit e7723cb

Browse files
committed
update preview service for import service
Signed-off-by: Patrick Zhao <zhaoyu@koderover.com>
1 parent cef45ff commit e7723cb

4 files changed

Lines changed: 45 additions & 15 deletions

File tree

pkg/microservice/aslan/core/common/service/kube/render.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,7 @@ func FetchImportedAllManifests(envInfo *models.Product, serviceTmp *models.Servi
432432
}
433433
fullRenderedYaml = ParseSysKeys(envInfo.Namespace, envInfo.EnvName, envInfo.ProductName, serviceTmp.ServiceName, fullRenderedYaml)
434434

435-
manifests := releaseutil.SplitManifests(fullRenderedYaml)
435+
manifests := util.SplitManifestsOrdered(fullRenderedYaml)
436436

437437
kubeClient, err := clientmanager.NewKubeClientManager().GetControllerRuntimeClient(envInfo.ClusterID)
438438
if err != nil {

pkg/microservice/aslan/core/environment/service/service.go

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package service
1919
import (
2020
"context"
2121
"fmt"
22+
"slices"
2223

2324
"github.com/koderover/zadig/v2/pkg/tool/clientmanager"
2425
"github.com/pkg/errors"
@@ -334,15 +335,38 @@ func PreviewService(args *PreviewServiceArgs, _ *zap.SugaredLogger) (*SvcDiffRes
334335

335336
curYaml := ""
336337
isImportToDeploy := false
337-
if envInfo.ServiceDeployStrategy[args.ServiceName] == setting.ServiceDeployStrategyImport && (args.UpdateServiceRevision || len(args.VariableKVs) > 0) {
338-
isImportToDeploy = true
338+
if envInfo.ServiceDeployStrategy[args.ServiceName] == setting.ServiceDeployStrategyImport {
339+
// is imported service
340+
if len(args.DeployContents) > 0 {
341+
// is workflow
342+
if len(args.DeployContents) == 1 && slices.Contains(args.DeployContents, config.DeployImage) {
343+
// only update images
344+
envSvc := envInfo.GetServiceMap()[args.ServiceName]
345+
if envSvc == nil {
346+
return nil, e.ErrPreviewYaml.AddErr(fmt.Errorf("service %s not found in environment", args.ServiceName))
347+
}
348+
for _, container := range envSvc.Containers {
349+
ret.Current.Yaml += container.Image + "\n"
350+
}
351+
for _, container := range args.ServiceModules {
352+
ret.Latest.Yaml += container.Image + "\n"
353+
}
354+
return ret, nil
355+
} else if slices.Contains(args.DeployContents, config.DeployVars) || slices.Contains(args.DeployContents, config.DeployConfig) {
356+
// set update variables or configuration
357+
isImportToDeploy = true
358+
}
359+
} else {
360+
// is environment
361+
isImportToDeploy = true
362+
}
339363
}
340364

341365
curYaml, _, err = kube.FetchCurrentAppliedYaml(&kube.GeneSvcYamlOption{
342366
ProductName: args.ProductName,
343367
EnvName: args.EnvName,
344368
ServiceName: args.ServiceName,
345-
UpdateServiceRevision: args.UpdateServiceRevision,
369+
UpdateServiceRevision: false,
346370
IsImportToDeploy: isImportToDeploy,
347371
})
348372
if err != nil {
@@ -352,17 +376,6 @@ func PreviewService(args *PreviewServiceArgs, _ *zap.SugaredLogger) (*SvcDiffRes
352376
log.Errorf(ret.Error)
353377
}
354378

355-
// for situations only update images, replace images directly
356-
if !args.UpdateServiceRevision && len(args.VariableKVs) == 0 {
357-
latestYaml, _, err := kube.ReplaceWorkloadImages(curYaml, args.ServiceModules)
358-
if err != nil {
359-
return nil, e.ErrPreviewYaml.AddErr(err)
360-
}
361-
ret.Current.Yaml = curYaml
362-
ret.Latest.Yaml = latestYaml
363-
return ret, nil
364-
}
365-
366379
candidateOverrides, err := buildPreviewCandidateOverrides(envInfo, args.ServiceName, args.UpdateServiceRevision, args.VariableKVs)
367380
if err != nil {
368381
return nil, e.ErrPreviewYaml.AddErr(err)

pkg/microservice/aslan/core/environment/service/types.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ type PreviewServiceArgs struct {
8383
UpdateServiceRevision bool `json:"update_service_revision"`
8484
ServiceModules []*commonmodels.Container `json:"service_modules"`
8585
VariableKVs []*commontypes.RenderVariableKV `json:"variable_kvs"`
86+
DeployContents []config.DeployContent `json:"deploy_contents"`
8687
}
8788

8889
type RestartScaleArgs struct {

pkg/util/helm.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,12 @@ import (
2020
"fmt"
2121
"io/fs"
2222
"path/filepath"
23+
"sort"
2324
"strings"
2425

2526
"go.uber.org/zap"
2627
"gopkg.in/yaml.v3"
28+
"helm.sh/helm/v3/pkg/releaseutil"
2729
"k8s.io/helm/pkg/strvals"
2830

2931
"github.com/koderover/zadig/v2/pkg/setting"
@@ -100,3 +102,17 @@ func ReadValuesYAMLFromLocal(base string, logger *zap.SugaredLogger) ([]byte, er
100102
}
101103
return content, nil
102104
}
105+
106+
func SplitManifestsOrdered(content string) []string {
107+
res := make([]string, 0)
108+
manifests := releaseutil.SplitManifests(content)
109+
manifestKeys := make([]string, 0, len(manifests))
110+
for key := range manifests {
111+
manifestKeys = append(manifestKeys, key)
112+
}
113+
sort.Sort(releaseutil.BySplitManifestsOrder(manifestKeys))
114+
for _, key := range manifestKeys {
115+
res = append(res, manifests[key])
116+
}
117+
return res
118+
}

0 commit comments

Comments
 (0)