Skip to content

CNTRLPLANE-2449: wip: feat: implement OpenAPIModelNamer interface#2856

Open
ingvagabund wants to merge 6 commits into
openshift:masterfrom
ingvagabund:implement-OpenAPIModelNamer-interface
Open

CNTRLPLANE-2449: wip: feat: implement OpenAPIModelNamer interface#2856
ingvagabund wants to merge 6 commits into
openshift:masterfrom
ingvagabund:implement-OpenAPIModelNamer-interface

Conversation

@ingvagabund
Copy link
Copy Markdown
Member

@ingvagabund ingvagabund commented May 25, 2026

TBD

Consequence of kubernetes/kubernetes#131755

Important note: the current openapi/openapi.json is generated with the openshift type names in com.github.openshift.api.<group>.<version>.<TypeName> order. Implementing the new interface results in the openshift types names generated in <TypeName>.<version>.<group>.api.openshift.github.com. Which completely reshuffles the keys in openapi/openapi.json. Which makes it hard to follow the changes. The kubernetes types already follow this new naming schema. E.g. APIGroup.v1.meta.apis.pkg.apimachinery.k8s.io.

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: LGTM mode

@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label May 25, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 25, 2026

Hello @ingvagabund! Some important instructions when contributing to openshift/api:
API design plays an important part in the user experience of OpenShift and as such API PRs are subject to a high level of scrutiny to ensure they follow our best practices. If you haven't already done so, please review the OpenShift API Conventions and ensure that your proposed changes are compliant. Following these conventions will help expedite the api review process for your PR.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 25, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 6dfc7831-74e5-4596-b0b7-f8df6bcbf6d2

📥 Commits

Reviewing files that changed from the base of the PR and between 7d170fd and 14f7da2.

⛔ Files ignored due to path filters (238)
  • apiextensions/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • apiserver/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • apps/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • authorization/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • build/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • cloudnetwork/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • config/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • config/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • config/v1alpha2/zz_generated.model_name.go is excluded by !**/zz_generated*
  • console/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • etcd/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • etcd/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • example/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • example/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • go.sum is excluded by !**/*.sum
  • helm/v1beta1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • image/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • imageregistry/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • insights/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • insights/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • insights/v1alpha2/zz_generated.model_name.go is excluded by !**/zz_generated*
  • kubecontrolplane/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • legacyconfig/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • machine/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • machine/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • machine/v1beta1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • machineconfiguration/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • machineconfiguration/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • monitoring/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • network/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • network/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • networkoperator/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • oauth/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • openapi/cmd/models-schema/main.go is excluded by !openapi/**
  • openapi/generated_openapi/zz_generated.openapi.go is excluded by !openapi/**, !**/zz_generated*
  • openapi/openapi.json is excluded by !openapi/**
  • openshiftcontrolplane/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • operator/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • operator/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • operatorcontrolplane/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • operatoringress/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • osin/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • project/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • quota/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • route/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • samples/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • security/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • securityinternal/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • servicecertsigner/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • sharedresource/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • template/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • user/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • vendor/github.com/emicklei/go-restful/v3/.travis.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/CHANGES.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/compress.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/curly.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/custom_verb.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/entity_accessors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/json.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/jsoniter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/jsr311.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/route.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/.codecov.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/.golangci.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/.mockery.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/SECURITY.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/cmdutils/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/cmdutils/cmd_utils.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/cmdutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/cmdutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/convert.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/convert_types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/format.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/sizeof.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/type_constraints.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/convert.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/convert_types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/file.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/fileutils/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/fileutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/fileutils/file.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/fileutils/path.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/fileutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/go.work is excluded by !**/*.work, !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/go.work.sum is excluded by !**/*.sum, !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/initialism_index.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/json.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonname/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonname/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonname/name_provider.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonname_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/ifaces/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/ifaces/ifaces.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/ifaces/registry_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/registry.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/adapter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/lexer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/ordered_map.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/pool.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/register.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/writer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/concat.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/json.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/ordered_map.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/errors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/json.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/loading.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/options.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/yaml.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/BENCHMARK.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/initialism_index.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/name_lexem.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/name_mangler.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/options.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/pools.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/split.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/string_bytes.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/util.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/name_lexem.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/net.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/netutils/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/netutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/netutils/net.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/netutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/split.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/stringutils/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/stringutils/collection_formats.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/stringutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/stringutils/strings.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/stringutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/typeutils/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/typeutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/typeutils/types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/typeutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/util.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yaml.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils/errors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils/ordered_map.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils/yaml.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/josharian/intern/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/josharian/intern/intern.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/josharian/intern/license.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/buffer/pool.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/jlexer/bytestostr.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/jlexer/bytestostr_nounsafe.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/jlexer/error.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/jlexer/lexer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/jwriter/writer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/spf13/pflag/flag.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/mod/semver/semver.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/client_priority_go126.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/client_priority_go127.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/frame.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/http2.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/server.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/transport.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/writesched_priority_rfc7540.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/writesched_priority_rfc9218.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/internal/httpsfv/httpsfv.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sync/errgroup/errgroup.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/secure/bidirule/bidirule.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables17.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/forminfo.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables10.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables11.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables12.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables15.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables17.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables9.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/ast/inspector/cursor.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/ast/inspector/inspector.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/ast/inspector/iter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/packages/packages.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/packages/visit.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/types/objectpath/objectpath.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/types/typeutil/callee.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/types/typeutil/map.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/aliases/aliases.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/aliases/aliases_go122.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/event/core/event.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/event/core/export.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/event/keys/keys.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/event/label/label.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/gcimporter/bimport.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/gcimporter/iexport.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/gcimporter/iimport.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/gcimporter/ureader_yes.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/stdlib/deps.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/stdlib/import.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/stdlib/manifest.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/stdlib/stdlib.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typeparams/free.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typeparams/normalize.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/classify_call.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/element.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/fx.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/isnamed.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/qualifier.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/varkind.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/varkind_go124.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/zerovalue.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/versions/features.go is excluded by !**/vendor/**, !vendor/**
  • vendor/gopkg.in/yaml.v3/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/gopkg.in/yaml.v3/NOTICE is excluded by !**/vendor/**, !vendor/**
  • vendor/gopkg.in/yaml.v3/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/gopkg.in/yaml.v3/apic.go is excluded by !**/vendor/**, !vendor/**
📒 Files selected for processing (55)
  • apiextensions/v1alpha1/doc.go
  • apiserver/v1/doc.go
  • apps/v1/doc.go
  • authorization/v1/doc.go
  • build/v1/doc.go
  • cloudnetwork/v1/doc.go
  • config/v1/doc.go
  • config/v1alpha1/doc.go
  • config/v1alpha2/doc.go
  • console/v1/doc.go
  • etcd/v1/doc.go
  • etcd/v1alpha1/doc.go
  • example/v1/doc.go
  • example/v1alpha1/doc.go
  • go.mod
  • helm/v1beta1/doc.go
  • image/v1/doc.go
  • imageregistry/v1/doc.go
  • insights/v1/doc.go
  • insights/v1alpha1/doc.go
  • insights/v1alpha2/doc.go
  • kubecontrolplane/v1/doc.go
  • legacyconfig/v1/doc.go
  • machine/v1/doc.go
  • machine/v1alpha1/doc.go
  • machine/v1beta1/doc.go
  • machineconfiguration/v1/doc.go
  • machineconfiguration/v1alpha1/doc.go
  • monitoring/v1/doc.go
  • network/v1/doc.go
  • network/v1alpha1/doc.go
  • networkoperator/v1/doc.go
  • oauth/v1/doc.go
  • openshiftcontrolplane/v1/doc.go
  • operator/v1/doc.go
  • operator/v1alpha1/doc.go
  • operatorcontrolplane/v1alpha1/doc.go
  • operatoringress/v1/doc.go
  • osin/v1/doc.go
  • platform/v1alpha1/doc.go
  • project/v1/doc.go
  • quota/v1/doc.go
  • route/v1/doc.go
  • samples/v1/doc.go
  • security/v1/doc.go
  • securityinternal/v1/doc.go
  • servicecertsigner/v1alpha1/doc.go
  • sharedresource/v1alpha1/doc.go
  • template/v1/doc.go
  • tools/codegen/cmd/modelname.go
  • tools/codegen/cmd/root.go
  • tools/codegen/pkg/generation/types.go
  • tools/codegen/pkg/modelname/generator.go
  • tools/codegen/pkg/modelname/modelname.go
  • user/v1/doc.go
✅ Files skipped from review due to trivial changes (36)
  • example/v1/doc.go
  • build/v1/doc.go
  • etcd/v1alpha1/doc.go
  • config/v1/doc.go
  • machine/v1alpha1/doc.go
  • osin/v1/doc.go
  • network/v1alpha1/doc.go
  • cloudnetwork/v1/doc.go
  • quota/v1/doc.go
  • openshiftcontrolplane/v1/doc.go
  • operatoringress/v1/doc.go
  • operator/v1/doc.go
  • config/v1alpha2/doc.go
  • machine/v1/doc.go
  • operator/v1alpha1/doc.go
  • samples/v1/doc.go
  • apiserver/v1/doc.go
  • kubecontrolplane/v1/doc.go
  • apiextensions/v1alpha1/doc.go
  • console/v1/doc.go
  • security/v1/doc.go
  • template/v1/doc.go
  • config/v1alpha1/doc.go
  • insights/v1/doc.go
  • network/v1/doc.go
  • helm/v1beta1/doc.go
  • legacyconfig/v1/doc.go
  • securityinternal/v1/doc.go
  • insights/v1alpha2/doc.go
  • operatorcontrolplane/v1alpha1/doc.go
  • monitoring/v1/doc.go
  • apps/v1/doc.go
  • insights/v1alpha1/doc.go
  • route/v1/doc.go
  • user/v1/doc.go
  • machineconfiguration/v1/doc.go
🚧 Files skipped from review as they are similar to previous changes (19)
  • sharedresource/v1alpha1/doc.go
  • networkoperator/v1/doc.go
  • authorization/v1/doc.go
  • tools/codegen/cmd/modelname.go
  • image/v1/doc.go
  • servicecertsigner/v1alpha1/doc.go
  • platform/v1alpha1/doc.go
  • imageregistry/v1/doc.go
  • tools/codegen/cmd/root.go
  • project/v1/doc.go
  • example/v1alpha1/doc.go
  • tools/codegen/pkg/generation/types.go
  • go.mod
  • machine/v1beta1/doc.go
  • machineconfiguration/v1alpha1/doc.go
  • tools/codegen/pkg/modelname/modelname.go
  • etcd/v1/doc.go
  • oauth/v1/doc.go
  • tools/codegen/pkg/modelname/generator.go

📝 Walkthrough

Walkthrough

This PR adds +k8s:openapi-model-package annotations to many API package doc.go files, updates go.mod dependency versions, and introduces a new tools/codegen "modelname" generator with CLI command, generator implementation, and configuration types; the generator is wired into the default generator pipeline.

🚥 Pre-merge checks | ✅ 14 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 66.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (14 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly describes the main change: implementing the OpenAPIModelNamer interface, which is the core objective of this PR.
Description check ✅ Passed The description is related to the changeset—it explains the context (consequence of kubernetes/kubernetes#131755) and the impact on openapi/openapi.json naming schemas, though the body contains 'TBD'.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed PR contains no Ginkgo test files or test definitions. Changes are limited to doc.go package annotations, codegen source files, and go.mod; check is not applicable.
Test Structure And Quality ✅ Passed PR contains no Ginkgo test files. All 50 modified files are API docs, go.mod, or implementation files. The custom check is inapplicable.
Microshift Test Compatibility ✅ Passed No new Ginkgo e2e tests added in this PR. Changes are limited to doc.go annotations, dependency updates, and code generation tools, making the MicroShift compatibility check not applicable.
Single Node Openshift (Sno) Test Compatibility ✅ Passed PR contains no Ginkgo e2e tests. Changes are API definition annotations, dependency updates, and code generation tooling only.
Topology-Aware Scheduling Compatibility ✅ Passed PR contains no deployment manifests, operator code, or controllers—only code generation annotations, dependency updates, and a code generator tool. Topology-aware scheduling check is not applicable.
Ote Binary Stdout Contract ✅ Passed PR modifies API doc.go files and adds codegen tools, not OTE test binaries. OTE stdout contract check does not apply to non-test code.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed PR adds no Ginkgo e2e tests; changes are code generation annotations, tooling implementation, and dependency updates only.
No-Weak-Crypto ✅ Passed No weak crypto patterns (MD5, SHA1, DES, RC4, 3DES, Blowfish, ECB) or custom crypto implementations detected. PR adds OpenAPI code generation tooling without cryptographic operations.
Container-Privileges ✅ Passed PR contains only Go code changes (doc.go annotations, dependencies, code generators) with zero Kubernetes/container manifests, Dockerfiles, or security configurations modified.
No-Sensitive-Data-In-Logs ✅ Passed Logging statements only expose public metadata (package paths, API names) and generic errors; no passwords, tokens, keys, PII, or sensitive data found.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 golangci-lint (2.12.2)

Error: build linters: unable to load custom analyzer "kubeapilinter": tools/_output/bin/kube-api-linter.so, plugin: not implemented
The command is terminated due to an error: build linters: unable to load custom analyzer "kubeapilinter": tools/_output/bin/kube-api-linter.so, plugin: not implemented


Comment @coderabbitai help to get the list of available commands and usage tips.

@openshift-ci openshift-ci Bot added the size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. label May 25, 2026
@openshift-ci openshift-ci Bot requested review from abhat and bparees May 25, 2026 18:45
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@platform/v1alpha1/doc.go`:
- Line 4: Remove the conflicting code-gen directive or reconcile the package
comment: either delete the
"+k8s:openapi-model-package=com.github.openshift.api.platform.v1alpha1"
directive from the deprecated platform/v1alpha1 doc.go so the file matches the
existing "kept here for historical reference only" comment, or if you intend
this API to participate in code generation, update the deprecation text in
doc.go to remove/adjust language that says it "will not be used to generate
code" so it accurately reflects that code-gen is enabled.

In `@tools/codegen/pkg/modelname/modelname.go`:
- Line 17: The generateModelNames function currently ignores the verify bool;
modify generateModelNames(globalParser *parser.Parser, universe types.Universe,
packagePath, outputFileName, headerFilePath string, verify bool) to first
generate the model-name output into a memory buffer/string (using the existing
generation logic that uses globalParser/universe/packagePath/headerFilePath),
and then: if verify is true, read the existing outputFileName from disk and
compare it to the generated buffer and return a non-nil error when they differ
(so CI/--verify fails) without writing any files; if verify is false, proceed to
write headerFilePath/outputFileName as before. Ensure the compare treats missing
file as a mismatch and include clear error messages.
- Around line 39-43: The helper myTargets should not call klog.Fatalf; instead
propagate the error: change myTargets from func(context *gengenerator.Context)
[]gengenerator.Target to func(context *gengenerator.Context)
([]gengenerator.Target, error), remove klog.Fatalf("Failed loading boilerplate:
%v", err) and return nil, fmt.Errorf("loading boilerplate: %w", err) (or the
preferred error type), and update any callers to handle the returned error and
aggregate/report it through the generator's normal error path; keep the
gengo.GoBoilerplate invocation and error check but return the error instead of
exiting.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 2ecb0b5a-773b-457b-9d2b-0f401b72230c

📥 Commits

Reviewing files that changed from the base of the PR and between 09730f8 and cfd52d6.

⛔ Files ignored due to path filters (245)
  • apiextensions/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • apiserver/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • apps/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • authorization/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • build/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • cloudnetwork/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • config/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • config/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • config/v1alpha2/zz_generated.model_name.go is excluded by !**/zz_generated*
  • console/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • etcd/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • etcd/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • example/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • example/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • go.sum is excluded by !**/*.sum
  • helm/v1beta1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • image/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • imageregistry/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • insights/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • insights/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • insights/v1alpha2/zz_generated.model_name.go is excluded by !**/zz_generated*
  • kubecontrolplane/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • legacyconfig/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • machine/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • machine/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • machine/v1beta1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • machineconfiguration/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • machineconfiguration/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • monitoring/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • network/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • network/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • networkoperator/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • oauth/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • openapi/generated_openapi/zz_generated.openapi.go is excluded by !openapi/**, !**/zz_generated*
  • openshiftcontrolplane/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • operator/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • operator/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • operatorcontrolplane/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • operatoringress/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • osin/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • project/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • quota/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • route/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • samples/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • security/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • securityinternal/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • servicecertsigner/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • sharedresource/v1alpha1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • template/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • user/v1/zz_generated.model_name.go is excluded by !**/zz_generated*
  • vendor/github.com/emicklei/go-restful/v3/.travis.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/CHANGES.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/compress.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/curly.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/custom_verb.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/entity_accessors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/json.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/jsoniter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/jsr311.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/route.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/.codecov.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/.golangci.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/.mockery.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/SECURITY.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/cmdutils/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/cmdutils/cmd_utils.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/cmdutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/cmdutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/convert.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/convert_types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/format.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/sizeof.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/type_constraints.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/convert.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/convert_types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/file.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/fileutils/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/fileutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/fileutils/file.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/fileutils/path.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/fileutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/go.work is excluded by !**/*.work, !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/go.work.sum is excluded by !**/*.sum, !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/initialism_index.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/json.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonname/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonname/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonname/name_provider.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonname_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/ifaces/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/ifaces/ifaces.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/ifaces/registry_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/registry.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/adapter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/lexer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/ordered_map.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/pool.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/register.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/writer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/concat.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/json.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/ordered_map.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/errors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/json.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/loading.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/options.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/yaml.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/BENCHMARK.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/initialism_index.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/name_lexem.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/name_mangler.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/options.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/pools.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/split.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/string_bytes.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/util.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/name_lexem.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/net.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/netutils/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/netutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/netutils/net.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/netutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/split.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/stringutils/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/stringutils/collection_formats.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/stringutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/stringutils/strings.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/stringutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/typeutils/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/typeutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/typeutils/types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/typeutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/util.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yaml.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils/errors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils/ordered_map.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils/yaml.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/josharian/intern/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/josharian/intern/intern.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/josharian/intern/license.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/buffer/pool.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/jlexer/bytestostr.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/jlexer/bytestostr_nounsafe.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/jlexer/error.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/jlexer/lexer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/jwriter/writer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/spf13/pflag/flag.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/mod/semver/semver.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/client_priority_go126.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/client_priority_go127.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/frame.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/http2.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/server.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/transport.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/writesched_priority_rfc7540.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/writesched_priority_rfc9218.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/internal/httpsfv/httpsfv.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sync/errgroup/errgroup.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/secure/bidirule/bidirule.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables17.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/forminfo.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables10.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables11.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables12.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables15.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables17.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables9.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/ast/inspector/cursor.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/ast/inspector/inspector.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/ast/inspector/iter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/packages/packages.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/packages/visit.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/types/objectpath/objectpath.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/types/typeutil/callee.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/types/typeutil/map.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/aliases/aliases.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/aliases/aliases_go122.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/event/core/event.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/event/core/export.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/event/keys/keys.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/event/label/label.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/gcimporter/bimport.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/gcimporter/iexport.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/gcimporter/iimport.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/gcimporter/ureader_yes.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/stdlib/deps.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/stdlib/import.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/stdlib/manifest.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/stdlib/stdlib.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typeparams/free.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typeparams/normalize.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/classify_call.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/element.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/fx.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/isnamed.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/qualifier.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/varkind.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/varkind_go124.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/zerovalue.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/versions/features.go is excluded by !**/vendor/**, !vendor/**
  • vendor/gopkg.in/yaml.v3/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/gopkg.in/yaml.v3/NOTICE is excluded by !**/vendor/**, !vendor/**
  • vendor/gopkg.in/yaml.v3/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/gopkg.in/yaml.v3/apic.go is excluded by !**/vendor/**, !vendor/**
  • vendor/gopkg.in/yaml.v3/decode.go is excluded by !**/vendor/**, !vendor/**
  • vendor/gopkg.in/yaml.v3/emitterc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/gopkg.in/yaml.v3/encode.go is excluded by !**/vendor/**, !vendor/**
  • vendor/gopkg.in/yaml.v3/parserc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/gopkg.in/yaml.v3/readerc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/gopkg.in/yaml.v3/resolve.go is excluded by !**/vendor/**, !vendor/**
  • vendor/gopkg.in/yaml.v3/scannerc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/gopkg.in/yaml.v3/sorter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/gopkg.in/yaml.v3/writerc.go is excluded by !**/vendor/**, !vendor/**
📒 Files selected for processing (55)
  • apiextensions/v1alpha1/doc.go
  • apiserver/v1/doc.go
  • apps/v1/doc.go
  • authorization/v1/doc.go
  • build/v1/doc.go
  • cloudnetwork/v1/doc.go
  • config/v1/doc.go
  • config/v1alpha1/doc.go
  • config/v1alpha2/doc.go
  • console/v1/doc.go
  • etcd/v1/doc.go
  • etcd/v1alpha1/doc.go
  • example/v1/doc.go
  • example/v1alpha1/doc.go
  • go.mod
  • helm/v1beta1/doc.go
  • image/v1/doc.go
  • imageregistry/v1/doc.go
  • insights/v1/doc.go
  • insights/v1alpha1/doc.go
  • insights/v1alpha2/doc.go
  • kubecontrolplane/v1/doc.go
  • legacyconfig/v1/doc.go
  • machine/v1/doc.go
  • machine/v1alpha1/doc.go
  • machine/v1beta1/doc.go
  • machineconfiguration/v1/doc.go
  • machineconfiguration/v1alpha1/doc.go
  • monitoring/v1/doc.go
  • network/v1/doc.go
  • network/v1alpha1/doc.go
  • networkoperator/v1/doc.go
  • oauth/v1/doc.go
  • openshiftcontrolplane/v1/doc.go
  • operator/v1/doc.go
  • operator/v1alpha1/doc.go
  • operatorcontrolplane/v1alpha1/doc.go
  • operatoringress/v1/doc.go
  • osin/v1/doc.go
  • platform/v1alpha1/doc.go
  • project/v1/doc.go
  • quota/v1/doc.go
  • route/v1/doc.go
  • samples/v1/doc.go
  • security/v1/doc.go
  • securityinternal/v1/doc.go
  • servicecertsigner/v1alpha1/doc.go
  • sharedresource/v1alpha1/doc.go
  • template/v1/doc.go
  • tools/codegen/cmd/modelname.go
  • tools/codegen/cmd/root.go
  • tools/codegen/pkg/generation/types.go
  • tools/codegen/pkg/modelname/generator.go
  • tools/codegen/pkg/modelname/modelname.go
  • user/v1/doc.go

Comment thread platform/v1alpha1/doc.go
// +k8s:deepcopy-gen=package,register
// +k8s:defaulter-gen=TypeMeta
// +k8s:openapi-gen=true
// +k8s:openapi-model-package=com.github.openshift.api.platform.v1alpha1
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Inconsistency: Adding code-generation directive to deprecated API.

The existing comment at lines 10-16 explicitly states that this API "will not be used to generate code by code-gen" and is "kept here for historical reference only." Adding the +k8s:openapi-model-package directive contradicts this statement.

Either remove this directive from the deprecated platform/v1alpha1 package, or update the comment if the API should now participate in code generation.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@platform/v1alpha1/doc.go` at line 4, Remove the conflicting code-gen
directive or reconcile the package comment: either delete the
"+k8s:openapi-model-package=com.github.openshift.api.platform.v1alpha1"
directive from the deprecated platform/v1alpha1 doc.go so the file matches the
existing "kept here for historical reference only" comment, or if you intend
this API to participate in code generation, update the deprecation text in
doc.go to remove/adjust language that says it "will not be used to generate
code" so it accurately reflects that code-gen is enabled.

)

// generateModelNames generates the model name functions for the given API package path.
func generateModelNames(globalParser *parser.Parser, universe types.Universe, packagePath, outputFileName, headerFilePath string, verify bool) error {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

verify mode is currently ignored in model-name generation.

Line 17 accepts verify, but the function never uses it. That makes verify and generate execution effectively identical for this generator, which can break expected --verify behavior.

Also applies to: 24-35, 48-57

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tools/codegen/pkg/modelname/modelname.go` at line 17, The generateModelNames
function currently ignores the verify bool; modify
generateModelNames(globalParser *parser.Parser, universe types.Universe,
packagePath, outputFileName, headerFilePath string, verify bool) to first
generate the model-name output into a memory buffer/string (using the existing
generation logic that uses globalParser/universe/packagePath/headerFilePath),
and then: if verify is true, read the existing outputFileName from disk and
compare it to the generated buffer and return a non-nil error when they differ
(so CI/--verify fails) without writing any files; if verify is false, proceed to
write headerFilePath/outputFileName as before. Ensure the compare treats missing
file as a mismatch and include clear error messages.

Comment on lines +39 to +43
myTargets := func(context *gengenerator.Context) []gengenerator.Target {
boilerplate, err := gengo.GoBoilerplate(arguments.GoHeaderFile, gengo.StdBuildTag, gengo.StdGeneratedBy)
if err != nil {
klog.Fatalf("Failed loading boilerplate: %v", err)
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Avoid terminating the whole process from this helper.

Line 42 uses klog.Fatalf, which exits immediately and bypasses the normal per-generator error aggregation path. Return an error instead so failures are reported consistently.

Proposed fix
-	myTargets := func(context *gengenerator.Context) []gengenerator.Target {
-		boilerplate, err := gengo.GoBoilerplate(arguments.GoHeaderFile, gengo.StdBuildTag, gengo.StdGeneratedBy)
-		if err != nil {
-			klog.Fatalf("Failed loading boilerplate: %v", err)
-		}
-
-		return generators.GetModelNameTargets(context, arguments, boilerplate)
-	}
+	boilerplate, err := gengo.GoBoilerplate(arguments.GoHeaderFile, gengo.StdBuildTag, gengo.StdGeneratedBy)
+	if err != nil {
+		return fmt.Errorf("failed loading boilerplate: %w", err)
+	}
+	myTargets := func(context *gengenerator.Context) []gengenerator.Target {
+		return generators.GetModelNameTargets(context, arguments, boilerplate)
+	}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tools/codegen/pkg/modelname/modelname.go` around lines 39 - 43, The helper
myTargets should not call klog.Fatalf; instead propagate the error: change
myTargets from func(context *gengenerator.Context) []gengenerator.Target to
func(context *gengenerator.Context) ([]gengenerator.Target, error), remove
klog.Fatalf("Failed loading boilerplate: %v", err) and return nil,
fmt.Errorf("loading boilerplate: %w", err) (or the preferred error type), and
update any callers to handle the returned error and aggregate/report it through
the generator's normal error path; keep the gengo.GoBoilerplate invocation and
error check but return the error instead of exiting.

@ingvagabund
Copy link
Copy Markdown
Member Author

ingvagabund commented May 26, 2026

ci/prow/verify-client-go fails because of:

go: updates to go.mod needed; to update it:
	go mod tidy

Checking the job definition under openshift/release the script replaces o/api dep in o/client-go.

Is the ci job expected to be overridden in case the API definition changes?

@ingvagabund ingvagabund force-pushed the implement-OpenAPIModelNamer-interface branch from cfd52d6 to 7d170fd Compare May 26, 2026 12:44
@ingvagabund
Copy link
Copy Markdown
Member Author

/retest-required

@ingvagabund ingvagabund force-pushed the implement-OpenAPIModelNamer-interface branch from 7d170fd to 2cac22d Compare May 27, 2026 13:44
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 27, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign joelspeed for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@ingvagabund ingvagabund changed the title wip: feat: implement OpenAPIModelNamer interface CNTRLPLANE-2449: wip: feat: implement OpenAPIModelNamer interface May 27, 2026
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label May 27, 2026
@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented May 27, 2026

@ingvagabund: This pull request references CNTRLPLANE-2449 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

TBD

Consequence of kubernetes/kubernetes#131755

Important note: the current openapi/openapi.json is generated with the openshift type names in com.github.openshift.api.<group>.<version>.<TypeName> order. Implementing the new interface results in the openshift types names generated in <TypeName>.<version>.<group>.api.openshift.github.com. Which completely reshuffles the keys in openapi/openapi.json. Which makes it hard to follow the changes. The kubernetes types already follow this new naming schema. E.g. APIGroup.v1.meta.apis.pkg.apimachinery.k8s.io.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci openshift-ci Bot added needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. and removed do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. labels May 27, 2026
@ingvagabund ingvagabund force-pushed the implement-OpenAPIModelNamer-interface branch from 2cac22d to 14f7da2 Compare May 27, 2026 16:39
@openshift-ci openshift-ci Bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label May 27, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 27, 2026

@ingvagabund: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/verify-client-go 14f7da2 link true /test verify-client-go

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@openshift-ci openshift-ci Bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label May 27, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 27, 2026

PR needs rebase.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants