diff --git a/pkg/action/validate.go b/pkg/action/validate.go index 555858fcf..045a70955 100644 --- a/pkg/action/validate.go +++ b/pkg/action/validate.go @@ -45,11 +45,10 @@ func requireAdoption(resources kube.ResourceList) (kube.ResourceList, error) { if err != nil { return err } - accessor, _ := meta.Accessor(info.Object) - if info.Name == "" && accessor.GetGenerateName() != "" { - return nil - } else if info.Name != "" && accessor.GetGenerateName() != "" { - return fmt.Errorf("metadata.name and metadata.generateName cannot both be set") + + skip, err := validateNameAndgenerateName(info) + if skip { + return err } helper := resource.NewHelper(info.Client, info.Mapping) @@ -76,11 +75,9 @@ func existingResourceConflict(resources kube.ResourceList, releaseName, releaseN return err } - accessor, _ := meta.Accessor(info.Object) - if info.Name == "" && accessor.GetGenerateName() != "" { - return nil - } else if info.Name != "" && accessor.GetGenerateName() != "" { - return fmt.Errorf("metadata.name and metadata.generateName cannot both be set") + skip, err := validateNameAndgenerateName(info) + if skip { + return err } helper := resource.NewHelper(info.Client, info.Mapping) @@ -212,3 +209,14 @@ func mergeStrStrMaps(current, desired map[string]string) map[string]string { maps.Copy(result, desired) return result } + +func validateNameAndgenerateName(info *resource.Info) (bool, error) { + accessor, _ := meta.Accessor(info.Object) + if info.Name == "" && accessor.GetGenerateName() != "" { + return true, nil + } else if info.Name != "" && accessor.GetGenerateName() != "" { + return true, fmt.Errorf("metadata.name and metadata.generateName cannot both be set") + } + + return false, nil +}