From 84c936eec2715e1218f77d3e1c36ac4ede9a7aa4 Mon Sep 17 00:00:00 2001 From: Camila Macedo <7708031+camilamacedo86@users.noreply.github.com> Date: Thu, 20 Feb 2025 10:10:34 +0000 Subject: [PATCH] (helm/v1-alpha): Use namePrefix from kustomization.yaml instead of project name in RBAC and Helm templates --- .../optional/helm/v1alpha/scaffolds/init.go | 34 ++++++++++++++----- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/pkg/plugins/optional/helm/v1alpha/scaffolds/init.go b/pkg/plugins/optional/helm/v1alpha/scaffolds/init.go index 0a6c0496761..d2a5577799d 100644 --- a/pkg/plugins/optional/helm/v1alpha/scaffolds/init.go +++ b/pkg/plugins/optional/helm/v1alpha/scaffolds/init.go @@ -124,6 +124,24 @@ func (s *initScaffolder) Scaffold() error { return nil } +func (s *initScaffolder) getNamePrefix() (string, error) { + filePath := "config/default/kustomization.yaml" + content, err := os.ReadFile(filePath) + if err != nil { + return "", fmt.Errorf("failed to read kustomization.yaml: %w", err) + } + + var kustomization struct { + NamePrefix string `yaml:"namePrefix"` + } + + if err := yaml.Unmarshal(content, &kustomization); err != nil { + return "", fmt.Errorf("failed to parse kustomization.yaml: %w", err) + } + + return strings.TrimSpace(kustomization.NamePrefix), nil +} + // getDeployImagesEnvVars will return the values to append the envvars for projects // which has the APIs scaffolded with DeployImage plugin func (s *initScaffolder) getDeployImagesEnvVars() map[string]string { @@ -255,7 +273,7 @@ func (s *initScaffolder) copyConfigFiles() error { // copyFileWithHelmLogic reads the source file, modifies the content for Helm, applies patches // to spec.conversion if applicable, and writes it to the destination -func copyFileWithHelmLogic(srcFile, destFile, subDir, projectName string) error { +func copyFileWithHelmLogic(srcFile, destFile, subDir, namePrefix string) error { if _, err := os.Stat(srcFile); os.IsNotExist(err) { log.Printf("Source file does not exist: %s", srcFile) return err @@ -282,14 +300,14 @@ func copyFileWithHelmLogic(srcFile, destFile, subDir, projectName string) error "name: {{ .Values.controllerManager.serviceAccountName }}", -1) contentStr = strings.Replace(contentStr, "name: metrics-reader", - fmt.Sprintf("name: %s-metrics-reader", projectName), 1) + fmt.Sprintf("name: %s-metrics-reader", namePrefix), 1) contentStr = strings.Replace(contentStr, "name: metrics-auth-role", - fmt.Sprintf("name: %s-metrics-auth-role", projectName), -1) + fmt.Sprintf("name: %s-metrics-auth-role", namePrefix), -1) contentStr = strings.Replace(contentStr, "name: metrics-auth-rolebinding", - fmt.Sprintf("name: %s-metrics-auth-rolebinding", projectName), 1) + fmt.Sprintf("name: %s-metrics-auth-rolebinding", namePrefix), 1) if strings.Contains(contentStr, ".Values.controllerManager.serviceAccountName") && strings.Contains(contentStr, "kind: ServiceAccount") && @@ -306,16 +324,16 @@ func copyFileWithHelmLogic(srcFile, destFile, subDir, projectName string) error } contentStr = strings.Replace(contentStr, "name: leader-election-role", - fmt.Sprintf("name: %s-leader-election-role", projectName), -1) + fmt.Sprintf("name: %s-leader-election-role", namePrefix), -1) contentStr = strings.Replace(contentStr, "name: leader-election-rolebinding", - fmt.Sprintf("name: %s-leader-election-rolebinding", projectName), 1) + fmt.Sprintf("name: %s-leader-election-rolebinding", namePrefix), 1) contentStr = strings.Replace(contentStr, "name: manager-role", - fmt.Sprintf("name: %s-manager-role", projectName), -1) + fmt.Sprintf("name: %s-manager-role", namePrefix), -1) contentStr = strings.Replace(contentStr, "name: manager-rolebinding", - fmt.Sprintf("name: %s-manager-rolebinding", projectName), 1) + fmt.Sprintf("name: %s-manager-rolebinding", namePrefix), 1) // The generated files do not include the namespace if strings.Contains(contentStr, "leader-election-rolebinding") ||