diff --git a/bootstrap/kubeadm/internal/builder/builders.go b/bootstrap/kubeadm/internal/builder/builders.go index f123a69f57b2..7502538a4a88 100644 --- a/bootstrap/kubeadm/internal/builder/builders.go +++ b/bootstrap/kubeadm/internal/builder/builders.go @@ -67,16 +67,14 @@ func (k *KubeadmConfigBuilder) Unstructured() *unstructured.Unstructured { if err != nil { panic(err) } - return &unstructured.Unstructured{Object: rawMap} + u := &unstructured.Unstructured{Object: rawMap} + u.SetGroupVersionKind(bootstrapv1.GroupVersion.WithKind("KubeadmConfig")) + return u } // Build produces a KubeadmConfig from the variable in the KubeadmConfigBuilder. func (k *KubeadmConfigBuilder) Build() *bootstrapv1.KubeadmConfig { config := &bootstrapv1.KubeadmConfig{ - TypeMeta: metav1.TypeMeta{ - Kind: "KubeadmConfig", - APIVersion: bootstrapv1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Namespace: k.namespace, Name: k.name, diff --git a/bootstrap/kubeadm/internal/controllers/kubeadmconfig_controller_test.go b/bootstrap/kubeadm/internal/controllers/kubeadmconfig_controller_test.go index 6db9b13b544a..449c6fee2288 100644 --- a/bootstrap/kubeadm/internal/controllers/kubeadmconfig_controller_test.go +++ b/bootstrap/kubeadm/internal/controllers/kubeadmconfig_controller_test.go @@ -188,7 +188,7 @@ func TestKubeadmConfigReconciler_TestSecretOwnerReferenceReconciliation(t *testi controllerOwner := metav1.GetControllerOf(actual) g.Expect(controllerOwner).To(Not(BeNil())) - g.Expect(controllerOwner.Kind).To(Equal(config.Kind)) + g.Expect(controllerOwner.Kind).To(Equal("KubeadmConfig")) g.Expect(controllerOwner.Name).To(Equal(config.Name)) }) @@ -200,7 +200,7 @@ func TestKubeadmConfigReconciler_TestSecretOwnerReferenceReconciliation(t *testi controllerOwner := metav1.GetControllerOf(actual) g.Expect(controllerOwner).To(Not(BeNil())) - g.Expect(controllerOwner.Kind).To(Equal(config.Kind)) + g.Expect(controllerOwner.Kind).To(Equal("KubeadmConfig")) g.Expect(controllerOwner.Name).To(Equal(config.Name)) }) t.Run("non-KubeadmConfig controller OwnerReference is replaced", func(*testing.T) { @@ -224,7 +224,7 @@ func TestKubeadmConfigReconciler_TestSecretOwnerReferenceReconciliation(t *testi controllerOwner := metav1.GetControllerOf(actual) g.Expect(controllerOwner).To(Not(BeNil())) - g.Expect(controllerOwner.Kind).To(Equal(config.Kind)) + g.Expect(controllerOwner.Kind).To(Equal("KubeadmConfig")) g.Expect(controllerOwner.Name).To(Equal(config.Name)) }) } diff --git a/bootstrap/util/configowner_test.go b/bootstrap/util/configowner_test.go index a2dc6eaae90e..c2d157ed9ef2 100644 --- a/bootstrap/util/configowner_test.go +++ b/bootstrap/util/configowner_test.go @@ -187,10 +187,6 @@ func TestHasNodeRefs(t *testing.T) { t.Run("should return false if there is no nodeRef", func(t *testing.T) { g := NewWithT(t) machine := &clusterv1.Machine{ - TypeMeta: metav1.TypeMeta{ - APIVersion: clusterv1.GroupVersion.String(), - Kind: "Machine", - }, ObjectMeta: metav1.ObjectMeta{ Name: "machine-name", Namespace: metav1.NamespaceDefault, @@ -209,10 +205,6 @@ func TestHasNodeRefs(t *testing.T) { t.Run("should return true if there is a nodeRef for Machine", func(t *testing.T) { g := NewWithT(t) machine := &clusterv1.Machine{ - TypeMeta: metav1.TypeMeta{ - APIVersion: clusterv1.GroupVersion.String(), - Kind: "Machine", - }, ObjectMeta: metav1.ObjectMeta{ Name: "machine-name", Namespace: metav1.NamespaceDefault, @@ -242,10 +234,6 @@ func TestHasNodeRefs(t *testing.T) { machinePools := []clusterv1.MachinePool{ { // No replicas specified (default is 1). No nodeRefs either. - TypeMeta: metav1.TypeMeta{ - APIVersion: clusterv1.GroupVersion.String(), - Kind: "MachinePool", - }, ObjectMeta: metav1.ObjectMeta{ Namespace: metav1.NamespaceDefault, Name: "machine-pool-name", @@ -253,10 +241,6 @@ func TestHasNodeRefs(t *testing.T) { }, { // 1 replica but no nodeRefs - TypeMeta: metav1.TypeMeta{ - APIVersion: clusterv1.GroupVersion.String(), - Kind: "MachinePool", - }, ObjectMeta: metav1.ObjectMeta{ Namespace: metav1.NamespaceDefault, Name: "machine-pool-name", @@ -267,10 +251,6 @@ func TestHasNodeRefs(t *testing.T) { }, { // 2 replicas but only 1 nodeRef - TypeMeta: metav1.TypeMeta{ - APIVersion: clusterv1.GroupVersion.String(), - Kind: "MachinePool", - }, ObjectMeta: metav1.ObjectMeta{ Namespace: metav1.NamespaceDefault, Name: "machine-pool-name", @@ -308,10 +288,6 @@ func TestHasNodeRefs(t *testing.T) { machinePools := []clusterv1.MachinePool{ { // 1 replica (default) and 1 nodeRef - TypeMeta: metav1.TypeMeta{ - APIVersion: clusterv1.GroupVersion.String(), - Kind: "MachinePool", - }, ObjectMeta: metav1.ObjectMeta{ Namespace: metav1.NamespaceDefault, Name: "machine-pool-name", @@ -328,10 +304,6 @@ func TestHasNodeRefs(t *testing.T) { }, { // 2 replicas and nodeRefs - TypeMeta: metav1.TypeMeta{ - APIVersion: clusterv1.GroupVersion.String(), - Kind: "MachinePool", - }, ObjectMeta: metav1.ObjectMeta{ Namespace: metav1.NamespaceDefault, Name: "machine-pool-name", @@ -356,10 +328,6 @@ func TestHasNodeRefs(t *testing.T) { }, { // 0 replicas and 0 nodeRef - TypeMeta: metav1.TypeMeta{ - APIVersion: clusterv1.GroupVersion.String(), - Kind: "MachinePool", - }, ObjectMeta: metav1.ObjectMeta{ Namespace: metav1.NamespaceDefault, Name: "machine-pool-name", @@ -372,12 +340,11 @@ func TestHasNodeRefs(t *testing.T) { for i := range machinePools { content, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&machinePools[i]) - if err != nil { - g.Fail(err.Error()) - } - unstructuredOwner := unstructured.Unstructured{} + g.Expect(err).ToNot(HaveOccurred()) + unstructuredOwner := &unstructured.Unstructured{} unstructuredOwner.SetUnstructuredContent(content) - co := ConfigOwner{&unstructuredOwner} + unstructuredOwner.SetGroupVersionKind(clusterv1.GroupVersion.WithKind("MachinePool")) + co := ConfigOwner{unstructuredOwner} result := co.HasNodeRefs() g.Expect(result).To(BeTrue()) diff --git a/controllers/external/tracker_test.go b/controllers/external/tracker_test.go index e24d69296731..92966d2c82bb 100644 --- a/controllers/external/tracker_test.go +++ b/controllers/external/tracker_test.go @@ -22,7 +22,6 @@ import ( "github.com/go-logr/logr" . "github.com/onsi/gomega" "github.com/pkg/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/cache/informertest" @@ -83,12 +82,7 @@ func TestWatchMultipleTimes(t *testing.T) { ctrl := &watchCountController{} tracker := ObjectTracker{Controller: ctrl, Scheme: runtime.NewScheme(), Cache: &informertest.FakeInformers{}, PredicateLogger: ptr.To(logr.New(log.NullLogSink{}))} - obj := &clusterv1.Cluster{ - TypeMeta: metav1.TypeMeta{ - Kind: "Cluster", - APIVersion: clusterv1.GroupVersion.Version, - }, - } + obj := &clusterv1.Cluster{} err := tracker.Watch(logger, obj, nil) g.Expect(err).ToNot(HaveOccurred()) g.Expect(ctrl.count).Should(Equal(1)) diff --git a/controlplane/kubeadm/internal/cluster_test.go b/controlplane/kubeadm/internal/cluster_test.go index 6838fdd824e4..367688b49480 100644 --- a/controlplane/kubeadm/internal/cluster_test.go +++ b/controlplane/kubeadm/internal/cluster_test.go @@ -303,7 +303,6 @@ func machineListForTestGetMachinesForCluster() *clusterv1.MachineList { } machine := func(name string) clusterv1.Machine { return clusterv1.Machine{ - TypeMeta: metav1.TypeMeta{}, ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: metav1.NamespaceDefault, diff --git a/controlplane/kubeadm/internal/controllers/controller_test.go b/controlplane/kubeadm/internal/controllers/controller_test.go index 6f486ae4afc5..f23e1956c23e 100644 --- a/controlplane/kubeadm/internal/controllers/controller_test.go +++ b/controlplane/kubeadm/internal/controllers/controller_test.go @@ -608,10 +608,6 @@ func TestKubeadmControlPlaneReconciler_adoption(t *testing.T) { }, } cfg := &bootstrapv1.KubeadmConfig{ - TypeMeta: metav1.TypeMeta{ - APIVersion: bootstrapv1.GroupVersion.String(), - Kind: "KubeadmConfig", - }, ObjectMeta: metav1.ObjectMeta{ Namespace: cluster.Namespace, Name: name, @@ -1749,10 +1745,6 @@ func TestKubeadmControlPlaneReconciler_syncMachines(t *testing.T) { Users: []bootstrapv1.User{{Name: "test-user"}}, } existingKubeadmConfig := &bootstrapv1.KubeadmConfig{ - TypeMeta: metav1.TypeMeta{ - Kind: "KubeadmConfig", - APIVersion: bootstrapv1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "existing-kubeadmconfig", Namespace: namespace.Name, @@ -1778,10 +1770,6 @@ func TestKubeadmControlPlaneReconciler_syncMachines(t *testing.T) { // Existing Machine to validate in-place mutation fd := "fd1" inPlaceMutatingMachine := &clusterv1.Machine{ - TypeMeta: metav1.TypeMeta{ - APIVersion: clusterv1.GroupVersion.String(), - Kind: "Machine", - }, ObjectMeta: metav1.ObjectMeta{ Name: "existing-machine", Namespace: namespace.Name, @@ -1815,10 +1803,6 @@ func TestKubeadmControlPlaneReconciler_syncMachines(t *testing.T) { // Existing machine that is in deleting state deletingMachine := &clusterv1.Machine{ - TypeMeta: metav1.TypeMeta{ - APIVersion: clusterv1.GroupVersion.String(), - Kind: "Machine", - }, ObjectMeta: metav1.ObjectMeta{ Name: "deleting-machine", Namespace: namespace.Name, @@ -1851,10 +1835,6 @@ func TestKubeadmControlPlaneReconciler_syncMachines(t *testing.T) { // Existing machine that has a InfrastructureRef which does not exist. nilInfraMachineMachine := &clusterv1.Machine{ - TypeMeta: metav1.TypeMeta{ - APIVersion: clusterv1.GroupVersion.String(), - Kind: "Machine", - }, ObjectMeta: metav1.ObjectMeta{ Name: "nil-infra-machine-machine", Namespace: namespace.Name, @@ -1880,10 +1860,6 @@ func TestKubeadmControlPlaneReconciler_syncMachines(t *testing.T) { } kcp := &controlplanev1.KubeadmControlPlane{ - TypeMeta: metav1.TypeMeta{ - Kind: "KubeadmControlPlane", - APIVersion: controlplanev1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ UID: types.UID("abc-123-control-plane"), Name: "existing-kcp", @@ -3982,10 +3958,6 @@ func createClusterWithControlPlane(namespace string) (*clusterv1.Cluster, *contr } kcp := &controlplanev1.KubeadmControlPlane{ - TypeMeta: metav1.TypeMeta{ - APIVersion: controlplanev1.GroupVersion.String(), - Kind: "KubeadmControlPlane", - }, ObjectMeta: metav1.ObjectMeta{ Name: kcpName, Namespace: namespace, @@ -4050,10 +4022,6 @@ func setKCPHealthy(kcp *controlplanev1.KubeadmControlPlane) { func createMachineNodePair(name string, cluster *clusterv1.Cluster, kcp *controlplanev1.KubeadmControlPlane, ready bool) (*clusterv1.Machine, *corev1.Node) { machine := &clusterv1.Machine{ - TypeMeta: metav1.TypeMeta{ - Kind: "Machine", - APIVersion: clusterv1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Namespace: cluster.Namespace, Name: name, @@ -4115,10 +4083,6 @@ func setMachineHealthy(m *clusterv1.Machine) { // newCluster return a CAPI cluster object. func newCluster(namespacedName *types.NamespacedName) *clusterv1.Cluster { return &clusterv1.Cluster{ - TypeMeta: metav1.TypeMeta{ - Kind: "Cluster", - APIVersion: clusterv1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Namespace: namespacedName.Namespace, Name: namespacedName.Name, diff --git a/controlplane/kubeadm/internal/controllers/helpers_test.go b/controlplane/kubeadm/internal/controllers/helpers_test.go index 595626bcfea2..7cf6b88bcc52 100644 --- a/controlplane/kubeadm/internal/controllers/helpers_test.go +++ b/controlplane/kubeadm/internal/controllers/helpers_test.go @@ -51,10 +51,6 @@ func TestReconcileKubeconfigEmptyAPIEndpoints(t *testing.T) { g := NewWithT(t) cluster := &clusterv1.Cluster{ - TypeMeta: metav1.TypeMeta{ - Kind: "Cluster", - APIVersion: clusterv1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: metav1.NamespaceDefault, @@ -65,10 +61,6 @@ func TestReconcileKubeconfigEmptyAPIEndpoints(t *testing.T) { } kcp := &controlplanev1.KubeadmControlPlane{ - TypeMeta: metav1.TypeMeta{ - Kind: "KubeadmControlPlane", - APIVersion: controlplanev1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: metav1.NamespaceDefault, @@ -107,10 +99,6 @@ func TestReconcileKubeconfigMissingCACertificate(t *testing.T) { g := NewWithT(t) cluster := &clusterv1.Cluster{ - TypeMeta: metav1.TypeMeta{ - Kind: "Cluster", - APIVersion: clusterv1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: metav1.NamespaceDefault, @@ -121,10 +109,6 @@ func TestReconcileKubeconfigMissingCACertificate(t *testing.T) { } kcp := &controlplanev1.KubeadmControlPlane{ - TypeMeta: metav1.TypeMeta{ - Kind: "KubeadmControlPlane", - APIVersion: controlplanev1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: metav1.NamespaceDefault, @@ -162,10 +146,6 @@ func TestReconcileKubeconfigSecretDoesNotAdoptsUserSecrets(t *testing.T) { g := NewWithT(t) cluster := &clusterv1.Cluster{ - TypeMeta: metav1.TypeMeta{ - Kind: "Cluster", - APIVersion: clusterv1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: metav1.NamespaceDefault, @@ -176,10 +156,6 @@ func TestReconcileKubeconfigSecretDoesNotAdoptsUserSecrets(t *testing.T) { } kcp := &controlplanev1.KubeadmControlPlane{ - TypeMeta: metav1.TypeMeta{ - Kind: "KubeadmControlPlane", - APIVersion: controlplanev1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: metav1.NamespaceDefault, @@ -237,10 +213,6 @@ func TestKubeadmControlPlaneReconciler_reconcileKubeconfig(t *testing.T) { g := NewWithT(t) cluster := &clusterv1.Cluster{ - TypeMeta: metav1.TypeMeta{ - Kind: "Cluster", - APIVersion: clusterv1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: metav1.NamespaceDefault, @@ -251,10 +223,6 @@ func TestKubeadmControlPlaneReconciler_reconcileKubeconfig(t *testing.T) { } kcp := &controlplanev1.KubeadmControlPlane{ - TypeMeta: metav1.TypeMeta{ - Kind: "KubeadmControlPlane", - APIVersion: controlplanev1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "foo", Namespace: metav1.NamespaceDefault, @@ -851,10 +819,6 @@ func TestKubeadmControlPlaneReconciler_adoptKubeconfigSecret(t *testing.T) { userProvidedKubeadmConfigSecretOtherOwner.OwnerReferences = []metav1.OwnerReference{otherOwner} kcp := &controlplanev1.KubeadmControlPlane{ - TypeMeta: metav1.TypeMeta{ - Kind: "KubeadmControlPlane", - APIVersion: controlplanev1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "testControlPlane", Namespace: metav1.NamespaceDefault, @@ -871,8 +835,8 @@ func TestKubeadmControlPlaneReconciler_adoptKubeconfigSecret(t *testing.T) { expectedOwnerRef: metav1.OwnerReference{ Name: kcp.Name, UID: kcp.UID, - Kind: kcp.Kind, - APIVersion: kcp.APIVersion, + Kind: "KubeadmControlPlane", + APIVersion: controlplanev1.GroupVersion.String(), Controller: ptr.To(true), BlockOwnerDeletion: ptr.To(true), }, @@ -883,8 +847,8 @@ func TestKubeadmControlPlaneReconciler_adoptKubeconfigSecret(t *testing.T) { expectedOwnerRef: metav1.OwnerReference{ Name: kcp.Name, UID: kcp.UID, - Kind: kcp.Kind, - APIVersion: kcp.APIVersion, + Kind: "KubeadmControlPlane", + APIVersion: controlplanev1.GroupVersion.String(), Controller: ptr.To(true), BlockOwnerDeletion: ptr.To(true), }, diff --git a/controlplane/kubeadm/internal/controllers/status_test.go b/controlplane/kubeadm/internal/controllers/status_test.go index 427dca5f325e..b15a57951ea5 100644 --- a/controlplane/kubeadm/internal/controllers/status_test.go +++ b/controlplane/kubeadm/internal/controllers/status_test.go @@ -1971,10 +1971,6 @@ func TestKubeadmControlPlaneReconciler_updateStatusNoMachines(t *testing.T) { } kcp := &controlplanev1.KubeadmControlPlane{ - TypeMeta: metav1.TypeMeta{ - Kind: "KubeadmControlPlane", - APIVersion: controlplanev1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Namespace: cluster.Namespace, Name: "foo", @@ -2123,10 +2119,6 @@ func TestKubeadmControlPlaneReconciler_updateStatusAllMachinesNotReady(t *testin } kcp := &controlplanev1.KubeadmControlPlane{ - TypeMeta: metav1.TypeMeta{ - Kind: "KubeadmControlPlane", - APIVersion: controlplanev1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Namespace: cluster.Namespace, Name: "foo", @@ -2195,10 +2187,6 @@ func TestKubeadmControlPlaneReconciler_updateStatusAllMachinesReady(t *testing.T } kcp := &controlplanev1.KubeadmControlPlane{ - TypeMeta: metav1.TypeMeta{ - Kind: "KubeadmControlPlane", - APIVersion: controlplanev1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Namespace: cluster.Namespace, Name: "foo", @@ -2274,10 +2262,6 @@ func TestKubeadmControlPlaneReconciler_updateStatusMachinesReadyMixed(t *testing } kcp := &controlplanev1.KubeadmControlPlane{ - TypeMeta: metav1.TypeMeta{ - Kind: "KubeadmControlPlane", - APIVersion: controlplanev1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Namespace: cluster.Namespace, Name: "foo", @@ -2352,10 +2336,6 @@ func TestKubeadmControlPlaneReconciler_machinesCreatedIsIsTrueEvenWhenTheNodesAr } kcp := &controlplanev1.KubeadmControlPlane{ - TypeMeta: metav1.TypeMeta{ - Kind: "KubeadmControlPlane", - APIVersion: controlplanev1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Namespace: cluster.Namespace, Name: "foo", diff --git a/controlplane/kubeadm/internal/workload_cluster_coredns_test.go b/controlplane/kubeadm/internal/workload_cluster_coredns_test.go index 420ba9ab43bf..57396f9e0f9e 100644 --- a/controlplane/kubeadm/internal/workload_cluster_coredns_test.go +++ b/controlplane/kubeadm/internal/workload_cluster_coredns_test.go @@ -64,10 +64,6 @@ func TestUpdateCoreDNS(t *testing.T) { } depl := &appsv1.Deployment{ - TypeMeta: metav1.TypeMeta{ - Kind: "Deployment", - APIVersion: "apps/v1", - }, ObjectMeta: metav1.ObjectMeta{ Name: coreDNSKey, Namespace: metav1.NamespaceSystem, diff --git a/exp/runtime/topologymutation/walker_test.go b/exp/runtime/topologymutation/walker_test.go index fad450a60ef7..412f437329ff 100644 --- a/exp/runtime/topologymutation/walker_test.go +++ b/exp/runtime/topologymutation/walker_test.go @@ -60,6 +60,7 @@ func Test_WalkTemplates(t *testing.T) { } return nil } + // TypeMeta is required here because we convert these objects directly to JSON. kubeadmControlPlaneTemplate := controlplanev1.KubeadmControlPlaneTemplate{ TypeMeta: metav1.TypeMeta{ Kind: "KubeadmControlPlaneTemplate", diff --git a/exp/topology/scope/hookresponsetracker_test.go b/exp/topology/scope/hookresponsetracker_test.go index 797f0b46c36c..e022e2e19863 100644 --- a/exp/topology/scope/hookresponsetracker_test.go +++ b/exp/topology/scope/hookresponsetracker_test.go @@ -21,7 +21,6 @@ import ( "time" . "github.com/onsi/gomega" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtimehooksv1 "sigs.k8s.io/cluster-api/api/runtime/hooks/v1alpha1" runtimecatalog "sigs.k8s.io/cluster-api/exp/runtime/catalog" @@ -166,7 +165,6 @@ func TestHookResponseTracker_IsBlocking(t *testing.T) { } afterClusterUpgradeResponse := &runtimehooksv1.AfterClusterUpgradeResponse{ - TypeMeta: metav1.TypeMeta{}, CommonResponse: runtimehooksv1.CommonResponse{}, } diff --git a/hack/tools/internal/tilt-prepare/main.go b/hack/tools/internal/tilt-prepare/main.go index 9d2971a90492..cc7c2b8e8088 100644 --- a/hack/tools/internal/tilt-prepare/main.go +++ b/hack/tools/internal/tilt-prepare/main.go @@ -947,10 +947,6 @@ func getProviderObj(version *string) func(prefix string, objs []unstructured.Uns } provider := &clusterctlv1.Provider{ - TypeMeta: metav1.TypeMeta{ - Kind: "Provider", - APIVersion: clusterctlv1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: manifestLabel, Namespace: namespace, diff --git a/internal/controllers/cluster/cluster_controller_status_test.go b/internal/controllers/cluster/cluster_controller_status_test.go index 96656ea444ae..59d86077720d 100644 --- a/internal/controllers/cluster/cluster_controller_status_test.go +++ b/internal/controllers/cluster/cluster_controller_status_test.go @@ -3057,11 +3057,6 @@ type fakeClusterOption interface { func fakeCluster(name string, options ...fakeClusterOption) *clusterv1.Cluster { c := &clusterv1.Cluster{ - TypeMeta: metav1.TypeMeta{ - // Note: this is required by ownerRef checks - APIVersion: clusterv1.GroupVersion.String(), - Kind: "Cluster", - }, ObjectMeta: metav1.ObjectMeta{ Name: name, }, diff --git a/internal/controllers/cluster/cluster_controller_test.go b/internal/controllers/cluster/cluster_controller_test.go index 645adb59144d..cca27f1775c0 100644 --- a/internal/controllers/cluster/cluster_controller_test.go +++ b/internal/controllers/cluster/cluster_controller_test.go @@ -557,9 +557,6 @@ func TestClusterReconciler_reconcileDelete(t *testing.T) { func TestClusterReconcilerNodeRef(t *testing.T) { t.Run("machine to cluster", func(t *testing.T) { cluster := &clusterv1.Cluster{ - TypeMeta: metav1.TypeMeta{ - Kind: "Cluster", - }, ObjectMeta: metav1.ObjectMeta{ Name: "test-cluster", Namespace: "test", @@ -569,9 +566,6 @@ func TestClusterReconcilerNodeRef(t *testing.T) { } controlPlaneWithNoderef := &clusterv1.Machine{ - TypeMeta: metav1.TypeMeta{ - Kind: "Machine", - }, ObjectMeta: metav1.ObjectMeta{ Name: "controlPlaneWithNoderef", Namespace: "test", @@ -588,9 +582,6 @@ func TestClusterReconcilerNodeRef(t *testing.T) { }, } controlPlaneWithoutNoderef := &clusterv1.Machine{ - TypeMeta: metav1.TypeMeta{ - Kind: "Machine", - }, ObjectMeta: metav1.ObjectMeta{ Name: "controlPlaneWithoutNoderef", Namespace: "test", @@ -604,9 +595,6 @@ func TestClusterReconcilerNodeRef(t *testing.T) { }, } nonControlPlaneWithNoderef := &clusterv1.Machine{ - TypeMeta: metav1.TypeMeta{ - Kind: "Machine", - }, ObjectMeta: metav1.ObjectMeta{ Name: "nonControlPlaneWitNoderef", Namespace: "test", @@ -622,9 +610,6 @@ func TestClusterReconcilerNodeRef(t *testing.T) { }, } nonControlPlaneWithoutNoderef := &clusterv1.Machine{ - TypeMeta: metav1.TypeMeta{ - Kind: "Machine", - }, ObjectMeta: metav1.ObjectMeta{ Name: "nonControlPlaneWithoutNoderef", Namespace: "test", @@ -795,10 +780,6 @@ func TestFilterOwnedDescendants(t *testing.T) { utilfeature.SetFeatureGateDuringTest(t, feature.Gates, feature.MachinePool, true) c := clusterv1.Cluster{ - TypeMeta: metav1.TypeMeta{ - APIVersion: clusterv1.GroupVersion.String(), - Kind: "Cluster", - }, ObjectMeta: metav1.ObjectMeta{ Name: "c", }, diff --git a/internal/controllers/clusterclass/clusterclass_controller_test.go b/internal/controllers/clusterclass/clusterclass_controller_test.go index a1eef15cf50d..616fc939743c 100644 --- a/internal/controllers/clusterclass/clusterclass_controller_test.go +++ b/internal/controllers/clusterclass/clusterclass_controller_test.go @@ -1219,10 +1219,6 @@ func TestReconciler_extensionConfigToClusterClass(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "runtime1", }, - TypeMeta: metav1.TypeMeta{ - Kind: "ExtensionConfig", - APIVersion: runtimev1.GroupVersion.String(), - }, Spec: runtimev1.ExtensionConfigSpec{ NamespaceSelector: &metav1.LabelSelector{}, }, @@ -1231,10 +1227,6 @@ func TestReconciler_extensionConfigToClusterClass(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: "runtime2", }, - TypeMeta: metav1.TypeMeta{ - Kind: "ExtensionConfig", - APIVersion: runtimev1.GroupVersion.String(), - }, Spec: runtimev1.ExtensionConfigSpec{ NamespaceSelector: &metav1.LabelSelector{}, }, diff --git a/internal/controllers/clusterresourceset/clusterresourceset_controller_test.go b/internal/controllers/clusterresourceset/clusterresourceset_controller_test.go index 8de1785cc837..f9f75dfd18f8 100644 --- a/internal/controllers/clusterresourceset/clusterresourceset_controller_test.go +++ b/internal/controllers/clusterresourceset/clusterresourceset_controller_test.go @@ -686,6 +686,8 @@ metadata: }, ) + // Set GVK because we directly Marshal resourceConfigMap1 to YAML. + resourceConfigMap1.SetGroupVersionKind(corev1.SchemeGroupVersion.WithKind("ConfigMap")) resourceConfigMap1Content, err := yaml.Marshal(resourceConfigMap1) g.Expect(err).ToNot(HaveOccurred()) @@ -705,6 +707,8 @@ metadata: }, ) + // Set GVK because we directly Marshal resourceConfigMap2 to YAML. + resourceConfigMap2.SetGroupVersionKind(corev1.SchemeGroupVersion.WithKind("ConfigMap")) resourceConfigMap2Content, err := yaml.Marshal(resourceConfigMap2) g.Expect(err).ToNot(HaveOccurred()) @@ -825,6 +829,8 @@ metadata: }, ) + // Set GVK because we directly Marshal resourceConfigMap1 to YAML. + resourceConfigMap1.SetGroupVersionKind(corev1.SchemeGroupVersion.WithKind("ConfigMap")) resourceConfigMap1Content, err := yaml.Marshal(resourceConfigMap1) g.Expect(err).ToNot(HaveOccurred()) @@ -836,6 +842,8 @@ metadata: }, ) + // Set GVK because we directly Marshal resourceConfigMapWithMissingNamespace to YAML. + resourceConfigMapWithMissingNamespace.SetGroupVersionKind(corev1.SchemeGroupVersion.WithKind("ConfigMap")) resourceConfigMapMissingNamespaceContent, err := yaml.Marshal(resourceConfigMapWithMissingNamespace) g.Expect(err).ToNot(HaveOccurred()) @@ -946,7 +954,6 @@ metadata: defer teardown(t, g, ns) fakeService := &corev1.Service{ - TypeMeta: metav1.TypeMeta{Kind: "Service", APIVersion: "v1"}, ObjectMeta: metav1.ObjectMeta{ Name: "fake", Namespace: metav1.NamespaceDefault, @@ -1139,10 +1146,6 @@ func configMapHasBeenUpdated(env *envtest.Environment, key client.ObjectKey, new func configMap(name, namespace string, data map[string]string) *corev1.ConfigMap { return &corev1.ConfigMap{ - TypeMeta: metav1.TypeMeta{ - APIVersion: "v1", - Kind: "ConfigMap", - }, ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: namespace, diff --git a/internal/controllers/clusterresourceset/clusterresourceset_helpers_test.go b/internal/controllers/clusterresourceset/clusterresourceset_helpers_test.go index 274991abd48a..409711e5d1d0 100644 --- a/internal/controllers/clusterresourceset/clusterresourceset_helpers_test.go +++ b/internal/controllers/clusterresourceset/clusterresourceset_helpers_test.go @@ -227,7 +227,6 @@ func TestEnsureKubernetesServiceCreated(t *testing.T) { g.Expect(corev1.AddToScheme(scheme)).To(Succeed()) kubernetesAPIServerService := &corev1.Service{ - TypeMeta: metav1.TypeMeta{Kind: "Service", APIVersion: "v1"}, ObjectMeta: metav1.ObjectMeta{ Name: "kubernetes", Namespace: metav1.NamespaceDefault, diff --git a/internal/controllers/extensionconfig/extensionconfig_controller_test.go b/internal/controllers/extensionconfig/extensionconfig_controller_test.go index 0527f990ba69..8f5c7984fb96 100644 --- a/internal/controllers/extensionconfig/extensionconfig_controller_test.go +++ b/internal/controllers/extensionconfig/extensionconfig_controller_test.go @@ -512,10 +512,6 @@ func discoveryHandler(handlerList ...string) func(http.ResponseWriter, *http.Req }) } response := &runtimehooksv1.DiscoveryResponse{ - TypeMeta: metav1.TypeMeta{ - Kind: "DiscoveryResponse", - APIVersion: runtimehooksv1.GroupVersion.String(), - }, CommonResponse: runtimehooksv1.CommonResponse{ Status: runtimehooksv1.ResponseStatusSuccess, }, @@ -534,10 +530,6 @@ func discoveryHandler(handlerList ...string) func(http.ResponseWriter, *http.Req func fakeExtensionConfigForURL(namespace, name, url string) *runtimev1.ExtensionConfig { return &runtimev1.ExtensionConfig{ - TypeMeta: metav1.TypeMeta{ - Kind: "ExtensionConfig", - APIVersion: runtimehooksv1.GroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: namespace, diff --git a/internal/controllers/machine/machine_controller_test.go b/internal/controllers/machine/machine_controller_test.go index e6ecb5c8459c..51aac8bbfdc8 100644 --- a/internal/controllers/machine/machine_controller_test.go +++ b/internal/controllers/machine/machine_controller_test.go @@ -640,7 +640,6 @@ func TestMachineFinalizer(t *testing.T) { func TestMachineOwnerReference(t *testing.T) { bootstrapData := "some valid data" testCluster := &clusterv1.Cluster{ - TypeMeta: metav1.TypeMeta{Kind: "Cluster", APIVersion: clusterv1.GroupVersion.String()}, ObjectMeta: metav1.ObjectMeta{Namespace: metav1.NamespaceDefault, Name: "test-cluster"}, } @@ -744,8 +743,8 @@ func TestMachineOwnerReference(t *testing.T) { m: machineValidCluster, expectedOR: []metav1.OwnerReference{ { - APIVersion: testCluster.APIVersion, - Kind: testCluster.Kind, + APIVersion: clusterv1.GroupVersion.String(), + Kind: "Cluster", Name: testCluster.Name, UID: testCluster.UID, }, @@ -1407,7 +1406,6 @@ func TestRemoveMachineFinalizerAfterDeleteReconcile(t *testing.T) { func TestIsNodeDrainedAllowed(t *testing.T) { testCluster := &clusterv1.Cluster{ - TypeMeta: metav1.TypeMeta{Kind: "Cluster", APIVersion: clusterv1.GroupVersion.String()}, ObjectMeta: metav1.ObjectMeta{Namespace: metav1.NamespaceDefault, Name: "test-cluster"}, } @@ -1972,7 +1970,6 @@ func TestDrainNode_withCaching(t *testing.T) { func TestIsNodeVolumeDetachingAllowed(t *testing.T) { testCluster := &clusterv1.Cluster{ - TypeMeta: metav1.TypeMeta{Kind: "Cluster", APIVersion: clusterv1.GroupVersion.String()}, ObjectMeta: metav1.ObjectMeta{Namespace: metav1.NamespaceDefault, Name: "test-cluster"}, } @@ -2144,7 +2141,6 @@ func TestShouldWaitForNodeVolumes(t *testing.T) { g.Expect(err).ToNot(HaveOccurred()) testCluster := &clusterv1.Cluster{ - TypeMeta: metav1.TypeMeta{Kind: "Cluster", APIVersion: clusterv1.GroupVersion.String()}, ObjectMeta: metav1.ObjectMeta{Namespace: metav1.NamespaceDefault, Name: "test-cluster"}, } diff --git a/internal/controllers/machinedeployment/machinedeployment_controller_test.go b/internal/controllers/machinedeployment/machinedeployment_controller_test.go index 62d892cb35ec..d8172c796753 100644 --- a/internal/controllers/machinedeployment/machinedeployment_controller_test.go +++ b/internal/controllers/machinedeployment/machinedeployment_controller_test.go @@ -528,9 +528,6 @@ func TestMachineSetToDeployments(t *testing.T) { machineDeplopymentList := []client.Object{machineDeployment} ms1 := clusterv1.MachineSet{ - TypeMeta: metav1.TypeMeta{ - Kind: "MachineSet", - }, ObjectMeta: metav1.ObjectMeta{ Name: "withOwnerRef", Namespace: metav1.NamespaceDefault, @@ -543,9 +540,6 @@ func TestMachineSetToDeployments(t *testing.T) { }, } ms2 := clusterv1.MachineSet{ - TypeMeta: metav1.TypeMeta{ - Kind: "MachineSet", - }, ObjectMeta: metav1.ObjectMeta{ Name: "noOwnerRefNoLabels", Namespace: metav1.NamespaceDefault, @@ -555,9 +549,6 @@ func TestMachineSetToDeployments(t *testing.T) { }, } ms3 := clusterv1.MachineSet{ - TypeMeta: metav1.TypeMeta{ - Kind: "MachineSet", - }, ObjectMeta: metav1.ObjectMeta{ Name: "withMatchingLabels", Namespace: metav1.NamespaceDefault, @@ -622,18 +613,12 @@ func TestGetMachineDeploymentsForMachineSet(t *testing.T) { machineDeploymentList := []client.Object{machineDeployment} ms1 := clusterv1.MachineSet{ - TypeMeta: metav1.TypeMeta{ - Kind: "MachineSet", - }, ObjectMeta: metav1.ObjectMeta{ Name: "NoMatchingLabels", Namespace: metav1.NamespaceDefault, }, } ms2 := clusterv1.MachineSet{ - TypeMeta: metav1.TypeMeta{ - Kind: "MachineSet", - }, ObjectMeta: metav1.ObjectMeta{ Name: "withMatchingLabels", Namespace: metav1.NamespaceDefault, @@ -717,9 +702,6 @@ func TestGetMachineSetsForDeployment(t *testing.T) { } ms1 := clusterv1.MachineSet{ - TypeMeta: metav1.TypeMeta{ - Kind: "MachineSet", - }, ObjectMeta: metav1.ObjectMeta{ Name: "withNoOwnerRefShouldBeAdopted2", Namespace: metav1.NamespaceDefault, @@ -729,9 +711,6 @@ func TestGetMachineSetsForDeployment(t *testing.T) { }, } ms2 := clusterv1.MachineSet{ - TypeMeta: metav1.TypeMeta{ - Kind: "MachineSet", - }, ObjectMeta: metav1.ObjectMeta{ Name: "withOwnerRefAndLabels", Namespace: metav1.NamespaceDefault, @@ -744,9 +723,6 @@ func TestGetMachineSetsForDeployment(t *testing.T) { }, } ms3 := clusterv1.MachineSet{ - TypeMeta: metav1.TypeMeta{ - Kind: "MachineSet", - }, ObjectMeta: metav1.ObjectMeta{ Name: "withNoOwnerRefShouldBeAdopted1", Namespace: metav1.NamespaceDefault, @@ -756,9 +732,6 @@ func TestGetMachineSetsForDeployment(t *testing.T) { }, } ms4 := clusterv1.MachineSet{ - TypeMeta: metav1.TypeMeta{ - Kind: "MachineSet", - }, ObjectMeta: metav1.ObjectMeta{ Name: "withNoOwnerRefNoMatch", Namespace: metav1.NamespaceDefault, @@ -768,9 +741,6 @@ func TestGetMachineSetsForDeployment(t *testing.T) { }, } ms5 := clusterv1.MachineSet{ - TypeMeta: metav1.TypeMeta{ - Kind: "MachineSet", - }, ObjectMeta: metav1.ObjectMeta{ Name: "withOwnerRefAndNoMatchLabels", Namespace: metav1.NamespaceDefault, diff --git a/internal/controllers/machinepool/machinepool_controller_noderef.go b/internal/controllers/machinepool/machinepool_controller_noderef.go index 8440e96a314d..bcb1fe53817f 100644 --- a/internal/controllers/machinepool/machinepool_controller_noderef.go +++ b/internal/controllers/machinepool/machinepool_controller_noderef.go @@ -220,7 +220,7 @@ func (r *Reconciler) patchNodes(ctx context.Context, c client.Client, references desired := map[string]string{ clusterv1.ClusterNameAnnotation: mp.Spec.ClusterName, clusterv1.ClusterNamespaceAnnotation: mp.GetNamespace(), - clusterv1.OwnerKindAnnotation: mp.Kind, + clusterv1.OwnerKindAnnotation: "MachinePool", clusterv1.OwnerNameAnnotation: mp.Name, } // Add annotations and drop NodeUninitializedTaint. diff --git a/internal/controllers/machinepool/machinepool_controller_noderef_test.go b/internal/controllers/machinepool/machinepool_controller_noderef_test.go index 9a04d43efb60..ad2db1650f29 100644 --- a/internal/controllers/machinepool/machinepool_controller_noderef_test.go +++ b/internal/controllers/machinepool/machinepool_controller_noderef_test.go @@ -391,9 +391,6 @@ func TestMachinePoolPatchNodes(t *testing.T) { { name: "Node with uninitialized taint should be patched", machinePool: &clusterv1.MachinePool{ - TypeMeta: metav1.TypeMeta{ - Kind: "MachinePool", - }, ObjectMeta: metav1.ObjectMeta{ Name: "machinepool-1", Namespace: "my-namespace", @@ -426,9 +423,6 @@ func TestMachinePoolPatchNodes(t *testing.T) { { name: "Node with existing annotations and taints should be patched", machinePool: &clusterv1.MachinePool{ - TypeMeta: metav1.TypeMeta{ - Kind: "MachinePool", - }, ObjectMeta: metav1.ObjectMeta{ Name: "machinepool-2", Namespace: "my-namespace", diff --git a/internal/controllers/machinepool/machinepool_controller_test.go b/internal/controllers/machinepool/machinepool_controller_test.go index 8d4bb8ad15e9..851beadd5cd5 100644 --- a/internal/controllers/machinepool/machinepool_controller_test.go +++ b/internal/controllers/machinepool/machinepool_controller_test.go @@ -149,7 +149,6 @@ func TestMachinePoolFinalizer(t *testing.T) { func TestMachinePoolOwnerReference(t *testing.T) { bootstrapData := "some valid machinepool bootstrap data" testCluster := &clusterv1.Cluster{ - TypeMeta: metav1.TypeMeta{Kind: "Cluster", APIVersion: clusterv1.GroupVersion.String()}, ObjectMeta: metav1.ObjectMeta{Namespace: metav1.NamespaceDefault, Name: "test-cluster"}, } @@ -238,8 +237,8 @@ func TestMachinePoolOwnerReference(t *testing.T) { m: machinePoolValidCluster, expectedOR: []metav1.OwnerReference{ { - APIVersion: testCluster.APIVersion, - Kind: testCluster.Kind, + APIVersion: clusterv1.GroupVersion.String(), + Kind: "Cluster", Name: testCluster.Name, UID: testCluster.UID, }, @@ -311,7 +310,6 @@ func TestReconcileMachinePoolRequest(t *testing.T) { } testCluster := clusterv1.Cluster{ - TypeMeta: metav1.TypeMeta{Kind: "Cluster", APIVersion: clusterv1.GroupVersion.String()}, ObjectMeta: metav1.ObjectMeta{Namespace: metav1.NamespaceDefault, Name: "test-cluster"}, } diff --git a/internal/controllers/machineset/machineset_controller_test.go b/internal/controllers/machineset/machineset_controller_test.go index 62e22eb38263..18a412ade25e 100644 --- a/internal/controllers/machineset/machineset_controller_test.go +++ b/internal/controllers/machineset/machineset_controller_test.go @@ -597,7 +597,6 @@ func TestMachineSetReconciler(t *testing.T) { func TestMachineSetOwnerReference(t *testing.T) { testCluster := &clusterv1.Cluster{ - TypeMeta: metav1.TypeMeta{Kind: "Cluster", APIVersion: clusterv1.GroupVersion.String()}, ObjectMeta: metav1.ObjectMeta{Namespace: metav1.NamespaceDefault, Name: testClusterName}, } @@ -640,8 +639,8 @@ func TestMachineSetOwnerReference(t *testing.T) { ms: ms1, expectedOR: []metav1.OwnerReference{ { - APIVersion: testCluster.APIVersion, - Kind: testCluster.Kind, + APIVersion: clusterv1.GroupVersion.String(), + Kind: "Cluster", Name: testCluster.Name, UID: testCluster.UID, }, @@ -1329,10 +1328,6 @@ func TestMachineSetReconciler_syncMachines(t *testing.T) { } inPlaceMutatingMachine := &clusterv1.Machine{ - TypeMeta: metav1.TypeMeta{ - APIVersion: clusterv1.GroupVersion.String(), - Kind: "Machine", - }, ObjectMeta: metav1.ObjectMeta{ Name: "in-place-mutating-machine", Namespace: namespace.Name, @@ -1365,10 +1360,6 @@ func TestMachineSetReconciler_syncMachines(t *testing.T) { } deletingMachine := &clusterv1.Machine{ - TypeMeta: metav1.TypeMeta{ - APIVersion: clusterv1.GroupVersion.String(), - Kind: "Machine", - }, ObjectMeta: metav1.ObjectMeta{ Name: "deleting-machine", Namespace: namespace.Name, diff --git a/internal/controllers/topology/cluster/patches/engine_test.go b/internal/controllers/topology/cluster/patches/engine_test.go index c0f3f998fb41..00fc81cfe906 100644 --- a/internal/controllers/topology/cluster/patches/engine_test.go +++ b/internal/controllers/topology/cluster/patches/engine_test.go @@ -1120,10 +1120,6 @@ func setupTestObjects() (*scope.ClusterBlueprint, *scope.ClusterState) { // Note: we depend on TypeMeta being set to calculate HolderReferences correctly. // We also set TypeMeta explicitly in the topology/cluster/cluster_controller.go. cluster := &clusterv1.Cluster{ - TypeMeta: metav1.TypeMeta{ - APIVersion: clusterv1.GroupVersion.String(), - Kind: "Cluster", - }, ObjectMeta: metav1.ObjectMeta{ Name: "cluster1", Namespace: metav1.NamespaceDefault, diff --git a/internal/controllers/topology/cluster/reconcile_state_test.go b/internal/controllers/topology/cluster/reconcile_state_test.go index 70f89a72ea62..e7abd8869f91 100644 --- a/internal/controllers/topology/cluster/reconcile_state_test.go +++ b/internal/controllers/topology/cluster/reconcile_state_test.go @@ -2035,10 +2035,7 @@ func TestReconcileControlPlaneMachineHealthCheck(t *testing.T) { g.Expect(env.PatchAndWait(ctx, tt.current.InfrastructureMachineTemplate, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) } if tt.current.MachineHealthCheck != nil { - // Note: Have to set GVK on typed objects when using SSA. - mhc := tt.current.MachineHealthCheck.DeepCopy() - mhc.SetGroupVersionKind(clusterv1.GroupVersion.WithKind("MachineHealthCheck")) - g.Expect(env.PatchAndWait(ctx, mhc, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) + g.Expect(env.PatchAndWait(ctx, tt.current.MachineHealthCheck, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) } } @@ -2322,10 +2319,7 @@ func TestReconcileMachineDeployments(t *testing.T) { for _, s := range tt.current { g.Expect(env.PatchAndWait(ctx, s.InfrastructureMachineTemplate, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) g.Expect(env.PatchAndWait(ctx, s.BootstrapTemplate, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) - // Note: Have to set GVK on typed objects when using SSA. - md := s.Object.DeepCopy() - md.SetGroupVersionKind(clusterv1.GroupVersion.WithKind("MachineDeployment")) - g.Expect(env.PatchAndWait(ctx, md, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) + g.Expect(env.PatchAndWait(ctx, s.Object, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) } currentMachineDeploymentStates := toMachineDeploymentTopologyStateMap(tt.current) @@ -2339,10 +2333,7 @@ func TestReconcileMachineDeployments(t *testing.T) { g.Expect(env.PatchAndWait(ctx, mdState.InfrastructureMachineTemplate, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) g.Expect(env.PatchAndWait(ctx, mdState.BootstrapTemplate, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) - // Note: Have to set GVK on typed objects when using SSA. - md := mdState.Object.DeepCopy() - md.SetGroupVersionKind(clusterv1.GroupVersion.WithKind("MachineDeployment")) - g.Expect(env.PatchAndWait(ctx, md, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) + g.Expect(env.PatchAndWait(ctx, mdState.Object, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) } s.Desired = &scope.ClusterState{MachineDeployments: toMachineDeploymentTopologyStateMap(tt.desired)} @@ -2735,10 +2726,7 @@ func TestReconcileMachinePools(t *testing.T) { for _, s := range tt.current { g.Expect(env.PatchAndWait(ctx, s.InfrastructureMachinePoolObject, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) g.Expect(env.PatchAndWait(ctx, s.BootstrapObject, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) - // Note: Have to set GVK on typed objects when using SSA. - mp := s.Object.DeepCopy() - mp.SetGroupVersionKind(clusterv1.GroupVersion.WithKind("MachinePool")) - g.Expect(env.PatchAndWait(ctx, mp, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) + g.Expect(env.PatchAndWait(ctx, s.Object, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) } currentMachinePoolStates := toMachinePoolTopologyStateMap(tt.current) @@ -2752,10 +2740,7 @@ func TestReconcileMachinePools(t *testing.T) { g.Expect(env.PatchAndWait(ctx, mpState.InfrastructureMachinePoolObject, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) g.Expect(env.PatchAndWait(ctx, mpState.BootstrapObject, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) - // Note: Have to set GVK on typed objects when using SSA. - mp := mpState.Object.DeepCopy() - mp.SetGroupVersionKind(clusterv1.GroupVersion.WithKind("MachinePool")) - g.Expect(env.PatchAndWait(ctx, mp, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) + g.Expect(env.PatchAndWait(ctx, mpState.Object, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) } s.Desired = &scope.ClusterState{MachinePools: toMachinePoolTopologyStateMap(tt.desired)} @@ -3543,10 +3528,7 @@ func TestReconcileMachineDeploymentMachineHealthCheck(t *testing.T) { uidsByName := map[string]types.UID{} for _, mdts := range tt.current { - // Note: Have to set GVK on typed objects when using SSA. - mdtsMD := mdts.Object.DeepCopy() - mdtsMD.SetGroupVersionKind(clusterv1.GroupVersion.WithKind("MachineDeployment")) - g.Expect(env.PatchAndWait(ctx, mdtsMD, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) + g.Expect(env.PatchAndWait(ctx, mdts.Object, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) g.Expect(env.PatchAndWait(ctx, mdts.InfrastructureMachineTemplate, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) g.Expect(env.PatchAndWait(ctx, mdts.BootstrapTemplate, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) @@ -3557,10 +3539,7 @@ func TestReconcileMachineDeploymentMachineHealthCheck(t *testing.T) { ref.UID = mdts.Object.GetUID() mdts.MachineHealthCheck.OwnerReferences[i] = ref } - // Note: Have to set GVK on typed objects when using SSA. - mdtsMHC := mdts.MachineHealthCheck.DeepCopy() - mdtsMHC.SetGroupVersionKind(clusterv1.GroupVersion.WithKind("MachineHealthCheck")) - g.Expect(env.PatchAndWait(ctx, mdtsMHC, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) + g.Expect(env.PatchAndWait(ctx, mdts.MachineHealthCheck, client.ForceOwnership, client.FieldOwner(structuredmerge.TopologyManagerName))).To(Succeed()) } } diff --git a/internal/runtime/client/client_test.go b/internal/runtime/client/client_test.go index ea350a7adb8f..64dd68d5a00c 100644 --- a/internal/runtime/client/client_test.go +++ b/internal/runtime/client/client_test.go @@ -89,6 +89,7 @@ func TestClient_httpCall(t *testing.T) { { name: "succeed for valid request and response objects", request: &fakev1alpha1.FakeRequest{ + // Note: Intentionally setting TypeMeta here to test if everything works if TypeMeta is set. TypeMeta: metav1.TypeMeta{ Kind: "FakeRequest", APIVersion: fakev1alpha1.GroupVersion.Identifier(), @@ -114,6 +115,7 @@ func TestClient_httpCall(t *testing.T) { { name: "success if request and response are valid objects - with conversion", request: &fakev1alpha2.FakeRequest{ + // Note: Intentionally setting TypeMeta here to test if everything works if TypeMeta is set. TypeMeta: metav1.TypeMeta{ Kind: "FakeRequest", APIVersion: fakev1alpha2.GroupVersion.Identifier(), @@ -214,6 +216,7 @@ func TestClient_httpCall(t *testing.T) { } func fakeHookHandler(w http.ResponseWriter, _ *http.Request) { + // Setting GVK because we directly Marshal to JSON. response := &fakev1alpha1.FakeResponse{ TypeMeta: metav1.TypeMeta{ Kind: "FakeHookResponse", @@ -352,10 +355,6 @@ func Test_defaultAndValidateDiscoveryResponse(t *testing.T) { { name: "succeed with valid skeleton DiscoveryResponse", discovery: &runtimehooksv1.DiscoveryResponse{ - TypeMeta: metav1.TypeMeta{ - Kind: "DiscoveryResponse", - APIVersion: runtimehooksv1.GroupVersion.String(), - }, Handlers: []runtimehooksv1.ExtensionHandler{{ Name: "extension", RequestHook: runtimehooksv1.GroupVersionHook{ @@ -369,10 +368,6 @@ func Test_defaultAndValidateDiscoveryResponse(t *testing.T) { { name: "error if handler name has capital letters", discovery: &runtimehooksv1.DiscoveryResponse{ - TypeMeta: metav1.TypeMeta{ - Kind: "DiscoveryResponse", - APIVersion: runtimehooksv1.GroupVersion.String(), - }, Handlers: []runtimehooksv1.ExtensionHandler{{ Name: "HAS-CAPITAL-LETTERS", RequestHook: runtimehooksv1.GroupVersionHook{ @@ -386,10 +381,6 @@ func Test_defaultAndValidateDiscoveryResponse(t *testing.T) { { name: "error if handler name has full stops", discovery: &runtimehooksv1.DiscoveryResponse{ - TypeMeta: metav1.TypeMeta{ - Kind: "DiscoveryResponse", - APIVersion: runtimehooksv1.GroupVersion.String(), - }, Handlers: []runtimehooksv1.ExtensionHandler{{ Name: "has.full.stops", RequestHook: runtimehooksv1.GroupVersionHook{ @@ -403,10 +394,6 @@ func Test_defaultAndValidateDiscoveryResponse(t *testing.T) { { name: "error with TimeoutSeconds of over 30 seconds", discovery: &runtimehooksv1.DiscoveryResponse{ - TypeMeta: metav1.TypeMeta{ - Kind: "DiscoveryResponse", - APIVersion: runtimehooksv1.GroupVersion.String(), - }, Handlers: []runtimehooksv1.ExtensionHandler{{ Name: "ext1", RequestHook: runtimehooksv1.GroupVersionHook{ @@ -421,10 +408,6 @@ func Test_defaultAndValidateDiscoveryResponse(t *testing.T) { { name: "error with TimeoutSeconds of less than 0", discovery: &runtimehooksv1.DiscoveryResponse{ - TypeMeta: metav1.TypeMeta{ - Kind: "DiscoveryResponse", - APIVersion: runtimehooksv1.GroupVersion.String(), - }, Handlers: []runtimehooksv1.ExtensionHandler{{ Name: "ext1", RequestHook: runtimehooksv1.GroupVersionHook{ @@ -439,10 +422,6 @@ func Test_defaultAndValidateDiscoveryResponse(t *testing.T) { { name: "error with FailurePolicy not Fail or Ignore", discovery: &runtimehooksv1.DiscoveryResponse{ - TypeMeta: metav1.TypeMeta{ - Kind: "DiscoveryResponse", - APIVersion: runtimehooksv1.GroupVersion.String(), - }, Handlers: []runtimehooksv1.ExtensionHandler{{ Name: "ext1", RequestHook: runtimehooksv1.GroupVersionHook{ @@ -458,10 +437,6 @@ func Test_defaultAndValidateDiscoveryResponse(t *testing.T) { { name: "error when handler name is duplicated", discovery: &runtimehooksv1.DiscoveryResponse{ - TypeMeta: metav1.TypeMeta{ - Kind: "DiscoveryResponse", - APIVersion: runtimehooksv1.GroupVersion.String(), - }, Handlers: []runtimehooksv1.ExtensionHandler{ { Name: "ext1", @@ -491,10 +466,6 @@ func Test_defaultAndValidateDiscoveryResponse(t *testing.T) { { name: "error if handler GroupVersionHook is not registered", discovery: &runtimehooksv1.DiscoveryResponse{ - TypeMeta: metav1.TypeMeta{ - Kind: "DiscoveryResponse", - APIVersion: runtimehooksv1.GroupVersion.String(), - }, Handlers: []runtimehooksv1.ExtensionHandler{{ Name: "ext1", RequestHook: runtimehooksv1.GroupVersionHook{ @@ -509,10 +480,6 @@ func Test_defaultAndValidateDiscoveryResponse(t *testing.T) { { name: "error if handler GroupVersion can not be parsed", discovery: &runtimehooksv1.DiscoveryResponse{ - TypeMeta: metav1.TypeMeta{ - Kind: "DiscoveryResponse", - APIVersion: runtimehooksv1.GroupVersion.String(), - }, Handlers: []runtimehooksv1.ExtensionHandler{{ Name: "ext1", RequestHook: runtimehooksv1.GroupVersionHook{ @@ -536,10 +503,6 @@ func Test_defaultAndValidateDiscoveryResponse(t *testing.T) { func TestClient_CallExtension(t *testing.T) { ns := &corev1.Namespace{ - TypeMeta: metav1.TypeMeta{ - Kind: "Namespace", - APIVersion: corev1.SchemeGroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -881,10 +844,6 @@ func TestClient_CallExtension(t *testing.T) { func TestClient_CallExtensionWithClientAuthentication(t *testing.T) { ns := &corev1.Namespace{ - TypeMeta: metav1.TypeMeta{ - Kind: "Namespace", - APIVersion: corev1.SchemeGroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -1214,10 +1173,6 @@ func TestClient_GetAllExtensions(t *testing.T) { func TestClient_CallAllExtensions(t *testing.T) { ns := &corev1.Namespace{ - TypeMeta: metav1.TypeMeta{ - Kind: "Namespace", - APIVersion: corev1.SchemeGroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -1424,10 +1379,6 @@ func TestClient_CallAllExtensions(t *testing.T) { func Test_client_matchNamespace(t *testing.T) { g := NewWithT(t) foo := &corev1.Namespace{ - TypeMeta: metav1.TypeMeta{ - Kind: "Namespace", - APIVersion: corev1.SchemeGroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "foo", Labels: map[string]string{ @@ -1436,10 +1387,6 @@ func Test_client_matchNamespace(t *testing.T) { }, } bar := &corev1.Namespace{ - TypeMeta: metav1.TypeMeta{ - Kind: "Namespace", - APIVersion: corev1.SchemeGroupVersion.String(), - }, ObjectMeta: metav1.ObjectMeta{ Name: "bar", Labels: map[string]string{ @@ -1647,10 +1594,6 @@ func registry(configs []runtimev1.ExtensionConfig) runtimeregistry.ExtensionRegi func fakeSuccessResponse(message string) *fakev1alpha1.FakeResponse { return &fakev1alpha1.FakeResponse{ - TypeMeta: metav1.TypeMeta{ - Kind: "FakeResponse", - APIVersion: "v1alpha1", - }, CommonResponse: runtimehooksv1.CommonResponse{ Message: message, Status: runtimehooksv1.ResponseStatusSuccess, @@ -1660,10 +1603,6 @@ func fakeSuccessResponse(message string) *fakev1alpha1.FakeResponse { func fakeRetryableSuccessResponse(retryAfterSeconds int32, message string) *fakev1alpha1.RetryableFakeResponse { return &fakev1alpha1.RetryableFakeResponse{ - TypeMeta: metav1.TypeMeta{ - Kind: "FakeResponse", - APIVersion: "v1alpha1", - }, CommonResponse: runtimehooksv1.CommonResponse{ Message: message, Status: runtimehooksv1.ResponseStatusSuccess, diff --git a/internal/test/envtest/environment.go b/internal/test/envtest/environment.go index 841f6278953c..ea2ff614b54d 100644 --- a/internal/test/envtest/environment.go +++ b/internal/test/envtest/environment.go @@ -52,6 +52,7 @@ import ( ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/client/apiutil" "sigs.k8s.io/controller-runtime/pkg/config" "sigs.k8s.io/controller-runtime/pkg/envtest" "sigs.k8s.io/controller-runtime/pkg/manager" @@ -617,6 +618,14 @@ func (e *Environment) DeleteAndWait(ctx context.Context, obj client.Object, opts // // NOTE: Waiting for the cache to be updated helps in preventing test flakes due to the cache sync delays. func (e *Environment) PatchAndWait(ctx context.Context, obj client.Object, opts ...client.PatchOption) error { + objGVK, err := apiutil.GVKForObject(obj, e.Scheme()) + if err != nil { + return errors.Wrapf(err, "failed to get GVK to set GVK on object") + } + // Ensure that GVK is explicitly set because e.Patch below uses json.Marshal + // to serialize the object and the apiserver would complain if GVK is not sent. + obj.GetObjectKind().SetGroupVersionKind(objGVK) + key := client.ObjectKeyFromObject(obj) objCopy := obj.DeepCopyObject().(client.Object) if err := e.GetAPIReader().Get(ctx, key, objCopy); err != nil { diff --git a/internal/webhooks/ipaddress_test.go b/internal/webhooks/ipaddress_test.go index 3974cb25deb3..6f1b2808c28f 100644 --- a/internal/webhooks/ipaddress_test.go +++ b/internal/webhooks/ipaddress_test.go @@ -32,10 +32,6 @@ import ( func TestIPAddressValidateCreate(t *testing.T) { claim := &ipamv1.IPAddressClaim{ - TypeMeta: metav1.TypeMeta{ - APIVersion: ipamv1.GroupVersion.String(), - Kind: "IPAddressClaim", - }, ObjectMeta: metav1.ObjectMeta{ Name: "claim", Namespace: "default", diff --git a/test/extension/handlers/topologymutation/handler_test.go b/test/extension/handlers/topologymutation/handler_test.go index 27dfa7a4067b..b2879eb92a6a 100644 --- a/test/extension/handlers/topologymutation/handler_test.go +++ b/test/extension/handlers/topologymutation/handler_test.go @@ -332,6 +332,7 @@ func TestHandler_GeneratePatches(t *testing.T) { }, }), } + // Have to set GVK because we directly Marshal to JSON. kubeadmControlPlaneTemplate := controlplanev1.KubeadmControlPlaneTemplate{ TypeMeta: metav1.TypeMeta{ Kind: "KubeadmControlPlaneTemplate", diff --git a/test/framework/bootstrap/kind_provider.go b/test/framework/bootstrap/kind_provider.go index 5588b5502609..363612a51ba6 100644 --- a/test/framework/bootstrap/kind_provider.go +++ b/test/framework/bootstrap/kind_provider.go @@ -142,10 +142,6 @@ func (k *KindClusterProvider) createKindCluster() { } cfg := &kindv1.Cluster{ - TypeMeta: kindv1.TypeMeta{ - APIVersion: "kind.x-k8s.io/v1alpha4", - Kind: "Cluster", - }, Nodes: []kindv1.Node{ { Role: kindv1.ControlPlaneRole, diff --git a/test/infrastructure/docker/internal/controllers/dockermachine_controller_test.go b/test/infrastructure/docker/internal/controllers/dockermachine_controller_test.go index 2614cd1a83d2..131be3d179fb 100644 --- a/test/infrastructure/docker/internal/controllers/dockermachine_controller_test.go +++ b/test/infrastructure/docker/internal/controllers/dockermachine_controller_test.go @@ -67,7 +67,6 @@ func TestDockerMachineReconciler_DockerClusterToDockerMachines(t *testing.T) { func newCluster(clusterName string, dockerCluster *infrav1.DockerCluster) *clusterv1.Cluster { cluster := &clusterv1.Cluster{ - TypeMeta: metav1.TypeMeta{}, ObjectMeta: metav1.ObjectMeta{ Name: clusterName, }, @@ -84,7 +83,6 @@ func newCluster(clusterName string, dockerCluster *infrav1.DockerCluster) *clust func newDockerCluster(clusterName, dockerName string) *infrav1.DockerCluster { return &infrav1.DockerCluster{ - TypeMeta: metav1.TypeMeta{}, ObjectMeta: metav1.ObjectMeta{ Name: dockerName, OwnerReferences: []metav1.OwnerReference{ @@ -119,7 +117,6 @@ func newMachine(clusterName, machineName string, dockerMachine *infrav1.DockerMa func newDockerMachine(dockerMachineName, machineName string) *infrav1.DockerMachine { return &infrav1.DockerMachine{ - TypeMeta: metav1.TypeMeta{}, ObjectMeta: metav1.ObjectMeta{ Name: dockerMachineName, ResourceVersion: "999", diff --git a/util/collections/machine_filters_test.go b/util/collections/machine_filters_test.go index da611f6afad1..b095eb2a0bd7 100644 --- a/util/collections/machine_filters_test.go +++ b/util/collections/machine_filters_test.go @@ -541,7 +541,6 @@ func testControlPlaneMachine(name string) *clusterv1.Machine { func testMachine(name string) *clusterv1.Machine { return &clusterv1.Machine{ - TypeMeta: metav1.TypeMeta{}, ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: "my-namespace", diff --git a/util/log/log_test.go b/util/log/log_test.go index 265ea5394bb8..f1f6e75edf7b 100644 --- a/util/log/log_test.go +++ b/util/log/log_test.go @@ -40,27 +40,19 @@ func Test_AddObjectHierarchy(t *testing.T) { scheme := runtime.NewScheme() g.Expect(clusterv1.AddToScheme(scheme)).To(Succeed()) - md := &clusterv1.MachineSet{ - TypeMeta: metav1.TypeMeta{ - APIVersion: clusterv1.GroupVersion.String(), - Kind: "MachineDeployment", - }, + md := &clusterv1.MachineDeployment{ ObjectMeta: metav1.ObjectMeta{ Namespace: metav1.NamespaceDefault, Name: "development-3961-md-0-l4zn6", }, } mdOwnerRef := metav1.OwnerReference{ - APIVersion: md.APIVersion, - Kind: md.Kind, + APIVersion: clusterv1.GroupVersion.String(), + Kind: "MachineDeployment", Name: md.Name, } ms := &clusterv1.MachineSet{ - TypeMeta: metav1.TypeMeta{ - APIVersion: clusterv1.GroupVersion.String(), - Kind: "MachineSet", - }, ObjectMeta: metav1.ObjectMeta{ Namespace: metav1.NamespaceDefault, Name: "development-3961-md-0-l4zn6-758c9b7677", @@ -68,8 +60,8 @@ func Test_AddObjectHierarchy(t *testing.T) { }, } msOwnerRef := metav1.OwnerReference{ - APIVersion: ms.APIVersion, - Kind: ms.Kind, + APIVersion: clusterv1.GroupVersion.String(), + Kind: "MachineSet", Name: ms.Name, } diff --git a/util/test/builder/crds.go b/util/test/builder/crds.go index 5e118fb10af7..5c15385e302e 100644 --- a/util/test/builder/crds.go +++ b/util/test/builder/crds.go @@ -44,10 +44,6 @@ func untypedCRD(gvk schema.GroupVersionKind) *apiextensionsv1.CustomResourceDefi func generateCRD(gvk schema.GroupVersionKind, properties map[string]apiextensionsv1.JSONSchemaProps) *apiextensionsv1.CustomResourceDefinition { return &apiextensionsv1.CustomResourceDefinition{ - TypeMeta: metav1.TypeMeta{ - APIVersion: apiextensionsv1.SchemeGroupVersion.String(), - Kind: "CustomResourceDefinition", - }, ObjectMeta: metav1.ObjectMeta{ Name: contract.CalculateCRDName(gvk.Group, gvk.Kind), Labels: map[string]string{