Skip to content

Commit ace7d6e

Browse files
committed
Simply don't update service monitor name
1 parent 6f812a1 commit ace7d6e

File tree

6 files changed

+24
-95
lines changed

6 files changed

+24
-95
lines changed

pkg/plugins/optional/helm/v2alpha/scaffolds/edit_kustomize.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ func (s *editKustomizeScaffolder) Scaffold() error {
110110
}
111111
}
112112
namePrefix := resources.EstimatePrefix(s.config.GetProjectName())
113-
chartConverter := kustomize.NewChartConverter(resources, s.config.GetProjectName(), namePrefix, s.outputDir)
113+
chartConverter := kustomize.NewChartConverter(resources, s.config.GetProjectName(), s.outputDir)
114114
deploymentConfig := chartConverter.ExtractDeploymentConfig()
115115

116116
// Create scaffold for standard Helm chart files

pkg/plugins/optional/helm/v2alpha/scaffolds/internal/kustomize/chart_converter.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@ type ChartConverter struct {
3737
}
3838

3939
// NewChartConverter creates a new chart converter with all necessary components
40-
func NewChartConverter(resources *ParsedResources, projectName, namePrefix, outputDir string) *ChartConverter {
40+
func NewChartConverter(resources *ParsedResources, projectName, outputDir string) *ChartConverter {
4141
organizer := NewResourceOrganizer(resources)
42-
templater := NewHelmTemplater(projectName, namePrefix)
42+
templater := NewHelmTemplater(projectName)
4343
writer := NewChartWriter(templater, outputDir)
4444

4545
return &ChartConverter{

pkg/plugins/optional/helm/v2alpha/scaffolds/internal/kustomize/chart_converter_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ var _ = Describe("ChartConverter", func() {
5555
fs = machinery.Filesystem{FS: afero.NewMemMapFs()}
5656

5757
// Create converter
58-
converter = NewChartConverter(resources, "test-project", "test-project", "dist")
58+
converter = NewChartConverter(resources, "test-project", "dist")
5959
})
6060

6161
Context("NewChartConverter", func() {

pkg/plugins/optional/helm/v2alpha/scaffolds/internal/kustomize/chart_writer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ func (w *ChartWriter) generateFileName(resource *unstructured.Unstructured, inde
145145
// Try to use the resource name if available
146146
if name := resource.GetName(); name != "" {
147147
// Remove project prefix from the filename for cleaner file names
148-
projectPrefix := w.templater.namePrefix + "-"
148+
projectPrefix := w.templater.projectName + "-"
149149
fileName := name
150150
if strings.HasPrefix(name, projectPrefix) {
151151
fileName = strings.TrimPrefix(name, projectPrefix)

pkg/plugins/optional/helm/v2alpha/scaffolds/internal/kustomize/helm_templater.go

Lines changed: 1 addition & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,12 @@ const (
4848
// HelmTemplater handles converting YAML content to Helm templates
4949
type HelmTemplater struct {
5050
projectName string
51-
namePrefix string
5251
}
5352

5453
// NewHelmTemplater creates a new Helm templater
55-
func NewHelmTemplater(projectName string, namePrefix string) *HelmTemplater {
54+
func NewHelmTemplater(projectName string) *HelmTemplater {
5655
return &HelmTemplater{
5756
projectName: projectName,
58-
namePrefix: namePrefix,
5957
}
6058
}
6159

@@ -70,9 +68,6 @@ func (t *HelmTemplater) ApplyHelmSubstitutions(yamlContent string, resource *uns
7068
// Apply namespace substitutions
7169
yamlContent = t.substituteNamespace(yamlContent, resource)
7270

73-
// Template ServiceMonitor metadata.name to be chart.name-scoped for consistency
74-
yamlContent = t.templateServiceMonitorNames(yamlContent, resource)
75-
7671
// Apply cert-manager and webhook-specific templating AFTER other substitutions
7772
yamlContent = t.substituteCertManagerReferences(yamlContent, resource)
7873

@@ -161,52 +156,6 @@ func (t *HelmTemplater) substituteCertManagerReferences(yamlContent string, _ *u
161156
return yamlContent
162157
}
163158

164-
// templateServiceNames ensures Service metadata.name uses Helm helpers for release-scoped naming.
165-
// It converts hardcoded names like "<project>-webhook-service" or
166-
// "<project>-controller-manager-metrics-service" to:
167-
//
168-
// name: {{ include "chart.serviceName" (dict "suffix" "<suffix>" "context" .) }}
169-
// NOTE: Service names are intentionally left as project-scoped (no release prefix)
170-
// to match existing samples and e2e tests that refer to fixed service names.
171-
172-
// templateServiceMonitorNames ensures ServiceMonitor metadata.name uses chart.name-based naming for consistency
173-
// with existing tests and samples. It converts names like "controller-manager-metrics-monitor" or
174-
// "<project>-controller-manager-metrics-monitor" to:
175-
//
176-
// name: {{ include "chart.name" . }}-controller-manager-metrics-monitor
177-
func (t *HelmTemplater) templateServiceMonitorNames(yamlContent string, resource *unstructured.Unstructured) string {
178-
if resource.GetKind() != kindServiceMonitor {
179-
return yamlContent
180-
}
181-
182-
origName := resource.GetName()
183-
if origName == "" {
184-
return yamlContent
185-
}
186-
187-
// Normalize suffix by stripping the project prefix if present
188-
suffix := origName
189-
prefix := t.namePrefix + "-"
190-
if strings.HasPrefix(origName, prefix) {
191-
suffix = strings.TrimPrefix(origName, prefix)
192-
}
193-
194-
// If the prefix is not the project name, we should keep the original name intact
195-
if prefix != t.projectName+"-" {
196-
return yamlContent
197-
}
198-
199-
// Only template if the intended target follows the conventional suffix
200-
// This keeps any custom user-provided names intact
201-
// For default scaffolding, suffix is typically "controller-manager-metrics-monitor"
202-
templated := "{{ include \"chart.name\" . }}-" + suffix
203-
204-
nameRe := regexp.MustCompile("(?m)^([\t ]*)name:\\s*" + regexp.QuoteMeta(origName) + "\\s*$")
205-
yamlContent = nameRe.ReplaceAllString(yamlContent, "${1}name: "+templated)
206-
207-
return yamlContent
208-
}
209-
210159
// addHelmLabelsAndAnnotations replaces kustomize managed-by labels with Helm equivalents
211160
func (t *HelmTemplater) addHelmLabelsAndAnnotations(yamlContent string, _ *unstructured.Unstructured) string {
212161
// Replace app.kubernetes.io/managed-by: kustomize with Helm template

pkg/plugins/optional/helm/v2alpha/scaffolds/internal/kustomize/helm_templater_test.go

Lines changed: 18 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ var _ = Describe("HelmTemplater", func() {
2828
BeforeEach(func() {
2929
templater = &HelmTemplater{
3030
projectName: "test-project",
31-
namePrefix: "test-project",
3231
}
3332
})
3433

@@ -226,43 +225,6 @@ metadata:
226225
Expect(result).To(ContainSubstring("{{- end }}"))
227226
})
228227

229-
Describe("should generate ServiceMonitor name correctly", func() {
230-
var serviceMonitorResource *unstructured.Unstructured
231-
var content string
232-
233-
BeforeEach(func() {
234-
serviceMonitorResource = &unstructured.Unstructured{}
235-
serviceMonitorResource.SetAPIVersion("monitoring.coreos.com/v1")
236-
serviceMonitorResource.SetKind("ServiceMonitor")
237-
serviceMonitorResource.SetName("test-project-controller-manager-metrics-monitor")
238-
239-
// Test content must end with a newline
240-
// If not, the `name` regex in the ServiceMonitor replacement will never match
241-
content = `apiVersion: monitoring.coreos.com/v1
242-
kind: ServiceMonitor
243-
metadata:
244-
name: test-project-controller-manager-metrics-monitor
245-
`
246-
})
247-
248-
It("should use chart.name template when namePrefix and project name are the same", func() {
249-
result := templater.ApplyHelmSubstitutions(content, serviceMonitorResource)
250-
// If the namePrefix and default chart name match, should use chart.name template
251-
Expect(result).To(ContainSubstring("{{ include \"chart.name\" . }}"),
252-
"Should use chart.name template when namePrefix and project name match")
253-
})
254-
It("should preserve the original name when the namePrefix and project name differ", func() {
255-
templaterDiff := &HelmTemplater{
256-
projectName: "project-with-a-long-name",
257-
namePrefix: "test-project",
258-
}
259-
result := templaterDiff.ApplyHelmSubstitutions(content, serviceMonitorResource)
260-
// If the namePrefix and default chart name differ, should use namePrefix variable
261-
Expect(result).ToNot(ContainSubstring("{{ include \"chart.name\" . }}"),
262-
"Should not use chart.name template when namePrefix and project name differ")
263-
})
264-
})
265-
266228
It("should add metrics conditional for metrics services", func() {
267229
serviceResource := &unstructured.Unstructured{}
268230
serviceResource.SetAPIVersion("v1")
@@ -427,6 +389,24 @@ metadata:
427389
Expect(result).To(ContainSubstring("name: test-project-controller-manager"))
428390
Expect(result).NotTo(ContainSubstring("{{ include"))
429391
})
392+
It("should preserve name for ServiceMonitor", func() {
393+
serviceMonitorResource := &unstructured.Unstructured{}
394+
serviceMonitorResource.SetAPIVersion("monitoring.coreos.com/v1")
395+
serviceMonitorResource.SetKind("ServiceMonitor")
396+
serviceMonitorResource.SetName("test-project-controller-manager-metrics-monitor")
397+
398+
content := `apiVersion: monitoring.coreos.com/v1
399+
kind: ServiceMonitor
400+
metadata:
401+
name: test-project-controller-manager-metrics-monitor`
402+
403+
result := templater.ApplyHelmSubstitutions(content, serviceMonitorResource)
404+
405+
// Name should remain unchanged
406+
Expect(result).To(ContainSubstring("name: test-project-controller-manager-metrics-monitor"))
407+
Expect(result).NotTo(ContainSubstring("{{ include"))
408+
})
409+
430410
})
431411

432412
Context("edge cases", func() {

0 commit comments

Comments
 (0)