Skip to content

Commit bfdfe58

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

4 files changed

Lines changed: 54 additions & 15 deletions

File tree

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,8 @@ func FetchCurrentAppliedYaml(option *GeneSvcYamlOption) (string, int, error) {
406406
if err != nil {
407407
return "", 0, err
408408
}
409+
log.Debugf("imported all manifests: %s", importedAllManifests)
410+
log.Debugf("load imported all manifests")
409411
return importedAllManifests, 0, err
410412
} else {
411413
fullRenderedYaml, err := RenderServiceYaml(prodSvcTemplate.Yaml, option.ProductName, option.ServiceName, curProductSvc.GetServiceRender())
@@ -432,7 +434,7 @@ func FetchImportedAllManifests(envInfo *models.Product, serviceTmp *models.Servi
432434
}
433435
fullRenderedYaml = ParseSysKeys(envInfo.Namespace, envInfo.EnvName, envInfo.ProductName, serviceTmp.ServiceName, fullRenderedYaml)
434436

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

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

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

Lines changed: 34 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"
@@ -332,17 +333,47 @@ func PreviewService(args *PreviewServiceArgs, _ *zap.SugaredLogger) (*SvcDiffRes
332333
Latest: TmplYaml{},
333334
}
334335

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

370+
log.Debugf("isImportToDeploy: %+v", isImportToDeploy)
371+
341372
curYaml, _, err = kube.FetchCurrentAppliedYaml(&kube.GeneSvcYamlOption{
342373
ProductName: args.ProductName,
343374
EnvName: args.EnvName,
344375
ServiceName: args.ServiceName,
345-
UpdateServiceRevision: args.UpdateServiceRevision,
376+
UpdateServiceRevision: false,
346377
IsImportToDeploy: isImportToDeploy,
347378
})
348379
if err != nil {
@@ -352,17 +383,6 @@ func PreviewService(args *PreviewServiceArgs, _ *zap.SugaredLogger) (*SvcDiffRes
352383
log.Errorf(ret.Error)
353384
}
354385

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-
366386
candidateOverrides, err := buildPreviewCandidateOverrides(envInfo, args.ServiceName, args.UpdateServiceRevision, args.VariableKVs)
367387
if err != nil {
368388
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)