Skip to content

Commit 04cc24f

Browse files
committed
Fix unit test: use node-id annotation instead of OVNNodeGRLRPAddrs.
Some tests were making up random JoinIPs and it worked because they were annotated from the test. Now when the IPs are coming from the real JoinSubnet configuration for both default network and UDNs, some ips have to change. Default network Join subnets: "100.64.0.0/16", "fd98::/64" UDN default join subnets: "100.65.0.0/16", "fd99::/64" Node will have the same IP "index" for all join subnets (that means node1 can't have 100.64.0.1 in default network, but 100.65.0.2 in the UDN, it has to be 100.65.0.1) Delete cluster manager tests for stale annotation. Signed-off-by: Nadia Pinaeva <[email protected]>
1 parent f0dd327 commit 04cc24f

File tree

14 files changed

+84
-338
lines changed

14 files changed

+84
-338
lines changed

go-controller/hybrid-overlay/pkg/controller/ovn_node_linux_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ var _ = Describe("Hybrid Overlay Node Linux Operations", func() {
395395
app.Action = func(ctx *cli.Context) error {
396396
annotations := createNodeAnnotationsForSubnet(thisNodeSubnet)
397397
annotations[hotypes.HybridOverlayDRMAC] = thisNodeDRMAC
398-
annotations[util.OVNNodeGRLRPAddrs] = "{\"default\":{\"ipv4\":\"100.64.0.3/16\"}}"
398+
annotations[util.OvnNodeID] = "3"
399399
annotations[hotypes.HybridOverlayDRIP] = thisNodeDRIP
400400
node := createNode(thisNode, "linux", thisNodeIP, annotations)
401401
fakeClient := fake.NewSimpleClientset(&corev1.NodeList{
@@ -461,13 +461,13 @@ var _ = Describe("Hybrid Overlay Node Linux Operations", func() {
461461

462462
annotations := createNodeAnnotationsForSubnet(thisNodeSubnet)
463463
annotations[hotypes.HybridOverlayDRMAC] = thisNodeDRMAC
464-
annotations[util.OVNNodeGRLRPAddrs] = "{\"default\":{\"ipv4\":\"100.64.0.3/16\"}}"
464+
annotations[util.OvnNodeID] = "3"
465465
annotations[hotypes.HybridOverlayDRIP] = thisNodeDRIP
466466
node := createNode(thisNode, "linux", thisNodeIP, annotations)
467467

468468
remoteNodeAnnotations := createNodeAnnotationsForSubnet(remoteNodeSubnet)
469469
remoteNodeAnnotations[hotypes.HybridOverlayDRMAC] = remoteNodeDRMAC
470-
remoteNodeAnnotations[util.OVNNodeGRLRPAddrs] = "{\"default\":{\"ipv4\":\"100.65.0.3/16\"}}"
470+
remoteNodeAnnotations[util.OvnNodeID] = "3"
471471
remoteNodeAnnotations[hotypes.HybridOverlayDRIP] = "1.2.4.3"
472472
remoteNode := createNode(remoteNodeName, "linux", "10.20.20.1", remoteNodeAnnotations)
473473

@@ -564,7 +564,7 @@ var _ = Describe("Hybrid Overlay Node Linux Operations", func() {
564564

565565
annotations := createNodeAnnotationsForSubnet(thisNodeSubnet)
566566
annotations[hotypes.HybridOverlayDRMAC] = thisNodeDRMAC
567-
annotations[util.OVNNodeGRLRPAddrs] = "{\"default\":{\"ipv4\":\"100.64.0.3/16\"}}"
567+
annotations[util.OvnNodeID] = "3"
568568
annotations[hotypes.HybridOverlayDRIP] = thisNodeDRIP
569569
node := createNode(thisNode, "linux", thisNodeIP, annotations)
570570
testPod := createPod("test", "pod1", thisNode, pod1CIDR, pod1MAC)
@@ -648,7 +648,7 @@ var _ = Describe("Hybrid Overlay Node Linux Operations", func() {
648648

649649
annotations := createNodeAnnotationsForSubnet(thisNodeSubnet)
650650
annotations[hotypes.HybridOverlayDRMAC] = thisNodeDRMAC
651-
annotations[util.OVNNodeGRLRPAddrs] = "{\"default\":{\"ipv4\":\"100.64.0.3/16\"}}"
651+
annotations[util.OvnNodeID] = "3"
652652
annotations[hotypes.HybridOverlayDRIP] = thisNodeDRIP
653653
node := createNode(thisNode, "linux", thisNodeIP, annotations)
654654
fakeClient := fake.NewSimpleClientset(&corev1.NodeList{
@@ -748,7 +748,7 @@ var _ = Describe("Hybrid Overlay Node Linux Operations", func() {
748748

749749
annotations := createNodeAnnotationsForSubnet(thisNodeSubnet)
750750
annotations[hotypes.HybridOverlayDRMAC] = thisNodeDRMAC
751-
annotations[util.OVNNodeGRLRPAddrs] = "{\"default\":{\"ipv4\":\"100.64.0.3/16\"}}"
751+
annotations[util.OvnNodeID] = "3"
752752
annotations[hotypes.HybridOverlayDRIP] = thisNodeDRIP
753753
node := createNode(thisNode, "linux", thisNodeIP, annotations)
754754
fakeClient := fake.NewSimpleClientset(&corev1.NodeList{
@@ -888,7 +888,7 @@ var _ = Describe("Hybrid Overlay Node Linux Operations", func() {
888888

889889
annotations := createNodeAnnotationsForSubnet(thisNodeSubnet)
890890
annotations[hotypes.HybridOverlayDRMAC] = thisNodeDRMAC
891-
annotations[util.OVNNodeGRLRPAddrs] = "{\"default\":{\"ipv4\":\"100.64.0.3/16\"}}"
891+
annotations[util.OvnNodeID] = "3"
892892
annotations[hotypes.HybridOverlayDRIP] = thisNodeDRIP
893893
node := createNode(thisNode, "linux", thisNodeIP, annotations)
894894
fakeClient := fake.NewSimpleClientset(&corev1.NodeList{
@@ -1017,7 +1017,7 @@ var _ = Describe("Hybrid Overlay Node Linux Operations", func() {
10171017

10181018
annotations := createNodeAnnotationsForSubnet(thisNodeSubnet)
10191019
annotations[hotypes.HybridOverlayDRMAC] = thisNodeDRMAC
1020-
annotations[util.OVNNodeGRLRPAddrs] = "{\"default\":{\"ipv4\":\"100.64.0.3/16\"}}"
1020+
annotations[util.OvnNodeID] = "3"
10211021
annotations[hotypes.HybridOverlayDRIP] = thisNodeDRIP
10221022
node := createNode(thisNode, "linux", thisNodeIP, annotations)
10231023
fakeClient := fake.NewSimpleClientset(&corev1.NodeList{

go-controller/pkg/allocator/pod/pod_annotation_test.go

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -936,17 +936,10 @@ func Test_allocatePodAnnotationWithRollback(t *testing.T) {
936936
}
937937
}
938938

939-
ifaddrs := `{"network":{"ipv4":"100.65.0.4/16","ipv6":"fd99::4/64"}}`
940-
if tt.isSingleStackIPv4 {
941-
ifaddrs = `{"network":{"ipv4":"100.65.0.4/16"}}`
942-
} else if tt.isSingleStackIPv6 {
943-
ifaddrs = `{"network":{"ipv6":"fd99::4/64"}}`
944-
}
945-
946939
node := &corev1.Node{
947940
ObjectMeta: metav1.ObjectMeta{
948941
Annotations: map[string]string{
949-
"k8s.ovn.org/node-gateway-router-lrp-ifaddrs": ifaddrs,
942+
"k8s.ovn.org/node-id": "4",
950943
},
951944
},
952945
}

go-controller/pkg/clustermanager/clustermanager_test.go

Lines changed: 0 additions & 233 deletions
Original file line numberDiff line numberDiff line change
@@ -915,239 +915,6 @@ var _ = ginkgo.Describe("Cluster Manager", func() {
915915
})
916916
gomega.Expect(err).NotTo(gomega.HaveOccurred())
917917
})
918-
919-
ginkgo.It("clear the node annotations for gateway router port ips and check", func() {
920-
app.Action = func(ctx *cli.Context) error {
921-
nodes := []corev1.Node{
922-
{
923-
ObjectMeta: metav1.ObjectMeta{
924-
Name: "node1",
925-
},
926-
},
927-
{
928-
ObjectMeta: metav1.ObjectMeta{
929-
Name: "node2",
930-
},
931-
},
932-
{
933-
ObjectMeta: metav1.ObjectMeta{
934-
Name: "node3",
935-
},
936-
},
937-
}
938-
kubeFakeClient := fake.NewSimpleClientset(&corev1.NodeList{
939-
Items: nodes,
940-
})
941-
fakeClient := &util.OVNClusterManagerClientset{
942-
KubeClient: kubeFakeClient,
943-
}
944-
945-
_, err := config.InitConfig(ctx, nil, nil)
946-
gomega.Expect(err).NotTo(gomega.HaveOccurred())
947-
config.Kubernetes.HostNetworkNamespace = ""
948-
949-
f, err = factory.NewClusterManagerWatchFactory(fakeClient)
950-
gomega.Expect(err).NotTo(gomega.HaveOccurred())
951-
err = f.Start()
952-
gomega.Expect(err).NotTo(gomega.HaveOccurred())
953-
954-
clusterManager, err := NewClusterManager(fakeClient, f, "identity", nil)
955-
gomega.Expect(clusterManager).NotTo(gomega.BeNil())
956-
gomega.Expect(err).NotTo(gomega.HaveOccurred())
957-
err = clusterManager.Start(ctx.Context)
958-
gomega.Expect(err).NotTo(gomega.HaveOccurred())
959-
defer clusterManager.Stop()
960-
961-
nodeAddrs := make(map[string]string)
962-
// Check that cluster manager has set the node-gateway-router-lrp-ifaddr annotation for each node.
963-
for _, n := range nodes {
964-
gomega.Eventually(func() error {
965-
updatedNode, err := fakeClient.KubeClient.CoreV1().Nodes().Get(context.TODO(), n.Name, metav1.GetOptions{})
966-
if err != nil {
967-
return err
968-
}
969-
970-
gwLRPAddrs, err := udn.GetGWRouterIPs(updatedNode, &util.DefaultNetInfo{})
971-
if err != nil {
972-
return err
973-
}
974-
gomega.Expect(gwLRPAddrs).NotTo(gomega.BeNil())
975-
gomega.Expect(gwLRPAddrs).To(gomega.HaveLen(2))
976-
nodeAddrs[n.Name] = updatedNode.Annotations[util.OVNNodeGRLRPAddrs]
977-
return nil
978-
}).ShouldNot(gomega.HaveOccurred())
979-
}
980-
981-
// Clear the node-gateway-router-lrp-ifaddr annotation of nodes and make sure it is reset by cluster manager
982-
// with the same addrs.
983-
for _, n := range nodes {
984-
nodeAnnotator := kube.NewNodeAnnotator(&kube.Kube{KClient: kubeFakeClient}, n.Name)
985-
986-
nodeAnnotations := n.Annotations
987-
for k, v := range nodeAnnotations {
988-
gomega.Expect(nodeAnnotator.Set(k, v)).To(gomega.Succeed())
989-
}
990-
nodeAnnotator.Delete(util.OVNNodeGRLRPAddrs)
991-
err = nodeAnnotator.Run()
992-
gomega.Expect(err).NotTo(gomega.HaveOccurred())
993-
}
994-
995-
for _, n := range nodes {
996-
gomega.Eventually(func() error {
997-
updatedNode, err := fakeClient.KubeClient.CoreV1().Nodes().Get(context.TODO(), n.Name, metav1.GetOptions{})
998-
if err != nil {
999-
return err
1000-
}
1001-
1002-
nodeGWRPIPs, ok := updatedNode.Annotations[util.OVNNodeGRLRPAddrs]
1003-
if !ok {
1004-
return fmt.Errorf("expected node annotation for node %s to have node gateway-router-lrp-ifaddr allocated", n.Name)
1005-
}
1006-
1007-
gomega.Expect(nodeGWRPIPs).To(gomega.Equal(nodeAddrs[n.Name]))
1008-
return nil
1009-
}).ShouldNot(gomega.HaveOccurred())
1010-
}
1011-
return nil
1012-
}
1013-
1014-
err := app.Run([]string{
1015-
app.Name,
1016-
"-cluster-subnets=" + clusterCIDR + "," + clusterv6CIDR,
1017-
"-k8s-service-cidr=10.96.0.0/16,fd00:10:96::/112",
1018-
})
1019-
gomega.Expect(err).NotTo(gomega.HaveOccurred())
1020-
})
1021-
1022-
ginkgo.It("Stop cluster manager, change id of a node and verify the gateway router port addr node annotation", func() {
1023-
app.Action = func(ctx *cli.Context) error {
1024-
nodes := []corev1.Node{
1025-
{
1026-
ObjectMeta: metav1.ObjectMeta{
1027-
Name: "node1",
1028-
},
1029-
},
1030-
{
1031-
ObjectMeta: metav1.ObjectMeta{
1032-
Name: "node2",
1033-
},
1034-
},
1035-
{
1036-
ObjectMeta: metav1.ObjectMeta{
1037-
Name: "node3",
1038-
},
1039-
},
1040-
}
1041-
kubeFakeClient := fake.NewSimpleClientset(&corev1.NodeList{
1042-
Items: nodes,
1043-
})
1044-
fakeClient := &util.OVNClusterManagerClientset{
1045-
KubeClient: kubeFakeClient,
1046-
}
1047-
1048-
_, err := config.InitConfig(ctx, nil, nil)
1049-
gomega.Expect(err).NotTo(gomega.HaveOccurred())
1050-
config.Kubernetes.HostNetworkNamespace = ""
1051-
1052-
f, err = factory.NewClusterManagerWatchFactory(fakeClient)
1053-
gomega.Expect(err).NotTo(gomega.HaveOccurred())
1054-
err = f.Start()
1055-
gomega.Expect(err).NotTo(gomega.HaveOccurred())
1056-
1057-
wg1 := &sync.WaitGroup{}
1058-
clusterManager, err := NewClusterManager(fakeClient, f, "identity", nil)
1059-
gomega.Expect(clusterManager).NotTo(gomega.BeNil())
1060-
gomega.Expect(err).NotTo(gomega.HaveOccurred())
1061-
err = clusterManager.Start(ctx.Context)
1062-
gomega.Expect(err).NotTo(gomega.HaveOccurred())
1063-
1064-
node3GWRPAnnotation := ""
1065-
// Check that cluster manager has set the node-gateway-router-lrp-ifaddr annotation for each node.
1066-
for _, n := range nodes {
1067-
gomega.Eventually(func() error {
1068-
updatedNode, err := fakeClient.KubeClient.CoreV1().Nodes().Get(context.TODO(), n.Name, metav1.GetOptions{})
1069-
if err != nil {
1070-
return err
1071-
}
1072-
1073-
gwLRPAddrs, err := udn.GetGWRouterIPs(updatedNode, &util.DefaultNetInfo{})
1074-
if err != nil {
1075-
return err
1076-
}
1077-
gomega.Expect(gwLRPAddrs).NotTo(gomega.BeNil())
1078-
gomega.Expect(gwLRPAddrs).To(gomega.HaveLen(2))
1079-
1080-
// Store the node 3's gw router port addresses
1081-
if updatedNode.Name == "node3" {
1082-
node3GWRPAnnotation = updatedNode.Annotations[util.OVNNodeGRLRPAddrs]
1083-
}
1084-
return nil
1085-
}).ShouldNot(gomega.HaveOccurred())
1086-
}
1087-
1088-
// stop the cluster manager.
1089-
clusterManager.Stop()
1090-
wg1.Wait()
1091-
1092-
updatedNodes := []corev1.Node{}
1093-
1094-
for _, n := range nodes {
1095-
updatedNode, _ := fakeClient.KubeClient.CoreV1().Nodes().Get(context.TODO(), n.Name, metav1.GetOptions{})
1096-
if updatedNode.Name == "node3" {
1097-
// Change the id of node3 duplicate.
1098-
updatedNode.Annotations[ovnNodeIDAnnotaton] = "50"
1099-
}
1100-
updatedNodes = append(updatedNodes, *updatedNode)
1101-
}
1102-
1103-
// Close the watch factory and create a new one
1104-
f.Shutdown()
1105-
kubeFakeClient = fake.NewSimpleClientset(&corev1.NodeList{
1106-
Items: updatedNodes,
1107-
})
1108-
fakeClient = &util.OVNClusterManagerClientset{
1109-
KubeClient: kubeFakeClient,
1110-
}
1111-
f, err = factory.NewClusterManagerWatchFactory(fakeClient)
1112-
gomega.Expect(err).NotTo(gomega.HaveOccurred())
1113-
err = f.Start()
1114-
gomega.Expect(err).NotTo(gomega.HaveOccurred())
1115-
1116-
// Start a new cluster manager
1117-
cm2, err := NewClusterManager(fakeClient, f, "cm2", nil)
1118-
gomega.Expect(cm2).NotTo(gomega.BeNil())
1119-
gomega.Expect(err).NotTo(gomega.HaveOccurred())
1120-
err = cm2.Start(ctx.Context)
1121-
gomega.Expect(err).NotTo(gomega.HaveOccurred())
1122-
defer cm2.Stop()
1123-
1124-
gomega.Eventually(func() error {
1125-
updatedNode, err := fakeClient.KubeClient.CoreV1().Nodes().Get(context.TODO(), "node3", metav1.GetOptions{})
1126-
if err != nil {
1127-
return err
1128-
}
1129-
1130-
node3UpdatedGWRPAnnotation := updatedNode.Annotations[util.OVNNodeGRLRPAddrs]
1131-
gomega.Expect(node3UpdatedGWRPAnnotation).NotTo(gomega.Equal(node3GWRPAnnotation))
1132-
1133-
gwLRPAddrs, err := udn.GetGWRouterIPs(updatedNode, &util.DefaultNetInfo{})
1134-
if err != nil {
1135-
return err
1136-
}
1137-
gomega.Expect(gwLRPAddrs).NotTo(gomega.BeNil())
1138-
gomega.Expect(gwLRPAddrs).To(gomega.HaveLen(2))
1139-
return nil
1140-
}).ShouldNot(gomega.HaveOccurred())
1141-
return nil
1142-
}
1143-
1144-
err := app.Run([]string{
1145-
app.Name,
1146-
"-cluster-subnets=" + clusterCIDR + "," + clusterv6CIDR,
1147-
"-k8s-service-cidr=10.96.0.0/16,fd00:10:96::/112",
1148-
})
1149-
gomega.Expect(err).NotTo(gomega.HaveOccurred())
1150-
})
1151918
})
1152919

1153920
ginkgo.Context("Transit switch port IP allocations", func() {

go-controller/pkg/ovn/egressfirewall_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -850,7 +850,7 @@ var _ = ginkgo.Describe("OVN EgressFirewall Operations", func() {
850850
"k8s.ovn.org/node-subnets": fmt.Sprintf("{\"default\":[\"%s\", \"fd02:0:0:2::2895/64\"]}", v4NodeSubnet),
851851
util.OVNNodeHostCIDRs: fmt.Sprintf("[\"%s/24\",\"%s/24\",\"%s/64\"]", nodeIP, nodeIP2, nodeIP3),
852852
"k8s.ovn.org/node-chassis-id": "2",
853-
util.OVNNodeGRLRPAddrs: "{\"default\":{\"ipv4\":\"100.64.0.2/16\"}}",
853+
util.OvnNodeID: "2",
854854
},
855855
},
856856
}

0 commit comments

Comments
 (0)