diff --git a/test/extended/node/node_swap.go b/test/extended/node/node_swap.go index 7adfced56c6d..f3f0c151c0ce 100644 --- a/test/extended/node/node_swap.go +++ b/test/extended/node/node_swap.go @@ -23,10 +23,6 @@ import ( exutil "github.com/openshift/origin/test/extended/util" ) -const ( - workerGeneratedKubeletMC = "99-worker-generated-kubelet" -) - var _ = g.Describe("[Jira:Node][sig-node] Node non-cnv swap configuration", func() { defer g.GinkgoRecover() @@ -117,10 +113,10 @@ var _ = g.Describe("[Jira:Node][sig-node] Node non-cnv swap configuration", func g.By("Getting initial machine config resourceVersion") // Get the initial resourceVersion of the worker machine config before creating KubeletConfig - workerMC, err := mcClient.MachineconfigurationV1().MachineConfigs().Get(ctx, workerGeneratedKubeletMC, metav1.GetOptions{}) - o.Expect(err).NotTo(o.HaveOccurred(), "Failed to get initial machine config %s", workerGeneratedKubeletMC) - initialResourceVersion := workerMC.ResourceVersion - framework.Logf("Initial %s resourceVersion: %s", workerGeneratedKubeletMC, initialResourceVersion) + workerGeneratedKubeletMC, err := getWorkerGeneratedKubeletMC(ctx, mcClient) + o.Expect(err).NotTo(o.HaveOccurred(), "Failed to find worker-generated-kubelet MachineConfig") + initialResourceVersion := workerGeneratedKubeletMC.ResourceVersion + framework.Logf("Initial %s resourceVersion: %s", workerGeneratedKubeletMC.Name, initialResourceVersion) g.By("Creating a KubeletConfig with swap settings") kcName := fmt.Sprintf("test-swap-override-%d", time.Now().UnixNano()) @@ -187,10 +183,10 @@ var _ = g.Describe("[Jira:Node][sig-node] Node non-cnv swap configuration", func time.Sleep(5 * time.Second) // Check if the machine config was created or updated (compare to initial resourceVersion captured earlier) - workerMC, err = mcClient.MachineconfigurationV1().MachineConfigs().Get(ctx, workerGeneratedKubeletMC, metav1.GetOptions{}) - o.Expect(err).NotTo(o.HaveOccurred(), "Failed to get machine config %s for verification", workerGeneratedKubeletMC) - o.Expect(workerMC.ResourceVersion).To(o.Equal(initialResourceVersion), "Machine config %s should not be updated when failSwapOn is rejected", workerGeneratedKubeletMC) - framework.Logf("Verified: %s was not updated (resourceVersion: %s)", workerGeneratedKubeletMC, workerMC.ResourceVersion) + workerMCAfter, err := getWorkerGeneratedKubeletMC(ctx, mcClient) + o.Expect(err).NotTo(o.HaveOccurred(), "Failed to find worker-generated-kubelet MachineConfig for verification") + o.Expect(workerMCAfter.ResourceVersion).To(o.Equal(initialResourceVersion), "Machine config %s should not be updated when failSwapOn is rejected", workerMCAfter.Name) + framework.Logf("Verified: %s was not updated (resourceVersion: %s)", workerMCAfter.Name, workerMCAfter.ResourceVersion) g.By("Verifying worker nodes still have correct swap settings") allWorkerNodes, err := getNodesByLabel(ctx, oc, "node-role.kubernetes.io/worker") diff --git a/test/extended/node/node_utils.go b/test/extended/node/node_utils.go index 40ae3b9105e7..0800233a9bd1 100644 --- a/test/extended/node/node_utils.go +++ b/test/extended/node/node_utils.go @@ -20,6 +20,7 @@ import ( o "github.com/onsi/gomega" + machineconfigv1 "github.com/openshift/api/machineconfiguration/v1" machineconfigclient "github.com/openshift/client-go/machineconfiguration/clientset/versioned" exutil "github.com/openshift/origin/test/extended/util" ) @@ -523,6 +524,30 @@ func waitForMCP(ctx context.Context, mcClient *machineconfigclient.Clientset, po }) } +// getWorkerGeneratedKubeletMC finds and returns the highest numbered worker-generated-kubelet MachineConfig. +// KubeletConfig changes affect the highest numbered config, so we return that one. +func getWorkerGeneratedKubeletMC(ctx context.Context, mcClient *machineconfigclient.Clientset) (*machineconfigv1.MachineConfig, error) { + mcList, err := mcClient.MachineconfigurationV1().MachineConfigs().List(ctx, metav1.ListOptions{}) + if err != nil { + return nil, err + } + + var highestMC *machineconfigv1.MachineConfig + for i := range mcList.Items { + if strings.Contains(mcList.Items[i].Name, "worker-generated-kubelet") { + if highestMC == nil || mcList.Items[i].Name > highestMC.Name { + highestMC = &mcList.Items[i] + } + } + } + + if highestMC == nil { + return nil, fmt.Errorf("worker-generated-kubelet MachineConfig not found") + } + + return highestMC, nil +} + // labelWorkerNodesForCNV labels all worker nodes with kubevirt.io/schedulable=true func labelWorkerNodesForCNV(ctx context.Context, oc *exutil.CLI) error { framework.Logf("Labeling worker nodes for CNV...")