mirror of
https://github.com/kubernetes-sigs/node-feature-discovery.git
synced 2025-03-28 02:37:11 +00:00
Merge pull request #1004 from marquiz/fixes/e2e
test/e2e: don't expect control-plane nodes to be labeled
This commit is contained in:
commit
c250a8bea8
1 changed files with 32 additions and 11 deletions
|
@ -33,6 +33,7 @@ import (
|
|||
extclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
clientset "k8s.io/client-go/kubernetes"
|
||||
taintutils "k8s.io/kubernetes/pkg/util/taints"
|
||||
"k8s.io/kubernetes/test/e2e/framework"
|
||||
e2elog "k8s.io/kubernetes/test/e2e/framework"
|
||||
e2enetwork "k8s.io/kubernetes/test/e2e/framework/network"
|
||||
|
@ -333,17 +334,10 @@ var _ = SIGDescribe("Node Feature Discovery", func() {
|
|||
By("Getting a worker node")
|
||||
|
||||
// We need a valid nodename for the configmap
|
||||
nodeList, err := f.ClientSet.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
|
||||
nodes, err := getNonControlPlaneNodes(f.ClientSet)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(len(nodeList.Items)).ToNot(BeZero())
|
||||
|
||||
targetNodeName := nodeList.Items[0].Name
|
||||
for _, node := range nodeList.Items {
|
||||
if _, ok := node.Labels["node-role.kubernetes.io/master"]; !ok {
|
||||
targetNodeName = node.Name
|
||||
break
|
||||
}
|
||||
}
|
||||
targetNodeName := nodes[0].Name
|
||||
Expect(targetNodeName).ToNot(BeEmpty(), "No worker node found")
|
||||
|
||||
// create a wildcard name as well for this node
|
||||
|
@ -488,11 +482,11 @@ core:
|
|||
// waitForNfdNodeLabels waits for node to be labeled as expected.
|
||||
func waitForNfdNodeLabels(cli clientset.Interface, expected map[string]string) error {
|
||||
poll := func() error {
|
||||
nodeList, err := cli.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
|
||||
nodes, err := getNonControlPlaneNodes(cli)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, node := range nodeList.Items {
|
||||
for _, node := range nodes {
|
||||
labels := nfdLabels(node.Labels)
|
||||
if !cmp.Equal(expected, labels) {
|
||||
return fmt.Errorf("node %q labels do not match expected, diff (expected vs. received): %s", node.Name, cmp.Diff(expected, labels))
|
||||
|
@ -512,6 +506,33 @@ func waitForNfdNodeLabels(cli clientset.Interface, expected map[string]string) e
|
|||
return err
|
||||
}
|
||||
|
||||
// getNonControlPlaneNodes gets the nodes that are not tainted for exclusive control-plane usage
|
||||
func getNonControlPlaneNodes(cli clientset.Interface) ([]corev1.Node, error) {
|
||||
nodeList, err := cli.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(nodeList.Items) == 0 {
|
||||
return nil, fmt.Errorf("no nodes found in the cluster")
|
||||
}
|
||||
|
||||
controlPlaneTaint := corev1.Taint{
|
||||
Effect: corev1.TaintEffectNoSchedule,
|
||||
Key: "node-role.kubernetes.io/control-plane",
|
||||
}
|
||||
out := []corev1.Node{}
|
||||
for _, node := range nodeList.Items {
|
||||
if !taintutils.TaintExists(node.Spec.Taints, &controlPlaneTaint) {
|
||||
out = append(out, node)
|
||||
}
|
||||
}
|
||||
|
||||
if len(out) == 0 {
|
||||
return nil, fmt.Errorf("no non-control-plane nodes found in the cluster")
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// nfdLabels gets labels that are in the nfd label namespace.
|
||||
func nfdLabels(labels map[string]string) map[string]string {
|
||||
ret := map[string]string{}
|
||||
|
|
Loading…
Add table
Reference in a new issue