Skip to content

Add DNS-1123 label validation to setNetworkNameFromTemplate #2542

@coderabbitai

Description

@coderabbitai

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions