Skip to content

Commit 7d7fe11

Browse files
check that node & MCN delete
1 parent 9dd7f66 commit 7d7fe11

File tree

2 files changed

+55
-37
lines changed

2 files changed

+55
-37
lines changed

test/extended/machine_config/helpers.go

+36-18
Original file line numberDiff line numberDiff line change
@@ -728,24 +728,6 @@ func getNodeInMachine(oc *exutil.CLI, machineName string) (corev1.Node, error) {
728728
return corev1.Node{}, fmt.Errorf("more than one node is linked to Machine: %s; number of nodes: %d", machineName, numberOfNodeNames)
729729
}
730730

731-
// // Get the node object
732-
// nodes, nodesErr := oc.AsAdmin().KubeClient().CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
733-
// if nodesErr != nil { //error getting nodes
734-
// return corev1.Node{}, nodesErr
735-
// } else if len(nodes.Items) == 0 { //no nodes retrieved
736-
// return corev1.Node{}, fmt.Errorf("could not retreive nodes")
737-
// }
738-
739-
// framework.Logf("nodeNames: %v", nodeNames)
740-
// framework.Logf("nodeNames: %v", strings.ReplaceAll(nodeNames, "'", ""))
741-
// framework.Logf("nodeNames: %T", nodeNames)
742-
// // Loop through nodes to get desired one
743-
// for _, node := range nodes.Items {
744-
// if node.Name == nodeNames {
745-
// return node, nil
746-
// }
747-
// }
748-
749731
node, nodeErr := oc.AsAdmin().KubeClient().CoreV1().Nodes().Get(context.TODO(), strings.ReplaceAll(nodeNames, "'", ""), metav1.GetOptions{})
750732
if nodeErr != nil { //error getting filtered node names
751733
return corev1.Node{}, nodeErr
@@ -870,3 +852,39 @@ func WaitForValidMCNProperties(clientSet *machineconfigclient.Clientset, node co
870852
}, 2*time.Minute, 5*time.Second).Should(o.BeTrue())
871853
return nil
872854
}
855+
856+
// `WaitForNodeToBeDeleted` waits for a node to no longer exist
857+
func WaitForNodeToBeDeleted(oc *exutil.CLI, nodeName string) error {
858+
o.Eventually(func() bool {
859+
framework.Logf("Check if node %v is deleted.", nodeName)
860+
861+
// Check if node still exists
862+
node, _ := oc.AsAdmin().KubeClient().CoreV1().Nodes().Get(context.TODO(), nodeName, metav1.GetOptions{})
863+
if node == nil {
864+
framework.Logf("Node %v has been deleted.", nodeName)
865+
return true
866+
}
867+
868+
framework.Logf("Node %v still exists.", nodeName)
869+
return false
870+
}, 7*time.Minute, 3*time.Second).Should(o.BeTrue())
871+
return nil
872+
}
873+
874+
// `WaitForMCNToBeDeleted` waits for a MCN to no longer exist
875+
func WaitForMCNToBeDeleted(clientSet *machineconfigclient.Clientset, mcnName string) error {
876+
o.Eventually(func() bool {
877+
framework.Logf("Check if MCN %v is deleted.", mcnName)
878+
879+
// Check if MCN still exists
880+
mcn, _ := clientSet.MachineconfigurationV1alpha1().MachineConfigNodes().Get(context.TODO(), mcnName, metav1.GetOptions{})
881+
if mcn == nil {
882+
framework.Logf("MCN %v has been deleted.", mcnName)
883+
return true
884+
}
885+
886+
framework.Logf("MCN %v still exists.", mcnName)
887+
return false
888+
}, 4*time.Minute, 3*time.Second).Should(o.BeTrue())
889+
return nil
890+
}

test/extended/machine_config/machine_config_node.go

+19-19
Original file line numberDiff line numberDiff line change
@@ -276,22 +276,6 @@ func ValidateMCNConditionOnNodeDegrade(oc *exutil.CLI, fixture string) {
276276
// and deleted on node deletion
277277
// TODO: figure out if this needs to be a long test due to the time it takes to provision a machine & create a node
278278
func ValidateMCNOnNodeCreationAndDeletion(oc *exutil.CLI) {
279-
// // nodes, _ := oc.AsAdmin().KubeClient().CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
280-
// // framework.Logf("node name %v", nodes.Items[0].Name)
281-
// // framework.Logf("node annotations %v", nodes.Items[0].Annotations)
282-
283-
// node := getRandomNode(oc, worker)
284-
// nodeMCP := ""
285-
// framework.Logf("node.Labels: %v", node.Labels)
286-
// for _, label := range node.Labels {
287-
// framework.Logf("label: %v", label)
288-
// if strings.Contains(label, "node-role.kubernetes.io/") {
289-
// nodeMCP = strings.ReplaceAll(strings.ReplaceAll(label, "node-role.kubernetes.io/", ""), "=", "")
290-
// break
291-
// }
292-
// }
293-
// framework.Logf("nodeMCP: %v", nodeMCP)
294-
295279
// Create machine client for test
296280
machineClient, machineErr := machineclient.NewForConfig(oc.KubeFramework().ClientConfig())
297281
o.Expect(machineErr).NotTo(o.HaveOccurred())
@@ -341,7 +325,23 @@ func ValidateMCNOnNodeCreationAndDeletion(oc *exutil.CLI) {
341325
validMCNErr := WaitForValidMCNProperties(clientSet, node)
342326
o.Expect(validMCNErr).NotTo(o.HaveOccurred())
343327

344-
// Scale down new MachineSet
345-
// Check that node DNE
346-
// Check that MCN DNE
328+
// Scale down the MachineSet to delete the created node
329+
framework.Logf("Scaling down MachineSet to delete node.")
330+
scaleErr = ScaleMachineSet(oc, machineSet.Name, fmt.Sprintf("%d", originalReplica))
331+
o.Expect(scaleErr).NotTo(o.HaveOccurred(), fmt.Sprintf("Error deleting node by scaling MachineSet %v to replica value %v.", machineSet.Name, string(originalReplica)))
332+
333+
// Get the deleting node
334+
framework.Logf("Getting the deleting machine.")
335+
deletingMachine, deletingMachineErr := GetMachinesByPhase(machineClient, machineSet.Name, "Deleting")
336+
o.Expect(deletingMachineErr).NotTo(o.HaveOccurred(), fmt.Sprintf("Cannot find deleting machine in MachineSet %v", machineSet.Name))
337+
deletingMachineName := deletingMachine.Name
338+
framework.Logf("Machine %v is being deleted.", deletingMachineName)
339+
framework.Logf("Getting node in deleting machine %v.", deletingMachineName)
340+
deletingNode, deletingNodeErr := getNodeInMachine(oc, deletingMachineName)
341+
o.Expect(deletingNodeErr).NotTo(o.HaveOccurred())
342+
framework.Logf("Node being deleted: %v.", deletingNode.Name)
343+
344+
// Check that node & MCN are removed
345+
o.Expect(WaitForNodeToBeDeleted(oc, deletingNode.Name))
346+
o.Expect(WaitForMCNToBeDeleted(clientSet, deletingNode.Name))
347347
}

0 commit comments

Comments
 (0)