Skip to content

Merge https://github.com/kubernetes-sigs/cluster-api-provider-vsphere:v1.16.0 (d7faa72) into master#101

Open
cloud-team-rebase-bot[bot] wants to merge 337 commits intoopenshift:masterfrom
openshift-cloud-team:rebase-bot-master
Open

Merge https://github.com/kubernetes-sigs/cluster-api-provider-vsphere:v1.16.0 (d7faa72) into master#101
cloud-team-rebase-bot[bot] wants to merge 337 commits intoopenshift:masterfrom
openshift-cloud-team:rebase-bot-master

Conversation

@cloud-team-rebase-bot
Copy link
Copy Markdown

@cloud-team-rebase-bot cloud-team-rebase-bot Bot commented Apr 30, 2026

Summary by CodeRabbit

  • New Features

    • Added v1beta1 and v1beta2 API versions for infrastructure resources.
    • Expanded Go version support to 1.25.
  • Deprecations

    • Removed v1alpha3 API version and related conversions; migrate to newer API versions.
  • Chores

    • Updated CI/CD workflows and GitHub Actions to latest versions.
    • Removed testing for v1.13 branch; added v1.15 support.
    • Updated build dependencies and linting configurations.
    • Updated release support documentation.

sbueringer and others added 30 commits January 20, 2026 15:04
Signed-off-by: Stefan Büringer buringerst@vmware.com
…-v1beta2-promote-conditions

✨ Promote v1beta2 conditions on VSphereVM, VSphereMachine, VSphereCluster
Signed-off-by: Stefan Büringer buringerst@vmware.com
Signed-off-by: Stefan Büringer buringerst@vmware.com
Signed-off-by: Stefan Büringer buringerst@vmware.com
Signed-off-by: Stefan Büringer buringerst@vmware.com
Signed-off-by: Stefan Büringer buringerst@vmware.com
Signed-off-by: Stefan Büringer buringerst@vmware.com
Signed-off-by: Stefan Büringer buringerst@vmware.com
Signed-off-by: Stefan Büringer buringerst@vmware.com
Signed-off-by: Stefan Büringer buringerst@vmware.com
…-v1beta2-contract

✨ Implement v1beta2 contract (supervisor)
Signed-off-by: Stefan Büringer buringerst@vmware.com
Signed-off-by: Stefan Büringer buringerst@vmware.com
…-v1beta2-testing

✨ Migrate E2E tests to v1beta2 (supervisor)
Signed-off-by: Stefan Büringer buringerst@vmware.com
Signed-off-by: Stefan Büringer buringerst@vmware.com
Signed-off-by: Stefan Büringer buringerst@vmware.com
Signed-off-by: Stefan Büringer buringerst@vmware.com
Signed-off-by: Stefan Büringer buringerst@vmware.com
(supervisor)

Signed-off-by: Stefan Büringer buringerst@vmware.com
…-v1beta2-kal

✨ Fix KAL findings in supervisor v1beta2 API & add metadata to templates
Signed-off-by: Stefan Büringer buringerst@vmware.com
Signed-off-by: Stefan Büringer buringerst@vmware.com
…ng-v1beta1-status-in-controllers

🌱 Stop using v1beta1 status in controllers
Signed-off-by: Stefan Büringer buringerst@vmware.com
Signed-off-by: Stefan Büringer buringerst@vmware.com
damdo and others added 22 commits April 30, 2026 12:05
# Conflicts:
#	openshift/infrastructure-components.yaml
…iner image to be consistent with ART for 4.22
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

# Conflicts:
#	openshift/tools/vendor/github.com/adrg/xdg/README.md
#	openshift/tools/vendor/github.com/adrg/xdg/base_dirs.go
#	openshift/tools/vendor/github.com/adrg/xdg/doc.go
#	openshift/tools/vendor/github.com/adrg/xdg/internal/pathutil/pathutil.go
#	openshift/tools/vendor/github.com/adrg/xdg/paths_darwin.go
#	openshift/tools/vendor/github.com/adrg/xdg/paths_plan9.go
#	openshift/tools/vendor/github.com/adrg/xdg/paths_unix.go
#	openshift/tools/vendor/github.com/adrg/xdg/paths_windows.go
#	openshift/tools/vendor/github.com/adrg/xdg/xdg.go
#	openshift/tools/vendor/github.com/cespare/xxhash/v2/README.md
#	openshift/tools/vendor/github.com/cespare/xxhash/v2/xxhash.go
#	openshift/tools/vendor/github.com/cespare/xxhash/v2/xxhash_asm.go
#	openshift/tools/vendor/github.com/cespare/xxhash/v2/xxhash_other.go
#	openshift/tools/vendor/github.com/cespare/xxhash/v2/xxhash_safe.go
#	openshift/tools/vendor/github.com/cespare/xxhash/v2/xxhash_unsafe.go
#	openshift/tools/vendor/github.com/cloudflare/circl/dh/x25519/curve_amd64.s
#	openshift/tools/vendor/github.com/cloudflare/circl/dh/x448/curve_amd64.s
#	openshift/tools/vendor/github.com/cloudflare/circl/ecc/goldilocks/curve.go
#	openshift/tools/vendor/github.com/cloudflare/circl/internal/conv/conv.go
#	openshift/tools/vendor/github.com/cloudflare/circl/math/fp25519/fp_amd64.s
#	openshift/tools/vendor/github.com/cloudflare/circl/math/fp448/fp_amd64.s
#	openshift/tools/vendor/github.com/cloudflare/circl/sign/ed25519/point.go
#	openshift/tools/vendor/github.com/cloudflare/circl/sign/ed448/ed448.go
#	openshift/tools/vendor/github.com/cloudflare/circl/sign/sign.go
#	openshift/tools/vendor/github.com/containerd/stargz-snapshotter/estargz/LICENSE
#	openshift/tools/vendor/github.com/fsnotify/fsnotify/.cirrus.yml
#	openshift/tools/vendor/github.com/fsnotify/fsnotify/.editorconfig
#	openshift/tools/vendor/github.com/fsnotify/fsnotify/.gitignore
#	openshift/tools/vendor/github.com/fsnotify/fsnotify/CHANGELOG.md
#	openshift/tools/vendor/github.com/fsnotify/fsnotify/CONTRIBUTING.md
#	openshift/tools/vendor/github.com/fsnotify/fsnotify/backend_fen.go
#	openshift/tools/vendor/github.com/fsnotify/fsnotify/backend_inotify.go
#	openshift/tools/vendor/github.com/fsnotify/fsnotify/backend_kqueue.go
#	openshift/tools/vendor/github.com/fsnotify/fsnotify/backend_other.go
#	openshift/tools/vendor/github.com/fsnotify/fsnotify/backend_windows.go
#	openshift/tools/vendor/github.com/fsnotify/fsnotify/fsnotify.go
#	openshift/tools/vendor/github.com/fsnotify/fsnotify/system_bsd.go
#	openshift/tools/vendor/github.com/fsnotify/fsnotify/system_darwin.go
#	openshift/tools/vendor/github.com/fxamacker/cbor/v2/README.md
#	openshift/tools/vendor/github.com/fxamacker/cbor/v2/bytestring.go
#	openshift/tools/vendor/github.com/fxamacker/cbor/v2/cache.go
#	openshift/tools/vendor/github.com/fxamacker/cbor/v2/common.go
#	openshift/tools/vendor/github.com/fxamacker/cbor/v2/decode.go
#	openshift/tools/vendor/github.com/fxamacker/cbor/v2/doc.go
#	openshift/tools/vendor/github.com/fxamacker/cbor/v2/encode.go
#	openshift/tools/vendor/github.com/fxamacker/cbor/v2/encode_map.go
#	openshift/tools/vendor/github.com/fxamacker/cbor/v2/simplevalue.go
#	openshift/tools/vendor/github.com/fxamacker/cbor/v2/stream.go
#	openshift/tools/vendor/github.com/fxamacker/cbor/v2/structfields.go
#	openshift/tools/vendor/github.com/fxamacker/cbor/v2/tag.go
#	openshift/tools/vendor/github.com/go-viper/mapstructure/v2/LICENSE
#	openshift/tools/vendor/github.com/gobuffalo/flect/humanize.go
#	openshift/tools/vendor/github.com/golang/groupcache/lru/lru.go
#	openshift/tools/vendor/github.com/google/btree/LICENSE
#	openshift/tools/vendor/github.com/google/go-cmp/cmp/internal/function/func.go
#	openshift/tools/vendor/github.com/google/go-cmp/cmp/options.go
#	openshift/tools/vendor/github.com/google/go-containerregistry/LICENSE
#	openshift/tools/vendor/github.com/google/go-containerregistry/pkg/v1/doc.go
#	openshift/tools/vendor/github.com/klauspost/compress/internal/le/unsafe_disabled.go
#	openshift/tools/vendor/github.com/klauspost/compress/internal/le/unsafe_enabled.go
#	openshift/tools/vendor/github.com/mitchellh/go-homedir/LICENSE
#	openshift/tools/vendor/github.com/mitchellh/mapstructure/CHANGELOG.md
#	openshift/tools/vendor/github.com/mitchellh/mapstructure/LICENSE
#	openshift/tools/vendor/github.com/mitchellh/mapstructure/mapstructure.go
#	openshift/tools/vendor/github.com/openshift/api/LICENSE
#	openshift/tools/vendor/github.com/openshift/cluster-capi-operator/manifests-gen/providercustomizations.go
#	openshift/tools/vendor/github.com/pelletier/go-toml/v2/.goreleaser.yaml
#	openshift/tools/vendor/github.com/pelletier/go-toml/v2/README.md
#	openshift/tools/vendor/github.com/pelletier/go-toml/v2/marshaler.go
#	openshift/tools/vendor/github.com/pelletier/go-toml/v2/unmarshaler.go
#	openshift/tools/vendor/github.com/prometheus/client_golang/NOTICE
#	openshift/tools/vendor/github.com/prometheus/client_golang/prometheus/collectors/go_collector_latest.go
#	openshift/tools/vendor/github.com/prometheus/client_golang/prometheus/desc.go
#	openshift/tools/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go
#	openshift/tools/vendor/github.com/prometheus/client_golang/prometheus/go_collector_latest.go
#	openshift/tools/vendor/github.com/prometheus/client_golang/prometheus/histogram.go
#	openshift/tools/vendor/github.com/prometheus/client_golang/prometheus/internal/difflib.go
#	openshift/tools/vendor/github.com/prometheus/client_golang/prometheus/internal/go_collector_options.go
#	openshift/tools/vendor/github.com/prometheus/client_golang/prometheus/internal/go_runtime_metrics.go
#	openshift/tools/vendor/github.com/prometheus/client_golang/prometheus/metric.go
#	openshift/tools/vendor/github.com/prometheus/client_golang/prometheus/process_collector.go
#	openshift/tools/vendor/github.com/prometheus/client_golang/prometheus/process_collector_js.go
#	openshift/tools/vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go
#	openshift/tools/vendor/github.com/prometheus/client_golang/prometheus/process_collector_wasip1.go
#	openshift/tools/vendor/github.com/prometheus/client_golang/prometheus/process_collector_windows.go
#	openshift/tools/vendor/github.com/prometheus/client_golang/prometheus/promhttp/delegator.go
#	openshift/tools/vendor/github.com/prometheus/client_golang/prometheus/promhttp/http.go
#	openshift/tools/vendor/github.com/prometheus/client_golang/prometheus/promhttp/internal/compression.go
#	openshift/tools/vendor/github.com/prometheus/client_golang/prometheus/registry.go
#	openshift/tools/vendor/github.com/prometheus/client_golang/prometheus/summary.go
#	openshift/tools/vendor/github.com/prometheus/client_golang/prometheus/vec.go
#	openshift/tools/vendor/github.com/prometheus/common/expfmt/decode.go
#	openshift/tools/vendor/github.com/prometheus/common/expfmt/encode.go
#	openshift/tools/vendor/github.com/prometheus/common/expfmt/expfmt.go
#	openshift/tools/vendor/github.com/prometheus/common/expfmt/openmetrics_create.go
#	openshift/tools/vendor/github.com/prometheus/common/expfmt/text_create.go
#	openshift/tools/vendor/github.com/prometheus/common/expfmt/text_parse.go
#	openshift/tools/vendor/github.com/prometheus/common/model/alert.go
#	openshift/tools/vendor/github.com/prometheus/common/model/labels.go
#	openshift/tools/vendor/github.com/prometheus/common/model/labelset.go
#	openshift/tools/vendor/github.com/prometheus/common/model/metric.go
#	openshift/tools/vendor/github.com/prometheus/common/model/signature.go
#	openshift/tools/vendor/github.com/prometheus/common/model/silence.go
#	openshift/tools/vendor/github.com/prometheus/common/model/value.go
#	openshift/tools/vendor/github.com/prometheus/common/model/value_float.go
#	openshift/tools/vendor/github.com/prometheus/common/model/value_histogram.go
#	openshift/tools/vendor/github.com/prometheus/procfs/.golangci.yml
#	openshift/tools/vendor/github.com/prometheus/procfs/MAINTAINERS.md
#	openshift/tools/vendor/github.com/prometheus/procfs/Makefile.common
#	openshift/tools/vendor/github.com/prometheus/procfs/README.md
#	openshift/tools/vendor/github.com/prometheus/procfs/arp.go
#	openshift/tools/vendor/github.com/prometheus/procfs/buddyinfo.go
#	openshift/tools/vendor/github.com/prometheus/procfs/cpuinfo.go
#	openshift/tools/vendor/github.com/prometheus/procfs/crypto.go
#	openshift/tools/vendor/github.com/prometheus/procfs/fs.go
#	openshift/tools/vendor/github.com/prometheus/procfs/fs_statfs_notype.go
#	openshift/tools/vendor/github.com/prometheus/procfs/fscache.go
#	openshift/tools/vendor/github.com/prometheus/procfs/internal/fs/fs.go
#	openshift/tools/vendor/github.com/prometheus/procfs/internal/util/parse.go
#	openshift/tools/vendor/github.com/prometheus/procfs/internal/util/sysreadfile.go
#	openshift/tools/vendor/github.com/prometheus/procfs/ipvs.go
#	openshift/tools/vendor/github.com/prometheus/procfs/loadavg.go
#	openshift/tools/vendor/github.com/prometheus/procfs/mdstat.go
#	openshift/tools/vendor/github.com/prometheus/procfs/meminfo.go
#	openshift/tools/vendor/github.com/prometheus/procfs/mountinfo.go
#	openshift/tools/vendor/github.com/prometheus/procfs/mountstats.go
#	openshift/tools/vendor/github.com/prometheus/procfs/net_conntrackstat.go
#	openshift/tools/vendor/github.com/prometheus/procfs/net_ip_socket.go
#	openshift/tools/vendor/github.com/prometheus/procfs/net_protocols.go
#	openshift/tools/vendor/github.com/prometheus/procfs/net_sockstat.go
#	openshift/tools/vendor/github.com/prometheus/procfs/net_softnet.go
#	openshift/tools/vendor/github.com/prometheus/procfs/net_tcp.go
#	openshift/tools/vendor/github.com/prometheus/procfs/net_unix.go
#	openshift/tools/vendor/github.com/prometheus/procfs/net_wireless.go
#	openshift/tools/vendor/github.com/prometheus/procfs/proc.go
#	openshift/tools/vendor/github.com/prometheus/procfs/proc_cgroup.go
#	openshift/tools/vendor/github.com/prometheus/procfs/proc_io.go
#	openshift/tools/vendor/github.com/prometheus/procfs/proc_limits.go
#	openshift/tools/vendor/github.com/prometheus/procfs/proc_netstat.go
#	openshift/tools/vendor/github.com/prometheus/procfs/proc_ns.go
#	openshift/tools/vendor/github.com/prometheus/procfs/proc_psi.go
#	openshift/tools/vendor/github.com/prometheus/procfs/proc_smaps.go
#	openshift/tools/vendor/github.com/prometheus/procfs/proc_snmp.go
#	openshift/tools/vendor/github.com/prometheus/procfs/proc_snmp6.go
#	openshift/tools/vendor/github.com/prometheus/procfs/proc_stat.go
#	openshift/tools/vendor/github.com/prometheus/procfs/proc_status.go
#	openshift/tools/vendor/github.com/prometheus/procfs/proc_sys.go
#	openshift/tools/vendor/github.com/prometheus/procfs/softirqs.go
#	openshift/tools/vendor/github.com/prometheus/procfs/stat.go
#	openshift/tools/vendor/github.com/prometheus/procfs/swaps.go
#	openshift/tools/vendor/github.com/prometheus/procfs/thread.go
#	openshift/tools/vendor/github.com/prometheus/procfs/zoneinfo.go
#	openshift/tools/vendor/github.com/sagikazarmark/locafero/.envrc
#	openshift/tools/vendor/github.com/sagikazarmark/locafero/finder.go
#	openshift/tools/vendor/github.com/sagikazarmark/locafero/flake.lock
#	openshift/tools/vendor/github.com/sagikazarmark/locafero/flake.nix
#	openshift/tools/vendor/github.com/sagikazarmark/slog-shim/.editorconfig
#	openshift/tools/vendor/github.com/sirupsen/logrus/file_finder.go
#	openshift/tools/vendor/github.com/sirupsen/logrus/internal/encoding/decoder.go
#	openshift/tools/vendor/github.com/sirupsen/logrus/internal/encoding/encoder.go
#	openshift/tools/vendor/github.com/sirupsen/logrus/internal/encoding/error.go
#	openshift/tools/vendor/github.com/sirupsen/logrus/internal/encoding/hcl/codec.go
#	openshift/tools/vendor/github.com/sirupsen/logrus/internal/encoding/ini/codec.go
#	openshift/tools/vendor/github.com/sirupsen/logrus/internal/encoding/ini/map_utils.go
#	openshift/tools/vendor/github.com/sirupsen/logrus/internal/encoding/javaproperties/codec.go
#	openshift/tools/vendor/github.com/sirupsen/logrus/internal/encoding/javaproperties/map_utils.go
#	openshift/tools/vendor/github.com/spf13/afero/README.md
#	openshift/tools/vendor/github.com/spf13/afero/iofs.go
#	openshift/tools/vendor/github.com/spf13/afero/memmap.go
#	openshift/tools/vendor/github.com/spf13/cast/README.md
#	openshift/tools/vendor/github.com/spf13/cast/caste.go
#	openshift/tools/vendor/github.com/spf13/pflag/flag.go
#	openshift/tools/vendor/github.com/spf13/pflag/ip.go
#	openshift/tools/vendor/github.com/spf13/pflag/string_array.go
#	openshift/tools/vendor/github.com/spf13/viper/.envrc
#	openshift/tools/vendor/github.com/spf13/viper/.golangci.yaml
#	openshift/tools/vendor/github.com/spf13/viper/README.md
#	openshift/tools/vendor/github.com/spf13/viper/file.go
#	openshift/tools/vendor/github.com/spf13/viper/flake.lock
#	openshift/tools/vendor/github.com/spf13/viper/flake.nix
#	openshift/tools/vendor/github.com/spf13/viper/logger.go
#	openshift/tools/vendor/github.com/spf13/viper/util.go
#	openshift/tools/vendor/github.com/spf13/viper/viper.go
#	openshift/tools/vendor/go.opentelemetry.io/otel/LICENSE
#	openshift/tools/vendor/go.opentelemetry.io/otel/trace/LICENSE
#	openshift/tools/vendor/golang.org/x/crypto/LICENSE
#	openshift/tools/vendor/golang.org/x/crypto/sha3/doc.go
#	openshift/tools/vendor/golang.org/x/crypto/sha3/hashes.go
#	openshift/tools/vendor/golang.org/x/crypto/sha3/keccakf_amd64.s
#	openshift/tools/vendor/golang.org/x/crypto/sha3/sha3.go
#	openshift/tools/vendor/golang.org/x/crypto/sha3/shake.go
#	openshift/tools/vendor/golang.org/x/net/http2/config.go
#	openshift/tools/vendor/golang.org/x/net/internal/httpcommon/request.go
#	openshift/tools/vendor/golang.org/x/sync/errgroup/errgroup.go
#	openshift/tools/vendor/golang.org/x/sys/cpu/cpu.go
#	openshift/tools/vendor/golang.org/x/sys/cpu/cpu_arm64.go
#	openshift/tools/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go
#	openshift/tools/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go
#	openshift/tools/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go
#	openshift/tools/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go
#	openshift/tools/vendor/golang.org/x/sys/cpu/cpu_loong64.go
#	openshift/tools/vendor/golang.org/x/sys/cpu/cpu_riscv64.go
#	openshift/tools/vendor/golang.org/x/sys/cpu/cpu_x86.go
#	openshift/tools/vendor/golang.org/x/sys/cpu/cpu_x86.s
#	openshift/tools/vendor/golang.org/x/sys/cpu/parse.go
#	openshift/tools/vendor/gomodules.xyz/jsonpatch/v2/jsonpatch.go
#	openshift/tools/vendor/google.golang.org/protobuf/internal/impl/codec_message_opaque.go
#	openshift/tools/vendor/google.golang.org/protobuf/internal/impl/message_opaque.go
#	openshift/tools/vendor/google.golang.org/protobuf/internal/impl/presence.go
#	openshift/tools/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go
#	openshift/tools/vendor/k8s.io/api/admission/v1/doc.go
#	openshift/tools/vendor/k8s.io/api/admission/v1/generated.proto
#	openshift/tools/vendor/k8s.io/api/admission/v1/types.go
#	openshift/tools/vendor/k8s.io/api/admission/v1/zz_generated.prerelease-lifecycle.go
#	openshift/tools/vendor/k8s.io/api/admission/v1beta1/doc.go
#	openshift/tools/vendor/k8s.io/api/admission/v1beta1/generated.proto
#	openshift/tools/vendor/k8s.io/api/networking/v1alpha1/generated.proto
#	openshift/tools/vendor/k8s.io/api/networking/v1alpha1/types.go
#	openshift/tools/vendor/k8s.io/api/networking/v1alpha1/types_swagger_doc_generated.go
#	openshift/tools/vendor/k8s.io/api/resource/v1/devicetaint.go
#	openshift/tools/vendor/k8s.io/api/resource/v1alpha2/devicetaint.go
#	openshift/tools/vendor/k8s.io/api/resource/v1alpha3/generated.pb.go
#	openshift/tools/vendor/k8s.io/api/resource/v1alpha3/generated.proto
#	openshift/tools/vendor/k8s.io/api/resource/v1alpha3/types.go
#	openshift/tools/vendor/k8s.io/api/resource/v1alpha3/types_swagger_doc_generated.go
#	openshift/tools/vendor/k8s.io/api/resource/v1alpha3/zz_generated.prerelease-lifecycle.go
#	openshift/tools/vendor/k8s.io/api/resource/v1beta1/generated.proto
#	openshift/tools/vendor/k8s.io/api/resource/v1beta1/types.go
#	openshift/tools/vendor/k8s.io/api/resource/v1beta1/types_swagger_doc_generated.go
#	openshift/tools/vendor/k8s.io/api/resource/v1beta1/zz_generated.deepcopy.go
#	openshift/tools/vendor/k8s.io/api/resource/v1beta2/generated.pb.go
#	openshift/tools/vendor/k8s.io/api/resource/v1beta2/generated.proto
#	openshift/tools/vendor/k8s.io/api/resource/v1beta2/types.go
#	openshift/tools/vendor/k8s.io/api/resource/v1beta2/types_swagger_doc_generated.go
#	openshift/tools/vendor/k8s.io/api/resource/v1beta2/zz_generated.deepcopy.go
#	openshift/tools/vendor/k8s.io/api/storage/v1/zz_generated.prerelease-lifecycle.go
#	openshift/tools/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/doc.go
#	openshift/tools/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto
#	openshift/tools/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/marshal.go
#	openshift/tools/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types_jsonschema.go
#	openshift/tools/vendor/k8s.io/apimachinery/pkg/api/operation/operation.go
#	openshift/tools/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/cbor.go
#	openshift/tools/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/direct/direct.go
#	openshift/tools/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/internal/modes/decode.go
#	openshift/tools/vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/internal/modes/encode.go
#	openshift/tools/vendor/k8s.io/apimachinery/pkg/util/diff/diff.go
#	openshift/tools/vendor/k8s.io/apimachinery/pkg/util/validation/field/error_matcher.go
#	openshift/tools/vendor/k8s.io/apimachinery/pkg/util/version/doc.go
#	openshift/tools/vendor/k8s.io/apimachinery/pkg/util/version/version.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/auditannotation.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/expressionwarning.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/matchcondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/matchresources.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/mutatingwebhook.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/mutatingwebhookconfiguration.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/namedrulewithoperations.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/paramkind.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/paramref.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/rule.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/rulewithoperations.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/servicereference.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/typechecking.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicybinding.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicybindingspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicyspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingadmissionpolicystatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingwebhook.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validatingwebhookconfiguration.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/validation.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/variable.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1/webhookclientconfig.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/auditannotation.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/expressionwarning.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/matchcondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/matchresources.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/namedrulewithoperations.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/paramkind.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/paramref.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/typechecking.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicybinding.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicybindingspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicyspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validatingadmissionpolicystatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/validation.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1alpha1/variable.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/auditannotation.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/expressionwarning.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/matchcondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/matchresources.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/mutatingwebhook.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/mutatingwebhookconfiguration.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/namedrulewithoperations.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/paramkind.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/paramref.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/servicereference.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/typechecking.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicybinding.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicybindingspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicyspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingadmissionpolicystatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingwebhook.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validatingwebhookconfiguration.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/validation.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/variable.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/webhookclientconfig.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1/serverstorageversion.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1/storageversion.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1/storageversioncondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1/storageversionstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/controllerrevision.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonset.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonsetcondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonsetspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonsetstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/daemonsetupdatestrategy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deployment.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deploymentcondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deploymentspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deploymentstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/deploymentstrategy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/replicaset.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/replicasetcondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/replicasetspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/replicasetstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/rollingupdatedaemonset.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/rollingupdatedeployment.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/rollingupdatestatefulsetstrategy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulset.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetcondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetordinals.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetpersistentvolumeclaimretentionpolicy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1/statefulsetupdatestrategy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/controllerrevision.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deployment.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deploymentcondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deploymentspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deploymentstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/deploymentstrategy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/rollbackconfig.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/rollingupdatedeployment.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/rollingupdatestatefulsetstrategy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulset.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetcondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetordinals.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetpersistentvolumeclaimretentionpolicy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta1/statefulsetupdatestrategy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/controllerrevision.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonset.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonsetcondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonsetspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonsetstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/daemonsetupdatestrategy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deployment.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deploymentcondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deploymentspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deploymentstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/deploymentstrategy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/replicaset.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/replicasetcondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/replicasetspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/replicasetstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/rollingupdatedaemonset.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/rollingupdatedeployment.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/rollingupdatestatefulsetstrategy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/scale.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulset.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetcondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetordinals.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetpersistentvolumeclaimretentionpolicy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/apps/v1beta2/statefulsetupdatestrategy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/crossversionobjectreference.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/horizontalpodautoscaler.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/horizontalpodautoscalerspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/horizontalpodautoscalerstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/scale.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/scalespec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v1/scalestatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/containerresourcemetricsource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/containerresourcemetricstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/crossversionobjectreference.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/externalmetricsource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/externalmetricstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscaler.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscalerbehavior.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscalercondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscalerspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/horizontalpodautoscalerstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/hpascalingpolicy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/hpascalingrules.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metricidentifier.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metricspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metricstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metrictarget.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/metricvaluestatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/objectmetricsource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/objectmetricstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/podsmetricsource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/podsmetricstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/resourcemetricsource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2/resourcemetricstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/containerresourcemetricsource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/containerresourcemetricstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/crossversionobjectreference.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/externalmetricsource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/externalmetricstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/horizontalpodautoscaler.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/horizontalpodautoscalercondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/horizontalpodautoscalerspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/horizontalpodautoscalerstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/metricspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/metricstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/objectmetricsource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/objectmetricstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/podsmetricsource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/podsmetricstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/resourcemetricsource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta1/resourcemetricstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/containerresourcemetricsource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/containerresourcemetricstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/crossversionobjectreference.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/externalmetricsource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/externalmetricstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscaler.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscalerbehavior.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscalercondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscalerspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/horizontalpodautoscalerstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/hpascalingpolicy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/hpascalingrules.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metricidentifier.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metricspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metricstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metrictarget.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/metricvaluestatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/objectmetricsource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/objectmetricstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/podsmetricsource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/podsmetricstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/resourcemetricsource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/autoscaling/v2beta2/resourcemetricstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/batch/v1/cronjob.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/batch/v1/cronjobspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/batch/v1/cronjobstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/batch/v1/job.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobcondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobtemplatespec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyonexitcodesrequirement.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyonpodconditionspattern.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyrule.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/batch/v1/successpolicy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/batch/v1/successpolicyrule.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/batch/v1/uncountedterminatedpods.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/batch/v1beta1/cronjob.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/batch/v1beta1/cronjobspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/batch/v1beta1/cronjobstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/batch/v1beta1/jobtemplatespec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/certificates/v1/certificatesigningrequest.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/certificates/v1/certificatesigningrequestcondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/certificates/v1/certificatesigningrequestspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/certificates/v1/certificatesigningrequeststatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/certificates/v1alpha1/clustertrustbundle.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/certificates/v1alpha1/clustertrustbundlespec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/certificates/v1beta1/certificatesigningrequest.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/certificates/v1beta1/certificatesigningrequestcondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/certificates/v1beta1/certificatesigningrequestspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/certificates/v1beta1/certificatesigningrequeststatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/coordination/v1/lease.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/coordination/v1/leasespec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/coordination/v1beta1/lease.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/coordination/v1beta1/leasespec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/affinity.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/apparmorprofile.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/attachedvolume.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/awselasticblockstorevolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/azurediskvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/azurefilepersistentvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/azurefilevolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/capabilities.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/cephfspersistentvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/cephfsvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/cinderpersistentvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/cindervolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/clientipconfig.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/clustertrustbundleprojection.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/componentcondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/componentstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmap.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapenvsource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapkeyselector.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapnodeconfigsource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapprojection.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/configmapvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/container.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerimage.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerport.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerresizepolicy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstate.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstaterunning.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstateterminated.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstatewaiting.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/containerstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/csipersistentvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/csivolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/daemonendpoint.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/downwardapiprojection.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/downwardapivolumefile.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/downwardapivolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/emptydirvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/endpointaddress.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/endpointport.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/endpoints.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/endpointsubset.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/envfromsource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/envvar.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/envvarsource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/ephemeralcontainer.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/ephemeralcontainercommon.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/ephemeralvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/event.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/eventseries.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/eventsource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/execaction.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/fcvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/flexpersistentvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/flexvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/flockervolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/gcepersistentdiskvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/gitrepovolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/glusterfspersistentvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/glusterfsvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/grpcaction.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/hostalias.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/hostip.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/hostpathvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/httpgetaction.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/httpheader.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/iscsipersistentvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/iscsivolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/keytopath.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/lifecycle.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/lifecyclehandler.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/limitrange.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/limitrangeitem.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/limitrangespec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/loadbalanceringress.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/loadbalancerstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/localobjectreference.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/localvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/modifyvolumestatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/namespace.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/namespacecondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/namespacespec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/namespacestatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/nfsvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/node.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeaddress.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeaffinity.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodecondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeconfigsource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeconfigstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodedaemonendpoints.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/noderuntimehandler.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/noderuntimehandlerfeatures.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeselector.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeselectorrequirement.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodeselectorterm.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodespec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodestatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/nodesysteminfo.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/objectfieldselector.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/objectreference.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolume.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaim.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimcondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimtemplate.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumeclaimvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumespec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/persistentvolumestatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/photonpersistentdiskvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/pod.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/podaffinity.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/podaffinityterm.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/podantiaffinity.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/podcondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/poddnsconfig.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/poddnsconfigoption.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/podip.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/podos.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/podreadinessgate.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/podresourceclaim.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/podresourceclaimstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/podschedulinggate.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/podsecuritycontext.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/podspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/podstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/podtemplate.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/podtemplatespec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/portstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/portworxvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/preferredschedulingterm.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/probe.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/probehandler.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/projectedvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/quobytevolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/rbdpersistentvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/rbdvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/replicationcontroller.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/replicationcontrollercondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/replicationcontrollerspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/replicationcontrollerstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourceclaim.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcefieldselector.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcequota.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcequotaspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcequotastatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/resourcerequirements.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/scaleiopersistentvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/scaleiovolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/scopedresourceselectorrequirement.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/scopeselector.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/seccompprofile.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/secret.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretenvsource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretkeyselector.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretprojection.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretreference.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/secretvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/securitycontext.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/selinuxoptions.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/service.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/serviceaccount.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/serviceaccounttokenprojection.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/serviceport.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/servicespec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/servicestatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/sessionaffinityconfig.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/sleepaction.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/storageospersistentvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/storageosvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/sysctl.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/taint.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/tcpsocketaction.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/toleration.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/topologyselectorlabelrequirement.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/topologyselectorterm.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/topologyspreadconstraint.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/typedlocalobjectreference.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/typedobjectreference.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/volume.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumedevice.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumemount.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumemountstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumenodeaffinity.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumeprojection.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumeresourcerequirements.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/volumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/vspherevirtualdiskvolumesource.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/weightedpodaffinityterm.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/core/v1/windowssecuritycontextoptions.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpoint.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpointconditions.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpointhints.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpointport.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/endpointslice.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/discovery/v1/forzone.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpoint.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpointconditions.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpointhints.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpointport.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/endpointslice.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/discovery/v1beta1/forzone.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/events/v1/event.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/events/v1/eventseries.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/events/v1beta1/event.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/events/v1beta1/eventseries.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonset.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonsetcondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonsetspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonsetstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/daemonsetupdatestrategy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deployment.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deploymentcondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deploymentspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deploymentstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/deploymentstrategy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/httpingresspath.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/httpingressrulevalue.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingress.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressbackend.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressloadbalanceringress.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressloadbalancerstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressportstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressrule.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressrulevalue.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingressstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ingresstls.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/ipblock.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicy.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicyegressrule.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicyingressrule.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicypeer.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicyport.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/networkpolicyspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/replicaset.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/replicasetcondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/replicasetspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/replicasetstatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/rollbackconfig.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/rollingupdatedaemonset.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/rollingupdatedeployment.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/extensions/v1beta1/scale.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/exemptprioritylevelconfiguration.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowdistinguishermethod.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowschema.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowschemacondition.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowschemaspec.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/flowschemastatus.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/groupsubject.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/flowcontrol/v1/limitedprioritylevelconfiguration.go
#	openshift/tools/vendor/k8s.io/client-go/applyconfigurations/flowcont…
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

# Conflicts:
#	openshift/manifests/0000_30_cluster-api_04_cm.infrastructure-vsphere.yaml
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 30, 2026

Walkthrough

This pull request performs a comprehensive upgrade of the infrastructure provider, introducing v1beta1 and v1beta2 API versions for both govmomi and supervisor packages, removing deprecated v1alpha3 types, and updating build toolchain versions, GitHub Actions, and supporting configuration files.

Changes

Cohort / File(s) Summary
GitHub Actions & Workflows
.github/workflows/cover.yaml, .github/workflows/pr-dependabot.yaml, .github/workflows/pr-golangci-lint.yaml, .github/workflows/pr-md-link-check.yaml, .github/workflows/release.yaml, .github/workflows/weekly-*.yaml
Updated pinned GitHub Actions versions (checkout v6.0.1→v6.0.2, setup-go v6.1.0→v6.3.0, cache v5.0.1→v5.0.3, harden-runner v2.14.0→v2.16.0, softprops/action-gh-release v2.5.0→v2.6.1) and removed release-1.13 from branch matrices in weekly workflows.
Build Configuration
Dockerfile, Makefile, .golangci.yml, .golangci-kal.yml
Bumped Go version from 1.24 to 1.25, updated toolchain versions (envtest, controller-gen, gotestsum, conversion-gen, etc.), added GCFLAGS build argument support, introduced new VM operator version handling, extended e2e template generation targets, and refined linting rules with new import/forbid restrictions and updated deprecation exclusions.
Project Metadata
README.md, .gitignore, api/.import-restrictions
Updated CAPV release support documentation to reflect v1.15 addition and v1.12/v1.13 status changes; added gitignore patterns for E2E templates and supervisor-related files; introduced API-layer import restrictions for internal/controller-runtime dependencies.
Govmomi v1beta1 API
api/govmomi/v1beta1/*.go
New complete v1beta1 API surface with types for VSphereCluster, VSphereClusterTemplate, VSphereClusterIdentity, VSphereDeploymentZone, VSphereFailureDomain, VSphereMachine, VSphereMachineTemplate, and VSphereVM, including full bidirectional conversion layer to v1beta2 with manual field mapping for pointer semantics and condition handling.
Govmomi v1beta2 API
api/govmomi/v1beta2/*.go
New complete v1beta2 API surface mirroring v1beta1 with Hub() interface implementations, condition constants, and support structures for vSphere machine templates, network configuration, and resource definitions.
Supervisor v1beta1 API
api/supervisor/v1beta1/*.go
New complete v1beta1 API surface for supervisor-specific types (VSphereCluster, VSphereMachine, VSphereClusterTemplate, VSphereMachineTemplate, ProviderServiceAccount) with v1beta2 conversion layer handling status initialization, failure domain representation changes, and deprecated field normalization.
Supervisor v1beta2 API
api/supervisor/v1beta2/*.go
New complete v1beta2 API surface including VSphereCluster, VSphereMachine, VSphereClusterTemplate, VSphereMachineTemplate, ProviderServiceAccount, detailed network status types (DNS, DHCP, interface IP), and condition constants with Hub() methods.
Deprecated v1alpha3 Removal
apis/v1alpha3/*.go
Removed all deprecated v1alpha3 API types and conversion logic, including VSphereCluster, VSphereClusterIdentity, VSphereDeploymentZone, vendored Cluster API types, cloud provider configuration types, and associated encoding/conversion implementations.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

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

@openshift-ci openshift-ci Bot added the needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. label Apr 30, 2026
@openshift-ci
Copy link
Copy Markdown

openshift-ci Bot commented Apr 30, 2026

Hi @cloud-team-rebase-bot[bot]. Thanks for your PR.

I'm waiting for a openshift member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work.

Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

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.

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: 15

🧹 Nitpick comments (5)
api/govmomi/v1beta1/types.go (1)

644-649: 💤 Low value

Missing explicit type annotations on const declarations.

Several constants are declared without explicit type annotations. While Go allows this when the first constant in a block has a type, these constants rely on implicit typing which can be error-prone and inconsistent with the surrounding code style.

🔧 Suggested fix
 const (
 	VirtualMachineStateNotFound VirtualMachineState = "notfound"
-	VirtualMachineStatePending = "pending"
-	VirtualMachineStateReady = "ready"
+	VirtualMachineStatePending VirtualMachineState = "pending"
+	VirtualMachineStateReady VirtualMachineState = "ready"
 )
 const (
 	VirtualMachinePowerStatePoweredOn VirtualMachinePowerState = "poweredOn"
-	VirtualMachinePowerStatePoweredOff = "poweredOff"
-	VirtualMachinePowerStateSuspended = "suspended"
+	VirtualMachinePowerStatePoweredOff VirtualMachinePowerState = "poweredOff"
+	VirtualMachinePowerStateSuspended VirtualMachinePowerState = "suspended"
 )

Also applies to: 658-663

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@api/govmomi/v1beta1/types.go` around lines 644 - 649, The consts like
VirtualMachineStatePending and VirtualMachineStateReady are declared without an
explicit type; update these constant declarations (and the other similar ones
noted around the same block) to include the explicit type string (e.g., add the
type to the const spec so the constants are typed as string) so they match
surrounding style and avoid implicit typing issues—look for declarations named
VirtualMachineStatePending, VirtualMachineStateReady and the other constants in
that block and change their const entries to use an explicit string type.
Makefile (1)

26-27: Consider updating to Go 1.26.2.

Go 1.25.9 is available but outdated. The latest stable version as of April 2026 is Go 1.26.2. Evaluate whether upgrading to the latest release would benefit the project with newer features, security patches, and bug fixes.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Makefile` around lines 26 - 27, Update the Makefile Go versions: set
GO_VERSION to 1.26.2 and bump GO_DIRECTIVE_VERSION to the matching Go directive
series (e.g., 1.26.0) so the build uses the latest stable Go release; change the
values for GO_VERSION and GO_DIRECTIVE_VERSION in the Makefile accordingly and
run a quick build/test to verify compatibility.
api/govmomi/v1beta2/vsphereclusteridentity_types.go (1)

24-26: 💤 Low value

Minor formatting issue in comment.

There's a trailing space before the period in the comment.

📝 Proposed fix
 const (
-	// SecretIdentitySetFinalizer is the finalizer for VSphereCluster credentials secrets .
+	// SecretIdentitySetFinalizer is the finalizer for VSphereCluster credentials secrets.
 	SecretIdentitySetFinalizer = "vspherecluster/infrastructure.cluster.x-k8s.io"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@api/govmomi/v1beta2/vsphereclusteridentity_types.go` around lines 24 - 26,
The comment for the constant SecretIdentitySetFinalizer has a trailing space
before the period; remove that extra space so the comment reads without the
stray space before the period (edit the comment above
SecretIdentitySetFinalizer).
api/govmomi/v1beta1/vspheremachine_types.go (1)

113-117: 💤 Low value

Typo in ProviderID documentation comment.

"formated" should be "formatted".

📝 Proposed fix
-	// ProviderID is the virtual machine's BIOS UUID formated as
+	// ProviderID is the virtual machine's BIOS UUID formatted as
 	// vsphere://12345678-1234-1234-1234-123456789abc
 	// +optional
 	ProviderID *string `json:"providerID,omitempty"`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@api/govmomi/v1beta1/vspheremachine_types.go` around lines 113 - 117, Fix the
typo in the ProviderID doc comment: change "formated" to "formatted" in the
comment above the ProviderID field (the ProviderID *string
`json:"providerID,omitempty"` declaration in vspheremachine_types.go) so the
documentation reads "virtual machine's BIOS UUID formatted as vsphere://...".
api/govmomi/v1beta2/vspheremachine_types.go (1)

256-261: 💤 Low value

Missing nolint comment for consistency with FailureMessage field.

The FailureReason field is missing the //nolint:kubeapilinter comment that the FailureMessage field has on Line 284. For consistency and to prevent potential linter issues, both deprecated fields should have the same annotation.

📝 Proposed fix
 	// +optional
-	FailureReason *errors.MachineStatusError `json:"failureReason,omitempty"`
+	FailureReason *errors.MachineStatusError `json:"failureReason,omitempty"` //nolint:kubeapilinter // field will be removed when v1beta1 is removed
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@api/govmomi/v1beta2/vspheremachine_types.go` around lines 256 - 261, The
FailureReason field is missing the same linter suppression as the deprecated
FailureMessage field; update the declaration of FailureReason (the FailureReason
*errors.MachineStatusError field in vspheremachine_types.go) to include the same
//nolint:kubeapilinter comment directly above it, matching the annotation used
for FailureMessage so both deprecated fields are treated consistently by
linters.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@api/govmomi/v1beta1/conversion.go`:
- Around line 384-386: The conversion currently copies only
src.Spec.BootstrapRef.Name into dst.Spec.BootstrapRef, which loses
kind/namespace/apiVersion and can misrepresent non-Secret or cross-namespace
refs; change the conversion to preserve the entire ObjectReference by copying
the whole src.Spec.BootstrapRef into dst.Spec.BootstrapRef (e.g., assign or
deep-copy all fields rather than only Name) so kind/namespace/apiVersion/UID are
retained; apply the same fix to the analogous conversion site referenced around
the other block (lines 455-461) that also only copies Name.

In `@api/govmomi/v1beta1/types.go`:
- Line 326: Fix the typo in the comment describing the cpu field: update the
comment text that currently reads "cpu is the number of spu shares to assign to
the VM" to "cpu is the number of cpu shares to assign to the VM" so the comment
correctly references cpu shares for the cpu field in types.go.
- Around line 492-494: The struct field Gateway6 currently has a copy-pasted
comment saying "Gateway4 is the IPv4 gateway used by this device." Update the
comment for Gateway6 to correctly describe it as the IPv6 gateway (e.g.,
"Gateway6 is the IPv6 gateway used by this device.") so the docstring matches
the field name Gateway6 in the types.go struct.

In `@api/govmomi/v1beta2/types.go`:
- Around line 259-262: CustomVMXKeys currently defined as map[string]string
violates the enabled nomaps lint; replace it with a slice of key/value entry
structs (e.g., type CustomVMXKey struct { Key string `json:"key"` Value string
`json:"value"` } and change CustomVMXKeys to []CustomVMXKey) in the same
types.go, keep the json tags and +optional marker on the field, and update any
code that constructs/reads CustomVMXKeys (marshal/unmarshal, validation,
defaulting, and any callers referencing CustomVMXKeys by map) to use the slice
of entries instead.
- Around line 430-432: The Spec field on the VSphereMachineTemplate currently
allows omission (it has the +optional marker and json:"spec,omitzero"), so make
the nested machine spec required by removing the +optional comment and the
omitzero tag: update the Spec field declaration for VSphereMachineTemplate (Spec
VSphereMachineSpec) to remove the +optional marker and use a plain json:"spec"
tag (or another non-omitempty form) so validation requires Spec to be present.
- Around line 715-719: The UseRoutes field is incorrectly typed as *string;
change its type to *bool (i.e., UseRoutes *bool `json:"useRoutes,omitempty"`)
and replace the string-specific kubebuilder validation (remove MaxLength=128)
with the appropriate boolean/optional annotation (or no length validation) so
the field serializes as a JSON boolean; update any code that constructs or reads
govmomi.v1beta2.types.UseRoutes to pass/expect a *bool accordingly.
- Around line 451-454: The APIEndpoint.String method constructs HOST:PORT
manually which breaks IPv6 literals; update the APIEndpoint.String
implementation to use the standard library net.JoinHostPort to format the host
and port correctly (e.g., call net.JoinHostPort(v.Host,
strconv.Itoa(int(v.Port))) inside APIEndpoint.String) so IPv6 addresses are
wrapped in brackets and ports are appended properly.

In `@api/govmomi/v1beta2/vspheremachinetemplate_types.go`:
- Around line 45-47: The Spec field on VSphereMachineTemplate is marked optional
and uses `omitempty,omitzero`; make it required by removing the `// +optional`
marker and the omitempty/omitzero from the json tag (change `Spec
VSphereMachineTemplateSpec `json:"spec,omitempty,omitzero"` to `Spec
VSphereMachineTemplateSpec `json:"spec"`), and optionally add a kubebuilder
validation marker (e.g., `// +kubebuilder:validation:Required`) above the Spec
declaration to ensure the CRD schema enforces a present spec; update references
to VSphereMachineTemplate.Spec and the VSphereMachineTemplateSpec type
accordingly.

In `@api/supervisor/v1beta1/providerserviceaccount_types.go`:
- Around line 54-55: The root CRD type ProviderServiceAccount is missing a
Status field despite having ProviderServiceAccountStatus and the
+kubebuilder:subresource:status tag; add a Status field to the
ProviderServiceAccount struct: Status ProviderServiceAccountStatus
`json:"status,omitempty"` (ensure the field name and type match the existing
ProviderServiceAccountStatus), so the status subresource can be persisted and
round-tripped; verify the struct tags/markers and deepcopy/runtime.Object
markers remain intact and apply the same pattern if a corresponding list or
other root types are missing status fields.

In `@api/supervisor/v1beta1/vspherecluster_types.go`:
- Around line 137-154: The IsDefined helpers incorrectly treat a nil receiver as
defined; update NSXVPC.IsDefined and Network.IsDefined to first check for a nil
receiver (e.g., if r == nil { return false }) and only then perform the existing
reflect.DeepEqual check to the zero-value instance so that
(*NSXVPC)(nil).IsDefined() and (*Network)(nil).IsDefined() return false.

In `@api/supervisor/v1beta1/vspheremachine_types.go`:
- Around line 197-220: Update the doc comments on the InterfaceNetworkReference
fields Kind, Name, and APIVersion to describe a network object reference instead
of a "remediation template": replace every occurrence of "remediation template"
in the comments for Kind, Name, and APIVersion with text indicating they refer
to the network object being referenced (e.g., "network object" or "network
resource"), preserve the existing validation/kubebuilder tags and NOTE about
APIVersion being kept in sync with the referenced object's APIVersion, and
ensure the examples/constraints in the comments still make sense for network
object naming and API versioning.

In `@api/supervisor/v1beta2/vspherecluster_types.go`:
- Around line 139-156: The IsDefined methods for NSXVPC and Network incorrectly
report a nil receiver as defined; update both methods (NSXVPC.IsDefined and
Network.IsDefined) to first check if the receiver is nil and return false, then
proceed with the existing reflect.DeepEqual comparison to an empty literal so
omitted (nil) configs are treated as undefined.

In `@api/supervisor/v1beta2/vspheremachinenetworkstatus_types.go`:
- Around line 83-85: The IsDefined methods currently return true for nil
receivers; add a nil-check at the start of each IsDefined (e.g.,
VSphereMachineNetworkDNSStatus.IsDefined) and return false if the receiver is
nil, then proceed with the existing DeepEqual check — apply the same nil-guard
pattern to the other IsDefined implementations in this file as indicated (the
ones at the other noted ranges).

In `@README.md`:
- Line 59: Update the table row text in README.md (the row containing "v1.13.x |
Maintenance mode | Maintenance mode v1.15.0 release date, EOL when v1.16.0 will
be released") to include the word "since" before "v1.15.0" so the cell reads
"Maintenance mode since v1.15.0 release date, EOL when v1.16.0 will be
released"; edit the table cell content accordingly to preserve spacing and
alignment.

---

Nitpick comments:
In `@api/govmomi/v1beta1/types.go`:
- Around line 644-649: The consts like VirtualMachineStatePending and
VirtualMachineStateReady are declared without an explicit type; update these
constant declarations (and the other similar ones noted around the same block)
to include the explicit type string (e.g., add the type to the const spec so the
constants are typed as string) so they match surrounding style and avoid
implicit typing issues—look for declarations named VirtualMachineStatePending,
VirtualMachineStateReady and the other constants in that block and change their
const entries to use an explicit string type.

In `@api/govmomi/v1beta1/vspheremachine_types.go`:
- Around line 113-117: Fix the typo in the ProviderID doc comment: change
"formated" to "formatted" in the comment above the ProviderID field (the
ProviderID *string `json:"providerID,omitempty"` declaration in
vspheremachine_types.go) so the documentation reads "virtual machine's BIOS UUID
formatted as vsphere://...".

In `@api/govmomi/v1beta2/vsphereclusteridentity_types.go`:
- Around line 24-26: The comment for the constant SecretIdentitySetFinalizer has
a trailing space before the period; remove that extra space so the comment reads
without the stray space before the period (edit the comment above
SecretIdentitySetFinalizer).

In `@api/govmomi/v1beta2/vspheremachine_types.go`:
- Around line 256-261: The FailureReason field is missing the same linter
suppression as the deprecated FailureMessage field; update the declaration of
FailureReason (the FailureReason *errors.MachineStatusError field in
vspheremachine_types.go) to include the same //nolint:kubeapilinter comment
directly above it, matching the annotation used for FailureMessage so both
deprecated fields are treated consistently by linters.

In `@Makefile`:
- Around line 26-27: Update the Makefile Go versions: set GO_VERSION to 1.26.2
and bump GO_DIRECTIVE_VERSION to the matching Go directive series (e.g., 1.26.0)
so the build uses the latest stable Go release; change the values for GO_VERSION
and GO_DIRECTIVE_VERSION in the Makefile accordingly and run a quick build/test
to verify compatibility.
🪄 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: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 90e3c963-8e4f-4bb0-89be-4de35d7eb1d5

📥 Commits

Reviewing files that changed from the base of the PR and between 0f0e7b1 and 3a5274a.

⛔ Files ignored due to path filters (13)
  • api/govmomi/v1beta1/zz_generated.conversion.go is excluded by !**/zz_generated*
  • api/govmomi/v1beta1/zz_generated.deepcopy.go is excluded by !**/zz_generated*
  • api/govmomi/v1beta2/zz_generated.deepcopy.go is excluded by !**/zz_generated*
  • api/supervisor/v1beta1/zz_generated.conversion.go is excluded by !**/zz_generated*
  • api/supervisor/v1beta1/zz_generated.deepcopy.go is excluded by !**/zz_generated*
  • api/supervisor/v1beta2/zz_generated.deepcopy.go is excluded by !**/zz_generated*
  • apis/v1alpha3/zz_generated.conversion.go is excluded by !**/zz_generated*
  • apis/v1alpha3/zz_generated.deepcopy.go is excluded by !**/zz_generated*
  • apis/v1alpha4/zz_generated.conversion.go is excluded by !**/zz_generated*
  • apis/v1alpha4/zz_generated.deepcopy.go is excluded by !**/zz_generated*
  • apis/v1beta1/zz_generated.deepcopy.go is excluded by !**/zz_generated*
  • go.sum is excluded by !**/*.sum
  • internal/apis/topology/v1alpha1/zz_generated.deepcopy.go is excluded by !**/zz_generated*
📒 Files selected for processing (287)
  • .github/workflows/cover.yaml
  • .github/workflows/pr-dependabot.yaml
  • .github/workflows/pr-golangci-lint.yaml
  • .github/workflows/pr-md-link-check.yaml
  • .github/workflows/release.yaml
  • .github/workflows/weekly-md-link-check.yaml
  • .github/workflows/weekly-security-scan.yaml
  • .github/workflows/weekly-test-release.yaml
  • .gitignore
  • .golangci-kal.yml
  • .golangci.yml
  • Dockerfile
  • Makefile
  • README.md
  • api/.import-restrictions
  • api/govmomi/v1beta1/.import-restrictions
  • api/govmomi/v1beta1/condition_consts.go
  • api/govmomi/v1beta1/conversion.go
  • api/govmomi/v1beta1/conversion_test.go
  • api/govmomi/v1beta1/doc.go
  • api/govmomi/v1beta1/groupversion_info.go
  • api/govmomi/v1beta1/types.go
  • api/govmomi/v1beta1/vspherecluster_types.go
  • api/govmomi/v1beta1/vsphereclusteridentity_types.go
  • api/govmomi/v1beta1/vsphereclustertemplate_types.go
  • api/govmomi/v1beta1/vspheredeploymentzone_types.go
  • api/govmomi/v1beta1/vspherefailuredomain_types.go
  • api/govmomi/v1beta1/vspheremachine_types.go
  • api/govmomi/v1beta1/vspheremachinetemplate_types.go
  • api/govmomi/v1beta1/vspherevm_types.go
  • api/govmomi/v1beta2/condition_consts.go
  • api/govmomi/v1beta2/conversion.go
  • api/govmomi/v1beta2/doc.go
  • api/govmomi/v1beta2/groupversion_info.go
  • api/govmomi/v1beta2/types.go
  • api/govmomi/v1beta2/vspherecluster_types.go
  • api/govmomi/v1beta2/vsphereclusteridentity_types.go
  • api/govmomi/v1beta2/vsphereclustertemplate_types.go
  • api/govmomi/v1beta2/vspheredeploymentzone_types.go
  • api/govmomi/v1beta2/vspherefailuredomain_types.go
  • api/govmomi/v1beta2/vspheremachine_types.go
  • api/govmomi/v1beta2/vspheremachinetemplate_types.go
  • api/govmomi/v1beta2/vspherevm_types.go
  • api/supervisor/v1beta1/.import-restrictions
  • api/supervisor/v1beta1/conditions_consts.go
  • api/supervisor/v1beta1/conversion.go
  • api/supervisor/v1beta1/conversion_test.go
  • api/supervisor/v1beta1/doc.go
  • api/supervisor/v1beta1/groupversion_info.go
  • api/supervisor/v1beta1/providerserviceaccount_types.go
  • api/supervisor/v1beta1/types.go
  • api/supervisor/v1beta1/vspherecluster_types.go
  • api/supervisor/v1beta1/vsphereclustertemplate_types.go
  • api/supervisor/v1beta1/vspheremachine_types.go
  • api/supervisor/v1beta1/vspheremachinenetworkstatus_types.go
  • api/supervisor/v1beta1/vspheremachinetemplate_types.go
  • api/supervisor/v1beta2/.import-restrictions
  • api/supervisor/v1beta2/conditions_consts.go
  • api/supervisor/v1beta2/conversion.go
  • api/supervisor/v1beta2/doc.go
  • api/supervisor/v1beta2/groupversion_info.go
  • api/supervisor/v1beta2/providerserviceaccount_types.go
  • api/supervisor/v1beta2/types.go
  • api/supervisor/v1beta2/vspherecluster_types.go
  • api/supervisor/v1beta2/vsphereclustertemplate_types.go
  • api/supervisor/v1beta2/vspheremachine_types.go
  • api/supervisor/v1beta2/vspheremachinenetworkstatus_types.go
  • api/supervisor/v1beta2/vspheremachinetemplate_types.go
  • apis/v1alpha3/cloudprovider_encoding.go
  • apis/v1alpha3/cloudprovider_encoding_test.go
  • apis/v1alpha3/cloudprovider_types.go
  • apis/v1alpha3/conversion.go
  • apis/v1alpha3/conversion_test.go
  • apis/v1alpha3/doc.go
  • apis/v1alpha3/groupversion_info.go
  • apis/v1alpha3/networkdevicespec_conversion.go
  • apis/v1alpha3/topology_conversion.go
  • apis/v1alpha3/types.go
  • apis/v1alpha3/vendored_cluster_api.go
  • apis/v1alpha3/vspherecluster_conversion.go
  • apis/v1alpha3/vspherecluster_types.go
  • apis/v1alpha3/vsphereclusteridentity_conversion.go
  • apis/v1alpha3/vsphereclusteridentity_types.go
  • apis/v1alpha3/vspheredeploymentzone_conversion.go
  • apis/v1alpha3/vspheredeploymentzone_types.go
  • apis/v1alpha3/vspherefailuredomain_conversion.go
  • apis/v1alpha3/vspherefailuredomain_types.go
  • apis/v1alpha3/vspheremachine_conversion.go
  • apis/v1alpha3/vspheremachine_types.go
  • apis/v1alpha3/vspheremachinetemplate_conversion.go
  • apis/v1alpha3/vspheremachinetemplate_types.go
  • apis/v1alpha3/vspherevm_conversion.go
  • apis/v1alpha3/vspherevm_types.go
  • apis/v1alpha4/conversion.go
  • apis/v1alpha4/conversion_test.go
  • apis/v1alpha4/doc.go
  • apis/v1alpha4/groupversion_info.go
  • apis/v1alpha4/networkdevicespec_conversion.go
  • apis/v1alpha4/topology_conversion.go
  • apis/v1alpha4/types.go
  • apis/v1alpha4/vendored_cluster_api.go
  • apis/v1alpha4/vspherecluster_conversion.go
  • apis/v1alpha4/vspherecluster_types.go
  • apis/v1alpha4/vsphereclusteridentity_conversion.go
  • apis/v1alpha4/vsphereclusteridentity_types.go
  • apis/v1alpha4/vsphereclustertemplate_conversion.go
  • apis/v1alpha4/vsphereclustertemplate_types.go
  • apis/v1alpha4/vspheredeploymentzone_conversion.go
  • apis/v1alpha4/vspheredeploymentzone_types.go
  • apis/v1alpha4/vspherefailuredomain_conversion.go
  • apis/v1alpha4/vspherefailuredomain_types.go
  • apis/v1alpha4/vspheremachine_conversion.go
  • apis/v1alpha4/vspheremachine_types.go
  • apis/v1alpha4/vspheremachinetemplate_conversion.go
  • apis/v1alpha4/vspheremachinetemplate_types.go
  • apis/v1alpha4/vspherevm_conversion.go
  • apis/v1alpha4/vspherevm_types.go
  • apis/v1beta1/.import-restrictions
  • apis/v1beta1/doc.go
  • apis/v1beta1/groupversion_info.go
  • apis/v1beta1/types.go
  • apis/v1beta1/vspherecluster_conversion.go
  • apis/v1beta1/vspherecluster_types.go
  • apis/v1beta1/vsphereclusteridentity_conversion.go
  • apis/v1beta1/vsphereclusteridentity_types.go
  • apis/v1beta1/vsphereclustertemplate_conversion.go
  • apis/v1beta1/vsphereclustertemplate_types.go
  • apis/v1beta1/vspheredeploymentzone_conversion.go
  • apis/v1beta1/vspheredeploymentzone_types.go
  • apis/v1beta1/vspherefailuredomain_conversion.go
  • apis/v1beta1/vspherefailuredomain_types.go
  • apis/v1beta1/vspheremachine_conversion.go
  • apis/v1beta1/vspheremachine_types.go
  • apis/v1beta1/vspheremachinetemplate_conversion.go
  • apis/v1beta1/vspheremachinetemplate_types.go
  • apis/v1beta1/vspherevm_conversion.go
  • apis/v1beta1/vspherevm_types.go
  • apis/vmware/v1beta1/.import-restrictions
  • apis/vmware/v1beta1/conditions_consts.go
  • apis/vmware/v1beta1/doc.go
  • apis/vmware/v1beta1/groupversion_info.go
  • apis/vmware/v1beta1/providerserviceaccount_types.go
  • apis/vmware/v1beta1/types.go
  • apis/vmware/v1beta1/vspherecluster_types.go
  • apis/vmware/v1beta1/vsphereclustertemplate_types.go
  • apis/vmware/v1beta1/vspheremachine_types.go
  • apis/vmware/v1beta1/vspheremachinetemplate_types.go
  • cloudbuild-nightly.yaml
  • cloudbuild.yaml
  • clusterctl-settings.json
  • config/default/crd/bases/infrastructure.cluster.x-k8s.io_vsphereclusteridentities.yaml
  • config/default/crd/bases/infrastructure.cluster.x-k8s.io_vsphereclusters.yaml
  • config/default/crd/bases/infrastructure.cluster.x-k8s.io_vsphereclustertemplates.yaml
  • config/default/crd/bases/infrastructure.cluster.x-k8s.io_vspheredeploymentzones.yaml
  • config/default/crd/bases/infrastructure.cluster.x-k8s.io_vspherefailuredomains.yaml
  • config/default/crd/bases/infrastructure.cluster.x-k8s.io_vspheremachines.yaml
  • config/default/crd/bases/infrastructure.cluster.x-k8s.io_vspheremachinetemplates.yaml
  • config/default/crd/bases/infrastructure.cluster.x-k8s.io_vspherevms.yaml
  • config/default/crd/kustomization.yaml
  • config/default/crd/patches/webhook_in_vsphereclusters.yaml
  • config/default/crd/patches/webhook_in_vsphereclustertemplates.yaml
  • config/default/crd/patches/webhook_in_vspheredeploymentzones.yaml
  • config/default/crd/patches/webhook_in_vspherefailuredomains.yaml
  • config/default/crd/patches/webhook_in_vspheremachines.yaml
  • config/default/crd/patches/webhook_in_vspheremachinetemplates.yaml
  • config/default/crd/patches/webhook_in_vspherevms.yaml
  • config/deployments/integration-tests/crds/topology.tanzu.vmware.com_availabilityzones.yaml
  • config/deployments/integration-tests/crds/vmoperator.vmware.com_clustervirtualmachineimages.yaml
  • config/deployments/integration-tests/crds/vmoperator.vmware.com_contentlibraryproviders.yaml
  • config/deployments/integration-tests/crds/vmoperator.vmware.com_contentsourcebindings.yaml
  • config/deployments/integration-tests/crds/vmoperator.vmware.com_contentsources.yaml
  • config/deployments/integration-tests/crds/vmoperator.vmware.com_virtualmachineclassbindings.yaml
  • config/deployments/integration-tests/crds/vmoperator.vmware.com_virtualmachineclasses.yaml
  • config/deployments/integration-tests/crds/vmoperator.vmware.com_virtualmachineclassinstances.yaml
  • config/deployments/integration-tests/crds/vmoperator.vmware.com_virtualmachinegrouppublishrequests.yaml
  • config/deployments/integration-tests/crds/vmoperator.vmware.com_virtualmachinegroups.yaml
  • config/deployments/integration-tests/crds/vmoperator.vmware.com_virtualmachineimagecaches.yaml
  • config/deployments/integration-tests/crds/vmoperator.vmware.com_virtualmachineimages.yaml
  • config/deployments/integration-tests/crds/vmoperator.vmware.com_virtualmachinepublishrequests.yaml
  • config/deployments/integration-tests/crds/vmoperator.vmware.com_virtualmachinereplicasets.yaml
  • config/deployments/integration-tests/crds/vmoperator.vmware.com_virtualmachines.yaml
  • config/deployments/integration-tests/crds/vmoperator.vmware.com_virtualmachineservices.yaml
  • config/deployments/integration-tests/crds/vmoperator.vmware.com_virtualmachinesetresourcepolicies.yaml
  • config/deployments/integration-tests/crds/vmoperator.vmware.com_virtualmachinesnapshots.yaml
  • config/deployments/integration-tests/crds/vmoperator.vmware.com_virtualmachinewebconsolerequests.yaml
  • config/deployments/integration-tests/crds/vmoperator.vmware.com_webconsolerequests.yaml
  • config/deployments/integration-tests/kustomization.yaml
  • config/govmomi/webhook/manifests.yaml
  • config/manager/manager.yaml
  • config/metrics/crd-metrics-config.yaml
  • config/rbac/role.yaml
  • config/supervisor-tilt/kustomization.yaml
  • config/supervisor-tilt/metrics/crd-clusterrole.yaml
  • config/supervisor-tilt/metrics/crd-metrics-config.yaml
  • config/supervisor-tilt/metrics/kustomization.yaml
  • config/supervisor/crd/bases/vmware.infrastructure.cluster.x-k8s.io_providerserviceaccounts.yaml
  • config/supervisor/crd/bases/vmware.infrastructure.cluster.x-k8s.io_vsphereclusters.yaml
  • config/supervisor/crd/bases/vmware.infrastructure.cluster.x-k8s.io_vsphereclustertemplates.yaml
  • config/supervisor/crd/bases/vmware.infrastructure.cluster.x-k8s.io_vspheremachines.yaml
  • config/supervisor/crd/bases/vmware.infrastructure.cluster.x-k8s.io_vspheremachinetemplates.yaml
  • config/supervisor/crd/kustomization.yaml
  • config/supervisor/crd/kustomizeconfig.yaml
  • config/supervisor/crd/patches/cainjection_in_providerserviceaccounts.yaml
  • config/supervisor/crd/patches/cainjection_in_vsphereclusters.yaml
  • config/supervisor/crd/patches/cainjection_in_vsphereclustertemplates.yaml
  • config/supervisor/crd/patches/cainjection_in_vspheremachines.yaml
  • config/supervisor/crd/patches/cainjection_in_vspheremachinetemplates.yaml
  • config/supervisor/crd/patches/webhook_in_providerserviceaccounts.yaml
  • config/supervisor/crd/patches/webhook_in_vsphereclusters.yaml
  • config/supervisor/crd/patches/webhook_in_vsphereclustertemplates.yaml
  • config/supervisor/crd/patches/webhook_in_vspheremachines.yaml
  • config/supervisor/crd/patches/webhook_in_vspheremachinetemplates.yaml
  • config/supervisor/kustomization.yaml
  • config/supervisor/webhook/manifests.yaml
  • controllers/clustermodule_reconciler.go
  • controllers/clustermodule_reconciler_test.go
  • controllers/controllers_suite_test.go
  • controllers/vmware/controllers_suite_test.go
  • controllers/vmware/serviceaccount_controller.go
  • controllers/vmware/serviceaccount_controller_intg_test.go
  • controllers/vmware/serviceaccount_controller_suite_test.go
  • controllers/vmware/serviceaccount_controller_unit_test.go
  • controllers/vmware/servicediscovery_controller.go
  • controllers/vmware/servicediscovery_controller_intg_test.go
  • controllers/vmware/servicediscovery_controller_suite_test.go
  • controllers/vmware/servicediscovery_controller_unit_test.go
  • controllers/vmware/test/controllers_suite_test.go
  • controllers/vmware/test/controllers_test.go
  • controllers/vmware/virtualmachinegroup_controller.go
  • controllers/vmware/virtualmachinegroup_reconciler.go
  • controllers/vmware/virtualmachinegroup_reconciler_test.go
  • controllers/vmware/vspherecluster_reconciler.go
  • controllers/vmware/vspherecluster_reconciler_test.go
  • controllers/vmware/vspheremachinetemplate_controller.go
  • controllers/vmware/vspheremachinetemplate_controller_test.go
  • controllers/vspherecluster_controller.go
  • controllers/vspherecluster_reconciler.go
  • controllers/vspherecluster_reconciler_test.go
  • controllers/vsphereclusteridentity_controller.go
  • controllers/vsphereclusteridentity_controller_test.go
  • controllers/vspheredeploymentzone_controller.go
  • controllers/vspheredeploymentzone_controller_domain.go
  • controllers/vspheredeploymentzone_controller_domain_test.go
  • controllers/vspheredeploymentzone_controller_test.go
  • controllers/vspheremachine_controller.go
  • controllers/vspheremachine_controller_test.go
  • controllers/vspherevm_controller.go
  • controllers/vspherevm_controller_test.go
  • controllers/vspherevm_ipaddress_reconciler.go
  • controllers/vspherevm_ipaddress_reconciler_test.go
  • docs/gpu-pci.md
  • docs/gpu-vgpu.md
  • feature/feature.go
  • go.mod
  • hack/e2e.sh
  • hack/ensure-go.sh
  • hack/gogcflags.sh
  • hack/tools/boskosctl/main.go
  • hack/tools/pkg/janitor/janitor.go
  • hack/version.sh
  • internal/clusterclass/variables.go
  • internal/test/helpers/envtest.go
  • internal/test/helpers/vcsim/model.go
  • internal/test/helpers/vmware/intg_test_context.go
  • internal/test/helpers/vmware/unit_test_context.go
  • internal/webhooks/doc.go
  • internal/webhooks/vmware/vspherecluster.go
  • internal/webhooks/vmware/vspherecluster_test.go
  • internal/webhooks/vmware/vspheremachine.go
  • internal/webhooks/vmware/vspheremachine_test.go
  • internal/webhooks/vmware/vspheremachinetemplate.go
  • internal/webhooks/vmware/vspheremachinetemplate_test.go
  • internal/webhooks/vsphereclustertemplate.go
  • internal/webhooks/vspheredeploymentzone.go
  • internal/webhooks/vspheredeploymentzone_test.go
  • internal/webhooks/vspherefailuredomain.go
  • internal/webhooks/vspherefailuredomain_test.go
  • internal/webhooks/vspheremachine.go
  • internal/webhooks/vspheremachine_test.go
  • internal/webhooks/vspheremachinetemplate.go
  • internal/webhooks/vspheremachinetemplate_test.go
  • internal/webhooks/vspherevm.go
  • internal/webhooks/vspherevm_test.go
  • main.go
  • metadata.yaml
  • openshift/capi-operator-manifests/default/manifests.yaml
  • openshift/capi-operator-manifests/default/metadata.yaml
💤 Files with no reviewable changes (16)
  • apis/v1alpha3/topology_conversion.go
  • apis/v1alpha3/networkdevicespec_conversion.go
  • apis/v1alpha3/conversion_test.go
  • apis/v1alpha3/groupversion_info.go
  • apis/v1alpha3/types.go
  • apis/v1alpha3/vspherecluster_types.go
  • apis/v1alpha3/vspheredeploymentzone_conversion.go
  • apis/v1alpha3/vendored_cluster_api.go
  • apis/v1alpha3/cloudprovider_encoding.go
  • apis/v1alpha3/vsphereclusteridentity_types.go
  • apis/v1alpha3/cloudprovider_encoding_test.go
  • apis/v1alpha3/conversion.go
  • apis/v1alpha3/vspherecluster_conversion.go
  • apis/v1alpha3/cloudprovider_types.go
  • apis/v1alpha3/doc.go
  • apis/v1alpha3/vsphereclusteridentity_conversion.go

Comment on lines +384 to +386
if src.Spec.BootstrapRef != nil {
dst.Spec.BootstrapRef.Name = src.Spec.BootstrapRef.Name
}
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 | 🏗️ Heavy lift

Preserve the full legacy BootstrapRef, not just its name.

v1beta1 exposes BootstrapRef as a provider-specific ObjectReference, but this conversion keeps only Name and recreates it as Secret/v1 in the VM namespace on the way back. Any non-Secret or cross-namespace legacy ref will change meaning after a round-trip through the hub.

Also applies to: 455-461

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@api/govmomi/v1beta1/conversion.go` around lines 384 - 386, The conversion
currently copies only src.Spec.BootstrapRef.Name into dst.Spec.BootstrapRef,
which loses kind/namespace/apiVersion and can misrepresent non-Secret or
cross-namespace refs; change the conversion to preserve the entire
ObjectReference by copying the whole src.Spec.BootstrapRef into
dst.Spec.BootstrapRef (e.g., assign or deep-copy all fields rather than only
Name) so kind/namespace/apiVersion/UID are retained; apply the same fix to the
analogous conversion site referenced around the other block (lines 455-461) that
also only copies Name.

// given VM
// +kubebuilder:validation:MinProperties=1
type VirtualMachineResourceShares struct {
// cpu is the number of spu shares to assign to the VM
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

Typo in comment: "spu" should be "cpu".

The comment states "cpu is the number of spu shares" but should say "cpu shares".

-	// cpu is the number of spu shares to assign to the VM
+	// cpu is the number of cpu shares to assign to the VM
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// cpu is the number of spu shares to assign to the VM
// cpu is the number of cpu shares to assign to the VM
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@api/govmomi/v1beta1/types.go` at line 326, Fix the typo in the comment
describing the cpu field: update the comment text that currently reads "cpu is
the number of spu shares to assign to the VM" to "cpu is the number of cpu
shares to assign to the VM" so the comment correctly references cpu shares for
the cpu field in types.go.

Comment on lines +492 to +494
// Gateway4 is the IPv4 gateway used by this device.
// +optional
Gateway6 string `json:"gateway6,omitempty"`
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

Comment incorrectly describes Gateway6 as IPv4.

The comment is copy-pasted from Gateway4 but this field is for IPv6.

-	// Gateway4 is the IPv4 gateway used by this device.
+	// Gateway6 is the IPv6 gateway used by this device.
 	// +optional
 	Gateway6 string `json:"gateway6,omitempty"`
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// Gateway4 is the IPv4 gateway used by this device.
// +optional
Gateway6 string `json:"gateway6,omitempty"`
// Gateway6 is the IPv6 gateway used by this device.
// +optional
Gateway6 string `json:"gateway6,omitempty"`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@api/govmomi/v1beta1/types.go` around lines 492 - 494, The struct field
Gateway6 currently has a copy-pasted comment saying "Gateway4 is the IPv4
gateway used by this device." Update the comment for Gateway6 to correctly
describe it as the IPv6 gateway (e.g., "Gateway6 is the IPv6 gateway used by
this device.") so the docstring matches the field name Gateway6 in the types.go
struct.

Comment on lines +259 to +262
// customVMXKeys is a dictionary of advanced VMX options that can be set on VM
// Defaults to empty map
// +optional
CustomVMXKeys map[string]string `json:"customVMXKeys,omitempty"`
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

CustomVMXKeys conflicts with the enabled nomaps API lint.

kubeapilinter is enabled for api/**, and the only current nomaps carve-outs in this PR are the supervisor capacity fields. Adding a brand-new map[string]string here will either fail lint or force an immediate exception on a public v1beta2 API. Prefer a list of key/value entries if this needs to be user-facing.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@api/govmomi/v1beta2/types.go` around lines 259 - 262, CustomVMXKeys currently
defined as map[string]string violates the enabled nomaps lint; replace it with a
slice of key/value entry structs (e.g., type CustomVMXKey struct { Key string
`json:"key"` Value string `json:"value"` } and change CustomVMXKeys to
[]CustomVMXKey) in the same types.go, keep the json tags and +optional marker on
the field, and update any code that constructs/reads CustomVMXKeys
(marshal/unmarshal, validation, defaulting, and any callers referencing
CustomVMXKeys by map) to use the slice of entries instead.

Comment on lines +430 to +432
// spec is the specification of the desired behavior of the machine.
// +optional
Spec VSphereMachineSpec `json:"spec,omitzero"`
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

Require template.spec in the schema.

Line 432 makes the nested machine spec optional, so a VSphereMachineTemplate can pass validation without any actual machine configuration and only fail later during reconciliation.

Suggested fix
 	// spec is the specification of the desired behavior of the machine.
-	// +optional
-	Spec VSphereMachineSpec `json:"spec,omitempty,omitzero"`
+	// +required
+	Spec VSphereMachineSpec `json:"spec,omitzero"`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@api/govmomi/v1beta2/types.go` around lines 430 - 432, The Spec field on the
VSphereMachineTemplate currently allows omission (it has the +optional marker
and json:"spec,omitzero"), so make the nested machine spec required by removing
the +optional comment and the omitzero tag: update the Spec field declaration
for VSphereMachineTemplate (Spec VSphereMachineSpec) to remove the +optional
marker and use a plain json:"spec" tag (or another non-omitempty form) so
validation requires Spec to be present.

Comment on lines +137 to +154
// IsDefined returns true if the NSXVPC is defined.
func (r *NSXVPC) IsDefined() bool {
return !reflect.DeepEqual(r, &NSXVPC{})
}

// Network defines the network configuration for the cluster with different network providers.
// +kubebuilder:validation:XValidation:rule="has(self.nsxVPC) == has(oldSelf.nsxVPC)",message="field 'nsxVPC' cannot be added or removed after creation"
// +kubebuilder:validation:MinProperties=1
type Network struct {
// nsxVPC defines the configuration when the network provider is NSX-VPC.
// +optional
NSXVPC NSXVPC `json:"nsxVPC,omitempty,omitzero"`
}

// IsDefined returns true if the Network is defined.
func (r *Network) IsDefined() bool {
return !reflect.DeepEqual(r, &Network{})
}
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

Make IsDefined return false for nil configs.

Like the v1beta2 version, these helpers treat a nil receiver as defined. That will misclassify omitted optional network config if a caller invokes (*NSXVPC)(nil).IsDefined() or (*Network)(nil).IsDefined().

Suggested fix
 func (r *NSXVPC) IsDefined() bool {
-	return !reflect.DeepEqual(r, &NSXVPC{})
+	return r != nil && !reflect.DeepEqual(*r, NSXVPC{})
 }
@@
 func (r *Network) IsDefined() bool {
-	return !reflect.DeepEqual(r, &Network{})
+	return r != nil && !reflect.DeepEqual(*r, Network{})
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// IsDefined returns true if the NSXVPC is defined.
func (r *NSXVPC) IsDefined() bool {
return !reflect.DeepEqual(r, &NSXVPC{})
}
// Network defines the network configuration for the cluster with different network providers.
// +kubebuilder:validation:XValidation:rule="has(self.nsxVPC) == has(oldSelf.nsxVPC)",message="field 'nsxVPC' cannot be added or removed after creation"
// +kubebuilder:validation:MinProperties=1
type Network struct {
// nsxVPC defines the configuration when the network provider is NSX-VPC.
// +optional
NSXVPC NSXVPC `json:"nsxVPC,omitempty,omitzero"`
}
// IsDefined returns true if the Network is defined.
func (r *Network) IsDefined() bool {
return !reflect.DeepEqual(r, &Network{})
}
// IsDefined returns true if the NSXVPC is defined.
func (r *NSXVPC) IsDefined() bool {
return r != nil && !reflect.DeepEqual(*r, NSXVPC{})
}
// Network defines the network configuration for the cluster with different network providers.
// +kubebuilder:validation:XValidation:rule="has(self.nsxVPC) == has(oldSelf.nsxVPC)",message="field 'nsxVPC' cannot be added or removed after creation"
// +kubebuilder:validation:MinProperties=1
type Network struct {
// nsxVPC defines the configuration when the network provider is NSX-VPC.
// +optional
NSXVPC NSXVPC `json:"nsxVPC,omitempty,omitzero"`
}
// IsDefined returns true if the Network is defined.
func (r *Network) IsDefined() bool {
return r != nil && !reflect.DeepEqual(*r, Network{})
}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@api/supervisor/v1beta1/vspherecluster_types.go` around lines 137 - 154, The
IsDefined helpers incorrectly treat a nil receiver as defined; update
NSXVPC.IsDefined and Network.IsDefined to first check for a nil receiver (e.g.,
if r == nil { return false }) and only then perform the existing
reflect.DeepEqual check to the zero-value instance so that
(*NSXVPC)(nil).IsDefined() and (*Network)(nil).IsDefined() return false.

Comment on lines +197 to +220
// kind of the remediation template.
// kind must consist of alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character.
// +required
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:MaxLength=63
// +kubebuilder:validation:Pattern=`^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$`
Kind string `json:"kind,omitempty"`

// name of the remediation template.
// name must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character.
// +required
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:MaxLength=253
// +kubebuilder:validation:Pattern=`^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$`
Name string `json:"name,omitempty"`

// apiVersion of the remediation template.
// apiVersion must be fully qualified domain name followed by / and a version.
// NOTE: This field must be kept in sync with the APIVersion of the remediation template.
// +required
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:MaxLength=317
// +kubebuilder:validation:Pattern=`^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[a-z]([-a-z0-9]*[a-z0-9])?$`
APIVersion string `json:"apiVersion,omitempty"`
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

Documentation comments reference "remediation template" instead of network objects.

The doc comments for Kind, Name, and APIVersion fields in InterfaceNetworkReference incorrectly reference "remediation template" - this appears to be copy-paste from another type. These should describe network object references instead.

📝 Proposed fix for documentation
 // InterfaceNetworkReference describes a reference to another object in the same
 // namespace as the referrer.
 type InterfaceNetworkReference struct {
-	// kind of the remediation template.
+	// kind of the network object.
 	// kind must consist of alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character.
 	// +required
 	// +kubebuilder:validation:MinLength=1
 	// +kubebuilder:validation:MaxLength=63
 	// +kubebuilder:validation:Pattern=`^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$`
 	Kind string `json:"kind,omitempty"`

-	// name of the remediation template.
+	// name of the network object.
 	// name must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character.
 	// +required
 	// +kubebuilder:validation:MinLength=1
 	// +kubebuilder:validation:MaxLength=253
 	// +kubebuilder:validation:Pattern=`^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$`
 	Name string `json:"name,omitempty"`

-	// apiVersion of the remediation template.
-	// apiVersion must be fully qualified domain name followed by / and a version.
-	// NOTE: This field must be kept in sync with the APIVersion of the remediation template.
+	// apiVersion of the network object.
+	// apiVersion must be a fully qualified domain name followed by / and a version.
 	// +required
 	// +kubebuilder:validation:MinLength=1
 	// +kubebuilder:validation:MaxLength=317
 	// +kubebuilder:validation:Pattern=`^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[a-z]([-a-z0-9]*[a-z0-9])?$`
 	APIVersion string `json:"apiVersion,omitempty"`
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// kind of the remediation template.
// kind must consist of alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character.
// +required
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:MaxLength=63
// +kubebuilder:validation:Pattern=`^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$`
Kind string `json:"kind,omitempty"`
// name of the remediation template.
// name must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character.
// +required
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:MaxLength=253
// +kubebuilder:validation:Pattern=`^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$`
Name string `json:"name,omitempty"`
// apiVersion of the remediation template.
// apiVersion must be fully qualified domain name followed by / and a version.
// NOTE: This field must be kept in sync with the APIVersion of the remediation template.
// +required
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:MaxLength=317
// +kubebuilder:validation:Pattern=`^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[a-z]([-a-z0-9]*[a-z0-9])?$`
APIVersion string `json:"apiVersion,omitempty"`
// kind of the network object.
// kind must consist of alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character.
// +required
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:MaxLength=63
// +kubebuilder:validation:Pattern=`^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$`
Kind string `json:"kind,omitempty"`
// name of the network object.
// name must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character.
// +required
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:MaxLength=253
// +kubebuilder:validation:Pattern=`^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$`
Name string `json:"name,omitempty"`
// apiVersion of the network object.
// apiVersion must be a fully qualified domain name followed by / and a version.
// +required
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:MaxLength=317
// +kubebuilder:validation:Pattern=`^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[a-z]([-a-z0-9]*[a-z0-9])?$`
APIVersion string `json:"apiVersion,omitempty"`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@api/supervisor/v1beta1/vspheremachine_types.go` around lines 197 - 220,
Update the doc comments on the InterfaceNetworkReference fields Kind, Name, and
APIVersion to describe a network object reference instead of a "remediation
template": replace every occurrence of "remediation template" in the comments
for Kind, Name, and APIVersion with text indicating they refer to the network
object being referenced (e.g., "network object" or "network resource"), preserve
the existing validation/kubebuilder tags and NOTE about APIVersion being kept in
sync with the referenced object's APIVersion, and ensure the
examples/constraints in the comments still make sense for network object naming
and API versioning.

Comment on lines +139 to +156
// IsDefined returns true if the NSXVPC is defined.
func (r *NSXVPC) IsDefined() bool {
return !reflect.DeepEqual(r, &NSXVPC{})
}

// Network defines the network configuration for the cluster with different network providers.
// +kubebuilder:validation:XValidation:rule="has(self.nsxVPC) == has(oldSelf.nsxVPC)",message="field 'nsxVPC' cannot be added or removed after creation"
// +kubebuilder:validation:MinProperties=1
type Network struct {
// nsxVPC defines the configuration when the network provider is NSX-VPC.
// +optional
NSXVPC NSXVPC `json:"nsxVPC,omitempty,omitzero"`
}

// IsDefined returns true if the Network is defined.
func (r *Network) IsDefined() bool {
return !reflect.DeepEqual(r, &Network{})
}
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

Handle nil receivers in IsDefined.

Both helpers currently return true for a nil receiver because reflect.DeepEqual(nil, &NSXVPC{}) / reflect.DeepEqual(nil, &Network{}) is false. Any caller using these on optional pointers will treat an omitted config as present.

Suggested fix
 func (r *NSXVPC) IsDefined() bool {
-	return !reflect.DeepEqual(r, &NSXVPC{})
+	return r != nil && !reflect.DeepEqual(*r, NSXVPC{})
 }
@@
 func (r *Network) IsDefined() bool {
-	return !reflect.DeepEqual(r, &Network{})
+	return r != nil && !reflect.DeepEqual(*r, Network{})
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@api/supervisor/v1beta2/vspherecluster_types.go` around lines 139 - 156, The
IsDefined methods for NSXVPC and Network incorrectly report a nil receiver as
defined; update both methods (NSXVPC.IsDefined and Network.IsDefined) to first
check if the receiver is nil and return false, then proceed with the existing
reflect.DeepEqual comparison to an empty literal so omitted (nil) configs are
treated as undefined.

Comment on lines +83 to +85
func (r *VSphereMachineNetworkDNSStatus) IsDefined() bool {
return !reflect.DeepEqual(r, &VSphereMachineNetworkDNSStatus{})
}
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

IsDefined() should return false for nil receivers.

All current implementations treat nil as defined (true). Add a nil guard first so undefined pointers are handled correctly.

Suggested fix
 func (r *VSphereMachineNetworkDNSStatus) IsDefined() bool {
+	if r == nil {
+		return false
+	}
 	return !reflect.DeepEqual(r, &VSphereMachineNetworkDNSStatus{})
 }
@@
 func (r *VSphereMachineNetworkDHCPOptionsStatus) IsDefined() bool {
+	if r == nil {
+		return false
+	}
 	return !reflect.DeepEqual(r, &VSphereMachineNetworkDHCPOptionsStatus{})
 }
@@
 func (r *VSphereMachineNetworkDHCPStatus) IsDefined() bool {
+	if r == nil {
+		return false
+	}
 	return !reflect.DeepEqual(r, &VSphereMachineNetworkDHCPStatus{})
 }
@@
 func (r *VSphereMachineNetworkInterfaceIPStatus) IsDefined() bool {
+	if r == nil {
+		return false
+	}
 	return !reflect.DeepEqual(r, &VSphereMachineNetworkInterfaceIPStatus{})
 }
@@
 func (r *VSphereMachineNetworkStatus) IsDefined() bool {
+	if r == nil {
+		return false
+	}
 	return !reflect.DeepEqual(r, &VSphereMachineNetworkStatus{})
 }

Also applies to: 128-130, 149-151, 228-230, 285-287

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@api/supervisor/v1beta2/vspheremachinenetworkstatus_types.go` around lines 83
- 85, The IsDefined methods currently return true for nil receivers; add a
nil-check at the start of each IsDefined (e.g.,
VSphereMachineNetworkDNSStatus.IsDefined) and return false if the receiver is
nil, then proceed with the existing DeepEqual check — apply the same nil-guard
pattern to the other IsDefined implementations in this file as indicated (the
ones at the other noted ranges).

Comment thread README.md
| v1.14.x | Standard support period | in maintenance mode when v1.16.0 will be released, EOL when v1.17.0 will be released |
| v1.13.x | Standard support period | in maintenance mode when v1.15.0 will be released, EOL when v1.16.0 will be released |
| v1.12.x | Maintenance mode | Maintenance mode v1.14.0 release date, EOL when v1.15.0 will be released |
| v1.13.x | Maintenance mode | Maintenance mode v1.15.0 release date, EOL when v1.16.0 will be released |
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

Fix wording in Line 59 support status text.

Line 59 is missing “since,” which makes the sentence read incorrectly.

✏️ Suggested fix
-| v1.13.x       | Maintenance mode        | Maintenance mode v1.15.0 release date, EOL when v1.16.0 will be released             |
+| v1.13.x       | Maintenance mode        | In maintenance mode since v1.15.0 release date, EOL when v1.16.0 is released          |
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
| v1.13.x | Maintenance mode | Maintenance mode v1.15.0 release date, EOL when v1.16.0 will be released |
| v1.13.x | Maintenance mode | In maintenance mode since v1.15.0 release date, EOL when v1.16.0 is released |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` at line 59, Update the table row text in README.md (the row
containing "v1.13.x | Maintenance mode | Maintenance mode v1.15.0 release date,
EOL when v1.16.0 will be released") to include the word "since" before "v1.15.0"
so the cell reads "Maintenance mode since v1.15.0 release date, EOL when v1.16.0
will be released"; edit the table cell content accordingly to preserve spacing
and alignment.

@openshift-ci openshift-ci Bot requested review from nrb and theobarberbany April 30, 2026 12:22
@openshift-ci
Copy link
Copy Markdown

openshift-ci Bot commented Apr 30, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: cloud-team-rebase-bot[bot]
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

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

Labels

needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test.

Projects

None yet

Development

Successfully merging this pull request may close these issues.