From 5a49b586614604553808393966dd47651300ca08 Mon Sep 17 00:00:00 2001 From: Marin Atanasov Nikolov Date: Tue, 16 Dec 2025 09:40:47 +0200 Subject: [PATCH] code-generator/defaulter-gen: generate defaults only if required tags are present This change makes `defaulter-gen` consistent with the rest of the code-generator tools like `deepcopy-gen`, `validation-gen` and others. In order for defaults to be generated, the `defaulter-gen` tool will expect to find the respective `+k8s:defaulter-gen` marker. Additional details can be found in the following issue: https://github.com/kubernetes/kubernetes/issues/135417 --- .../cmd/defaulter-gen/generators/defaulter.go | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/staging/src/k8s.io/code-generator/cmd/defaulter-gen/generators/defaulter.go b/staging/src/k8s.io/code-generator/cmd/defaulter-gen/generators/defaulter.go index 2379117c584..84c2f643921 100644 --- a/staging/src/k8s.io/code-generator/cmd/defaulter-gen/generators/defaulter.go +++ b/staging/src/k8s.io/code-generator/cmd/defaulter-gen/generators/defaulter.go @@ -73,12 +73,19 @@ func extractDefaultTag(comments []string) ([]string, error) { return tags[defaultTagName], nil } -func extractTag(comments []string) ([]string, error) { +func extractTag(comments []string) ([]string, bool) { tags, err := genutil.ExtractCommentTagsWithoutArguments("+", []string{tagName}, comments) if err != nil { - return nil, err + klog.Fatalf("Error extracting %s tag: %v", tagName, err) + return nil, false } - return tags[tagName], nil + + values, found := tags[tagName] + if !found || len(values) == 0 { + return nil, false + } + + return values, true } func extractInputTag(comments []string) ([]string, error) { @@ -330,9 +337,10 @@ func GetTargets(context *generator.Context, args *args.Args) []generator.Target getManualDefaultingFunctions(context, context.Universe[pp], existingDefaulters) } - typesWith, err := extractTag(pkg.Comments) - if err != nil { - klog.Fatalf("Error extracting %s tag: %v", tagName, err) + typesWith, found := extractTag(pkg.Comments) + if !found { + klog.V(2).InfoS(" did not find required tag", "tag", tagName) + continue } shouldCreateObjectDefaulterFn := func(t *types.Type) bool { if defaults, ok := existingDefaulters[t]; ok && defaults.object != nil {