Skip to content

Commit e37df69

Browse files
Support per-target kustomizeDir in kubernetes_multicluster plugin (#6718)
Signed-off-by: Mohammed Firdous <124298708+mohammedfirdouss@users.noreply.github.com>
1 parent d0d2052 commit e37df69

3 files changed

Lines changed: 19 additions & 4 deletions

File tree

pkg/app/pipedv1/plugin/kubernetes_multicluster/deployment/plugin.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,14 @@ func (p *Plugin) ExecuteStage(ctx context.Context, _ *sdk.ConfigNone, dts []*sdk
8989
}
9090

9191
func (p *Plugin) loadManifests(ctx context.Context, deploy *sdk.Deployment, spec *kubeconfig.KubernetesApplicationSpec, deploymentSource *sdk.DeploymentSource[kubeconfig.KubernetesApplicationSpec], loader loader, logger *zap.Logger, multiTarget *kubeconfig.KubernetesMultiTarget) ([]provider.Manifest, error) {
92-
// override values if multiTarget has value.
92+
// Override manifest paths and kustomize directory from the per-target config if set.
9393
manifestPathes := spec.Input.Manifests
94+
kustomizeDir := ""
9495
if multiTarget != nil {
9596
if len(multiTarget.Manifests) > 0 {
9697
manifestPathes = multiTarget.Manifests
9798
}
99+
kustomizeDir = multiTarget.KustomizeDir
98100
}
99101

100102
manifests, err := loader.LoadManifests(ctx, provider.LoaderInput{
@@ -107,6 +109,7 @@ func (p *Plugin) loadManifests(ctx context.Context, deploy *sdk.Deployment, spec
107109
Manifests: manifestPathes,
108110
Namespace: spec.Input.Namespace,
109111
KustomizeVersion: spec.Input.KustomizeVersion,
112+
KustomizeDir: kustomizeDir,
110113
KustomizeOptions: spec.Input.KustomizeOptions,
111114
HelmVersion: spec.Input.HelmVersion,
112115
HelmChart: spec.Input.HelmChart,

pkg/app/pipedv1/plugin/kubernetes_multicluster/deployment/rollback.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,6 @@ func (p *Plugin) rollback(ctx context.Context, input *sdk.ExecuteStageInput[kube
132132

133133
lp.Infof("Loading manifests at commit %s for handling", input.Request.RunningDeploymentSource.CommitHash)
134134
toolRegistry := toolregistry.NewRegistry(input.Client.ToolRegistry())
135-
// TODO: consider multiTarget later
136135
manifests, err := p.loadManifests(ctx, &input.Request.Deployment, cfg.Spec, &input.Request.RunningDeploymentSource, provider.NewLoader(toolRegistry), input.Logger, multiTarget)
137136
if err != nil {
138137
lp.Errorf("Failed while loading manifests (%v)", err)

pkg/app/pipedv1/plugin/kubernetes_multicluster/provider/loader.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ type LoaderInput struct {
5555
Namespace string
5656

5757
KustomizeVersion string
58+
KustomizeDir string
5859
KustomizeOptions map[string]string
5960

6061
HelmVersion string
@@ -85,12 +86,24 @@ func (l *Loader) determineTemplatingMethod(input LoaderInput) TemplatingMethod {
8586
if input.HelmChart != nil {
8687
return TemplatingMethodHelm
8788
}
88-
if isKustomizationFileExists(input.AppDir) {
89+
if isKustomizationFileExists(resolveKustomizeDir(input.AppDir, input.KustomizeDir)) {
8990
return TemplatingMethodKustomize
9091
}
9192
return TemplatingMethodNone
9293
}
9394

95+
// resolveKustomizeDir returns the effective kustomize directory.
96+
// If kustomizeDir is empty, appDir is used. If kustomizeDir is relative, it is joined with appDir.
97+
func resolveKustomizeDir(appDir, kustomizeDir string) string {
98+
if kustomizeDir == "" {
99+
return appDir
100+
}
101+
if filepath.IsAbs(kustomizeDir) {
102+
return kustomizeDir
103+
}
104+
return filepath.Join(appDir, kustomizeDir)
105+
}
106+
94107
// isKustomizationFileExists checks if a kustomization file exists in the given directory.
95108
// There are 3 files name considered as kustomization file:
96109
// - kustomization.yaml
@@ -200,7 +213,7 @@ func (l *Loader) templateKustomizeManifests(ctx context.Context, input LoaderInp
200213

201214
k := NewKustomize(input.KustomizeVersion, kustomizePath, input.Logger)
202215

203-
return k.Template(ctx, input.AppName, input.AppDir, input.KustomizeOptions, h)
216+
return k.Template(ctx, input.AppName, resolveKustomizeDir(input.AppDir, input.KustomizeDir), input.KustomizeOptions, h)
204217
}
205218

206219
func LoadPlainYAMLManifests(dir string, names []string, configFilename string) ([]Manifest, error) {

0 commit comments

Comments
 (0)