-
Notifications
You must be signed in to change notification settings - Fork 75
Open
Description
Problem
The setNetworkNameFromTemplate function in pkg/controller/plan/adapter/vsphere/builder.go does not validate that generated network names are valid DNS-1123 labels or check the 63-character limit. This could lead to invalid Kubernetes resource names being generated from templates.
Current Behavior
setNetworkNameFromTemplate only calls r.executeTemplate() and returns the raw result without validation:
func (r *Builder) setNetworkNameFromTemplate(vm *model.VM, mapped *api.NetworkPair, networkIndex int) (string, error) {
// ... template data setup ...
return r.executeTemplate(networkNameTemplate, &templateData) // No validation
}Expected Behavior
Network names should be validated similar to how setObjectNameFromTemplate validates PVC names:
// Validate that template output is a valid k8s label
errs := k8svalidation.IsDNS1123Label(generatedName)
if len(errs) > 0 {
return "", fmt.Errorf("generated network name is not a valid DNS-1123 label: %s", generatedName)
}Solution
Add DNS-1123 label validation and 63-character length check to setNetworkNameFromTemplate before returning the generated name.
References
- Original PR: MTV-3091 | Add pvc name template support to volume populator flows #2540
- Comment thread: MTV-3091 | Add pvc name template support to volume populator flows #2540 (comment)
- Related code:
pkg/controller/plan/adapter/vsphere/builder.golines 1562-1577
Metadata
Metadata
Assignees
Labels
No labels