From ecfd17b5022e96be3ec914519b6ea8df6adb8837 Mon Sep 17 00:00:00 2001 From: Patryk Diak Date: Tue, 27 Aug 2024 16:38:09 +0200 Subject: [PATCH] Add l2 UDN tests to services_controller_test.go Signed-off-by: Patryk Diak --- .../services/services_controller_test.go | 448 ++++++++++++++++-- 1 file changed, 400 insertions(+), 48 deletions(-) diff --git a/go-controller/pkg/ovn/controller/services/services_controller_test.go b/go-controller/pkg/ovn/controller/services/services_controller_test.go index 225f8d4936..70aa9273d0 100644 --- a/go-controller/pkg/ovn/controller/services/services_controller_test.go +++ b/go-controller/pkg/ovn/controller/services/services_controller_test.go @@ -203,6 +203,7 @@ func TestSyncServices(t *testing.T) { initialLrGroups = []string{types.ClusterLBGroupName, types.ClusterRouterLBGroupName} l3UDN = getSampleUDNNetInfo(ns, "layer3") + l2UDN = getSampleUDNNetInfo(ns, "layer2") ) // setup global config oldGateway := globalconfig.Gateway.Mode @@ -332,8 +333,8 @@ func TestSyncServices(t *testing.T) { }, expectedDb: []libovsdbtest.TestData{ &nbdb.LoadBalancer{ - UUID: loadBalancerClusterWideTCPServiceName(ns, serviceName), - Name: loadBalancerClusterWideTCPServiceName(ns, serviceName), + UUID: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN), + Name: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN), Options: servicesOptions(), Protocol: &nbdb.LoadBalancerProtocolTCP, Vips: map[string]string{ @@ -354,10 +355,60 @@ func TestSyncServices(t *testing.T) { lbGroup(types.ClusterLBGroupName), lbGroup(types.ClusterSwitchLBGroupName), lbGroup(types.ClusterRouterLBGroupName), - lbGroupForNetwork(types.ClusterLBGroupName, l3UDN, loadBalancerClusterWideTCPServiceName(ns, serviceName)), + lbGroupForNetwork(types.ClusterLBGroupName, l3UDN, clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN)), lbGroupForNetwork(types.ClusterSwitchLBGroupName, l3UDN), lbGroupForNetwork(types.ClusterRouterLBGroupName, l3UDN), + nodeIPTemplate(nodeAInfo), + nodeIPTemplate(nodeBInfo), + }, + }, + { + netInfo: l2UDN, + initialDb: []libovsdbtest.TestData{ + nodeLogicalSwitch(nodeA, initialLsGroups), + nodeLogicalSwitch(nodeB, initialLsGroups), + nodeLogicalSwitchForNetwork("", initialLsGroups, l2UDN), + + nodeLogicalRouter(nodeA, initialLrGroups), + nodeLogicalRouter(nodeB, initialLrGroups), + nodeLogicalRouterForNetwork(nodeA, initialLrGroups, l2UDN), + nodeLogicalRouterForNetwork(nodeB, initialLrGroups, l2UDN), + + lbGroup(types.ClusterLBGroupName), + lbGroup(types.ClusterSwitchLBGroupName), + lbGroup(types.ClusterRouterLBGroupName), + lbGroupForNetwork(types.ClusterLBGroupName, l2UDN), + lbGroupForNetwork(types.ClusterSwitchLBGroupName, l2UDN), + lbGroupForNetwork(types.ClusterRouterLBGroupName, l2UDN), + }, + expectedDb: []libovsdbtest.TestData{ + &nbdb.LoadBalancer{ + UUID: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN), + Name: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN), + Options: servicesOptions(), + Protocol: &nbdb.LoadBalancerProtocolTCP, + Vips: map[string]string{ + IPAndPort(serviceClusterIP, servicePort): "", + }, + ExternalIDs: loadBalancerExternalIDsForNetwork(namespacedServiceName(ns, serviceName), l2UDN.GetNetworkName()), + }, + nodeLogicalSwitch(nodeA, initialLsGroups), + nodeLogicalSwitch(nodeB, initialLsGroups), + nodeLogicalSwitchForNetwork("", initialLsGroups, l2UDN), + + nodeLogicalRouter(nodeA, initialLrGroups), + nodeLogicalRouter(nodeB, initialLrGroups), + nodeLogicalRouterForNetwork(nodeA, initialLrGroups, l2UDN), + nodeLogicalRouterForNetwork(nodeB, initialLrGroups, l2UDN), + + lbGroup(types.ClusterLBGroupName), + lbGroup(types.ClusterSwitchLBGroupName), + lbGroup(types.ClusterRouterLBGroupName), + lbGroupForNetwork(types.ClusterLBGroupName, l2UDN, clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN)), + lbGroupForNetwork(types.ClusterSwitchLBGroupName, l2UDN), + lbGroupForNetwork(types.ClusterRouterLBGroupName, l2UDN), + nodeIPTemplate(nodeAInfo), nodeIPTemplate(nodeBInfo), }, @@ -446,8 +497,8 @@ func TestSyncServices(t *testing.T) { netInfo: l3UDN, initialDb: []libovsdbtest.TestData{ &nbdb.LoadBalancer{ - UUID: loadBalancerClusterWideTCPServiceName(ns, serviceName), - Name: loadBalancerClusterWideTCPServiceName(ns, serviceName), + UUID: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN), + Name: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN), Options: servicesOptions(), Protocol: &nbdb.LoadBalancerProtocolTCP, Vips: map[string]string{ @@ -476,8 +527,8 @@ func TestSyncServices(t *testing.T) { }, expectedDb: []libovsdbtest.TestData{ &nbdb.LoadBalancer{ - UUID: loadBalancerClusterWideTCPServiceName(ns, serviceName), - Name: loadBalancerClusterWideTCPServiceName(ns, serviceName), + UUID: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN), + Name: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN), Options: servicesOptions(), Protocol: &nbdb.LoadBalancerProtocolTCP, Vips: map[string]string{ @@ -500,10 +551,72 @@ func TestSyncServices(t *testing.T) { lbGroup(types.ClusterLBGroupName), lbGroup(types.ClusterSwitchLBGroupName), lbGroup(types.ClusterRouterLBGroupName), - lbGroupForNetwork(types.ClusterLBGroupName, l3UDN, loadBalancerClusterWideTCPServiceName(ns, serviceName)), + lbGroupForNetwork(types.ClusterLBGroupName, l3UDN, clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN)), lbGroupForNetwork(types.ClusterSwitchLBGroupName, l3UDN), lbGroupForNetwork(types.ClusterRouterLBGroupName, l3UDN), + nodeIPTemplate(nodeAInfo), + nodeIPTemplate(nodeBInfo), + }, + }, + { + netInfo: l2UDN, + initialDb: []libovsdbtest.TestData{ + &nbdb.LoadBalancer{ + UUID: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN), + Name: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN), + Options: servicesOptions(), + Protocol: &nbdb.LoadBalancerProtocolTCP, + Vips: map[string]string{ + "192.168.0.1:6443": "", + }, + ExternalIDs: loadBalancerExternalIDsForNetwork(namespacedServiceName(ns, serviceName), l2UDN.GetNetworkName()), + }, + nodeLogicalSwitch(nodeA, initialLsGroups), + nodeLogicalSwitch(nodeB, initialLsGroups), + nodeLogicalSwitchForNetwork("", initialLsGroups, l2UDN), + + nodeLogicalRouter(nodeA, initialLrGroups), + nodeLogicalRouter(nodeB, initialLrGroups), + nodeLogicalRouterForNetwork(nodeA, initialLrGroups, l2UDN, loadBalancerClusterWideTCPServiceName(ns, serviceName)), + nodeLogicalRouterForNetwork(nodeB, initialLrGroups, l2UDN, loadBalancerClusterWideTCPServiceName(ns, serviceName)), + nodeLogicalRouterForNetwork("node-c", []string{}, l2UDN, loadBalancerClusterWideTCPServiceName(ns, serviceName)), + + lbGroup(types.ClusterLBGroupName), + lbGroup(types.ClusterSwitchLBGroupName), + lbGroup(types.ClusterRouterLBGroupName), + lbGroupForNetwork(types.ClusterLBGroupName, l2UDN), + lbGroupForNetwork(types.ClusterSwitchLBGroupName, l2UDN), + lbGroupForNetwork(types.ClusterRouterLBGroupName, l2UDN), + }, + expectedDb: []libovsdbtest.TestData{ + &nbdb.LoadBalancer{ + UUID: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN), + Name: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN), + Options: servicesOptions(), + Protocol: &nbdb.LoadBalancerProtocolTCP, + Vips: map[string]string{ + IPAndPort(serviceClusterIP, servicePort): "", + }, + ExternalIDs: loadBalancerExternalIDsForNetwork(namespacedServiceName(ns, serviceName), l2UDN.GetNetworkName()), + }, + nodeLogicalSwitch(nodeA, initialLsGroups), + nodeLogicalSwitch(nodeB, initialLsGroups), + nodeLogicalSwitchForNetwork("", initialLsGroups, l2UDN), + + nodeLogicalRouter(nodeA, initialLrGroups), + nodeLogicalRouter(nodeB, initialLrGroups), + nodeLogicalRouterForNetwork(nodeA, initialLrGroups, l2UDN), + nodeLogicalRouterForNetwork(nodeB, initialLrGroups, l2UDN), + nodeLogicalRouterForNetwork("node-c", []string{}, l2UDN), + + lbGroup(types.ClusterLBGroupName), + lbGroup(types.ClusterSwitchLBGroupName), + lbGroup(types.ClusterRouterLBGroupName), + lbGroupForNetwork(types.ClusterLBGroupName, l2UDN, clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN)), + lbGroupForNetwork(types.ClusterSwitchLBGroupName, l2UDN), + lbGroupForNetwork(types.ClusterRouterLBGroupName, l2UDN), + nodeIPTemplate(nodeAInfo), nodeIPTemplate(nodeBInfo), }, @@ -610,8 +723,8 @@ func TestSyncServices(t *testing.T) { netInfo: l3UDN, initialDb: []libovsdbtest.TestData{ &nbdb.LoadBalancer{ - UUID: loadBalancerClusterWideTCPServiceName(ns, serviceName), - Name: loadBalancerClusterWideTCPServiceName(ns, serviceName), + UUID: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN), + Name: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN), Options: servicesOptions(), Protocol: &nbdb.LoadBalancerProtocolTCP, Vips: map[string]string{ @@ -621,13 +734,13 @@ func TestSyncServices(t *testing.T) { }, nodeLogicalSwitch(nodeA, initialLsGroups), nodeLogicalSwitch(nodeB, initialLsGroups), - nodeLogicalSwitchForNetwork(nodeA, initialLsGroups, l3UDN, loadBalancerClusterWideTCPServiceName(ns, serviceName)), - nodeLogicalSwitchForNetwork(nodeB, initialLsGroups, l3UDN, loadBalancerClusterWideTCPServiceName(ns, serviceName)), + nodeLogicalSwitchForNetwork(nodeA, initialLsGroups, l3UDN, clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN)), + nodeLogicalSwitchForNetwork(nodeB, initialLsGroups, l3UDN, clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN)), nodeLogicalRouter(nodeA, initialLrGroups), nodeLogicalRouter(nodeB, initialLrGroups), - nodeLogicalRouterForNetwork(nodeA, initialLrGroups, l3UDN, loadBalancerClusterWideTCPServiceName(ns, serviceName)), - nodeLogicalRouterForNetwork(nodeB, initialLrGroups, l3UDN, loadBalancerClusterWideTCPServiceName(ns, serviceName)), + nodeLogicalRouterForNetwork(nodeA, initialLrGroups, l3UDN, clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN)), + nodeLogicalRouterForNetwork(nodeB, initialLrGroups, l3UDN, clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN)), lbGroup(types.ClusterLBGroupName), lbGroup(types.ClusterSwitchLBGroupName), @@ -638,8 +751,8 @@ func TestSyncServices(t *testing.T) { }, expectedDb: []libovsdbtest.TestData{ &nbdb.LoadBalancer{ - UUID: loadBalancerClusterWideTCPServiceName(ns, serviceName), - Name: loadBalancerClusterWideTCPServiceName(ns, serviceName), + UUID: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN), + Name: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN), Options: servicesOptions(), Protocol: &nbdb.LoadBalancerProtocolTCP, Vips: map[string]string{ @@ -647,7 +760,7 @@ func TestSyncServices(t *testing.T) { }, ExternalIDs: loadBalancerExternalIDsForNetwork(namespacedServiceName(ns, serviceName), l3UDN.GetNetworkName()), }, - nodeMergedTemplateLoadBalancerForNetwork(nodePort, serviceName, ns, outPort, l3UDN.GetNetworkName(), nodeAEndpoint, nodeBEndpointIP), + nodeMergedTemplateLoadBalancerForNetwork(nodePort, serviceName, ns, outPort, l3UDN, nodeAEndpoint, nodeBEndpointIP), nodeLogicalSwitch(nodeA, initialLsGroups), nodeLogicalSwitch(nodeB, initialLsGroups), @@ -662,9 +775,71 @@ func TestSyncServices(t *testing.T) { lbGroup(types.ClusterLBGroupName), lbGroup(types.ClusterSwitchLBGroupName), lbGroup(types.ClusterRouterLBGroupName), - lbGroupForNetwork(types.ClusterLBGroupName, l3UDN, loadBalancerClusterWideTCPServiceName(ns, serviceName)), - lbGroupForNetwork(types.ClusterSwitchLBGroupName, l3UDN, nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol)), - lbGroupForNetwork(types.ClusterRouterLBGroupName, l3UDN, nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol)), + lbGroupForNetwork(types.ClusterLBGroupName, l3UDN, clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN)), + lbGroupForNetwork(types.ClusterSwitchLBGroupName, l3UDN, nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv4Protocol, l3UDN)), + lbGroupForNetwork(types.ClusterRouterLBGroupName, l3UDN, nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv4Protocol, l3UDN)), + + nodeIPTemplate(nodeAInfo), + nodeIPTemplate(nodeBInfo), + }, + }, + { + netInfo: l2UDN, + initialDb: []libovsdbtest.TestData{ + &nbdb.LoadBalancer{ + UUID: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN), + Name: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN), + Options: servicesOptions(), + Protocol: &nbdb.LoadBalancerProtocolTCP, + Vips: map[string]string{ + "192.168.0.1:6443": "", + }, + ExternalIDs: loadBalancerExternalIDsForNetwork(namespacedServiceName(ns, serviceName), l2UDN.GetNetworkName()), + }, + nodeLogicalSwitch(nodeA, initialLsGroups), + nodeLogicalSwitch(nodeB, initialLsGroups), + nodeLogicalSwitchForNetwork("", initialLsGroups, l2UDN, clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN)), + + nodeLogicalRouter(nodeA, initialLrGroups), + nodeLogicalRouter(nodeB, initialLrGroups), + nodeLogicalRouterForNetwork(nodeA, initialLrGroups, l2UDN, clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN)), + nodeLogicalRouterForNetwork(nodeB, initialLrGroups, l2UDN, clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN)), + + lbGroup(types.ClusterLBGroupName), + lbGroup(types.ClusterSwitchLBGroupName), + lbGroup(types.ClusterRouterLBGroupName), + lbGroupForNetwork(types.ClusterLBGroupName, l2UDN), + lbGroupForNetwork(types.ClusterSwitchLBGroupName, l2UDN), + lbGroupForNetwork(types.ClusterRouterLBGroupName, l2UDN), + }, + expectedDb: []libovsdbtest.TestData{ + &nbdb.LoadBalancer{ + UUID: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN), + Name: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN), + Options: servicesOptions(), + Protocol: &nbdb.LoadBalancerProtocolTCP, + Vips: map[string]string{ + IPAndPort(serviceClusterIP, servicePort): formatEndpoints(outPort, nodeAEndpoint, nodeBEndpointIP), + }, + ExternalIDs: loadBalancerExternalIDsForNetwork(namespacedServiceName(ns, serviceName), l2UDN.GetNetworkName()), + }, + nodeMergedTemplateLoadBalancerForNetwork(nodePort, serviceName, ns, outPort, l2UDN, nodeAEndpoint, nodeBEndpointIP), + + nodeLogicalSwitch(nodeA, initialLsGroups), + nodeLogicalSwitch(nodeB, initialLsGroups), + nodeLogicalSwitchForNetwork("", initialLsGroups, l2UDN), + + nodeLogicalRouter(nodeA, initialLrGroups), + nodeLogicalRouter(nodeB, initialLrGroups), + nodeLogicalRouterForNetwork(nodeA, initialLrGroups, l2UDN), + nodeLogicalRouterForNetwork(nodeB, initialLrGroups, l2UDN), + + lbGroup(types.ClusterLBGroupName), + lbGroup(types.ClusterSwitchLBGroupName), + lbGroup(types.ClusterRouterLBGroupName), + lbGroupForNetwork(types.ClusterLBGroupName, l2UDN, clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN)), + lbGroupForNetwork(types.ClusterSwitchLBGroupName, l2UDN, nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv4Protocol, l2UDN)), + lbGroupForNetwork(types.ClusterRouterLBGroupName, l2UDN, nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv4Protocol, l2UDN)), nodeIPTemplate(nodeAInfo), nodeIPTemplate(nodeBInfo), @@ -794,8 +969,8 @@ func TestSyncServices(t *testing.T) { netInfo: l3UDN, initialDb: []libovsdbtest.TestData{ &nbdb.LoadBalancer{ - UUID: loadBalancerClusterWideTCPServiceName(ns, serviceName), - Name: loadBalancerClusterWideTCPServiceName(ns, serviceName), + UUID: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN), + Name: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN), Options: servicesOptions(), Protocol: &nbdb.LoadBalancerProtocolTCP, Vips: map[string]string{ @@ -816,14 +991,14 @@ func TestSyncServices(t *testing.T) { lbGroup(types.ClusterLBGroupName), lbGroup(types.ClusterSwitchLBGroupName), lbGroup(types.ClusterRouterLBGroupName), - lbGroupForNetwork(types.ClusterLBGroupName, l3UDN, loadBalancerClusterWideTCPServiceName(ns, serviceName)), + lbGroupForNetwork(types.ClusterLBGroupName, l3UDN, clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN)), lbGroupForNetwork(types.ClusterSwitchLBGroupName, l3UDN), lbGroupForNetwork(types.ClusterRouterLBGroupName, l3UDN), }, expectedDb: []libovsdbtest.TestData{ &nbdb.LoadBalancer{ - UUID: loadBalancerClusterWideTCPServiceName(ns, serviceName), - Name: loadBalancerClusterWideTCPServiceName(ns, serviceName), + UUID: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN), + Name: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN), Options: servicesOptions(), Protocol: &nbdb.LoadBalancerProtocolTCP, Vips: map[string]string{ @@ -831,7 +1006,7 @@ func TestSyncServices(t *testing.T) { }, ExternalIDs: loadBalancerExternalIDsForNetwork(namespacedServiceName(ns, serviceName), l3UDN.GetNetworkName()), }, - nodeMergedTemplateLoadBalancerForNetwork(nodePort, serviceName, ns, outPort, l3UDN.GetNetworkName(), nodeAEndpoint, nodeBEndpointIP), + nodeMergedTemplateLoadBalancerForNetwork(nodePort, serviceName, ns, outPort, l3UDN, nodeAEndpoint, nodeBEndpointIP), nodeLogicalSwitch(nodeA, initialLsGroups), nodeLogicalSwitch(nodeB, initialLsGroups), nodeLogicalSwitchForNetwork(nodeA, initialLsGroups, l3UDN), @@ -845,17 +1020,17 @@ func TestSyncServices(t *testing.T) { lbGroup(types.ClusterLBGroupName), lbGroup(types.ClusterSwitchLBGroupName), lbGroup(types.ClusterRouterLBGroupName), - lbGroupForNetwork(types.ClusterLBGroupName, l3UDN, loadBalancerClusterWideTCPServiceName(ns, serviceName)), - lbGroupForNetwork(types.ClusterSwitchLBGroupName, l3UDN, nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol)), - lbGroupForNetwork(types.ClusterRouterLBGroupName, l3UDN, nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol)), + lbGroupForNetwork(types.ClusterLBGroupName, l3UDN, clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN)), + lbGroupForNetwork(types.ClusterSwitchLBGroupName, l3UDN, nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv4Protocol, l3UDN)), + lbGroupForNetwork(types.ClusterRouterLBGroupName, l3UDN, nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv4Protocol, l3UDN)), nodeIPTemplate(nodeAInfo), nodeIPTemplate(nodeBInfo), }, dbStateAfterDeleting: []libovsdbtest.TestData{ &nbdb.LoadBalancer{ - UUID: loadBalancerClusterWideTCPServiceName(ns, serviceName), - Name: loadBalancerClusterWideTCPServiceName(ns, serviceName), + UUID: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN), + Name: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN), Options: servicesOptions(), Protocol: &nbdb.LoadBalancerProtocolTCP, Vips: map[string]string{ @@ -863,7 +1038,7 @@ func TestSyncServices(t *testing.T) { }, ExternalIDs: loadBalancerExternalIDsForNetwork(namespacedServiceName(ns, serviceName), l3UDN.GetNetworkName()), }, - nodeMergedTemplateLoadBalancerForNetwork(nodePort, serviceName, ns, outPort, l3UDN.GetNetworkName(), nodeAEndpoint, nodeBEndpointIP), + nodeMergedTemplateLoadBalancerForNetwork(nodePort, serviceName, ns, outPort, l3UDN, nodeAEndpoint, nodeBEndpointIP), nodeLogicalSwitch(nodeA, initialLsGroups), nodeLogicalSwitch(nodeB, initialLsGroups), nodeLogicalSwitchForNetwork(nodeA, initialLsGroups, l3UDN), @@ -877,9 +1052,101 @@ func TestSyncServices(t *testing.T) { lbGroup(types.ClusterLBGroupName), lbGroup(types.ClusterSwitchLBGroupName), lbGroup(types.ClusterRouterLBGroupName), - lbGroupForNetwork(types.ClusterLBGroupName, l3UDN, loadBalancerClusterWideTCPServiceName(ns, serviceName)), - lbGroupForNetwork(types.ClusterSwitchLBGroupName, l3UDN, nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol)), - lbGroupForNetwork(types.ClusterRouterLBGroupName, l3UDN, nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol)), + lbGroupForNetwork(types.ClusterLBGroupName, l3UDN, clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN)), + lbGroupForNetwork(types.ClusterSwitchLBGroupName, l3UDN, nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv4Protocol, l3UDN)), + lbGroupForNetwork(types.ClusterRouterLBGroupName, l3UDN, nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv4Protocol, l3UDN)), + + nodeIPTemplate(nodeAInfo), + nodeIPTemplate(nodeBInfo), + }, + }, + { + netInfo: l2UDN, + initialDb: []libovsdbtest.TestData{ + &nbdb.LoadBalancer{ + UUID: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN), + Name: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN), + Options: servicesOptions(), + Protocol: &nbdb.LoadBalancerProtocolTCP, + Vips: map[string]string{ + "192.168.0.1:6443": "", + }, + ExternalIDs: loadBalancerExternalIDsForNetwork(namespacedServiceName(ns, serviceName), l2UDN.GetNetworkName()), + }, + nodeLogicalSwitch(nodeA, initialLsGroups), + nodeLogicalSwitch(nodeB, initialLsGroups), + nodeLogicalSwitchForNetwork("", initialLsGroups, l2UDN), + + nodeLogicalRouter(nodeA, initialLrGroups), + nodeLogicalRouter(nodeB, initialLrGroups), + nodeLogicalRouterForNetwork(nodeA, initialLrGroups, l2UDN), + nodeLogicalRouterForNetwork(nodeB, initialLrGroups, l2UDN), + + lbGroup(types.ClusterLBGroupName), + lbGroup(types.ClusterSwitchLBGroupName), + lbGroup(types.ClusterRouterLBGroupName), + lbGroupForNetwork(types.ClusterLBGroupName, l2UDN, clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN)), + lbGroupForNetwork(types.ClusterSwitchLBGroupName, l2UDN), + lbGroupForNetwork(types.ClusterRouterLBGroupName, l2UDN), + }, + expectedDb: []libovsdbtest.TestData{ + &nbdb.LoadBalancer{ + UUID: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN), + Name: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN), + Options: servicesOptions(), + Protocol: &nbdb.LoadBalancerProtocolTCP, + Vips: map[string]string{ + IPAndPort(serviceClusterIP, servicePort): formatEndpoints(outPort, nodeAEndpoint, nodeBEndpointIP), + }, + ExternalIDs: loadBalancerExternalIDsForNetwork(namespacedServiceName(ns, serviceName), l2UDN.GetNetworkName()), + }, + nodeMergedTemplateLoadBalancerForNetwork(nodePort, serviceName, ns, outPort, l2UDN, nodeAEndpoint, nodeBEndpointIP), + nodeLogicalSwitch(nodeA, initialLsGroups), + nodeLogicalSwitch(nodeB, initialLsGroups), + nodeLogicalSwitchForNetwork("", initialLsGroups, l2UDN), + + nodeLogicalRouter(nodeA, initialLrGroups), + nodeLogicalRouter(nodeB, initialLrGroups), + nodeLogicalRouterForNetwork(nodeA, initialLrGroups, l2UDN), + nodeLogicalRouterForNetwork(nodeB, initialLrGroups, l2UDN), + + lbGroup(types.ClusterLBGroupName), + lbGroup(types.ClusterSwitchLBGroupName), + lbGroup(types.ClusterRouterLBGroupName), + lbGroupForNetwork(types.ClusterLBGroupName, l2UDN, clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN)), + lbGroupForNetwork(types.ClusterSwitchLBGroupName, l2UDN, nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv4Protocol, l2UDN)), + lbGroupForNetwork(types.ClusterRouterLBGroupName, l2UDN, nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv4Protocol, l2UDN)), + + nodeIPTemplate(nodeAInfo), + nodeIPTemplate(nodeBInfo), + }, + dbStateAfterDeleting: []libovsdbtest.TestData{ + &nbdb.LoadBalancer{ + UUID: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN), + Name: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN), + Options: servicesOptions(), + Protocol: &nbdb.LoadBalancerProtocolTCP, + Vips: map[string]string{ + IPAndPort(serviceClusterIP, servicePort): formatEndpoints(outPort, nodeAEndpoint, nodeBEndpointIP), + }, + ExternalIDs: loadBalancerExternalIDsForNetwork(namespacedServiceName(ns, serviceName), l2UDN.GetNetworkName()), + }, + nodeMergedTemplateLoadBalancerForNetwork(nodePort, serviceName, ns, outPort, l2UDN, nodeAEndpoint, nodeBEndpointIP), + nodeLogicalSwitch(nodeA, initialLsGroups), + nodeLogicalSwitch(nodeB, initialLsGroups), + nodeLogicalSwitchForNetwork("", initialLsGroups, l2UDN), + + nodeLogicalRouter(nodeA, initialLrGroups), + nodeLogicalRouter(nodeB, initialLrGroups), + nodeLogicalRouterForNetwork(nodeA, initialLrGroups, l2UDN), + nodeLogicalRouterForNetwork(nodeB, initialLrGroups, l2UDN), + + lbGroup(types.ClusterLBGroupName), + lbGroup(types.ClusterSwitchLBGroupName), + lbGroup(types.ClusterRouterLBGroupName), + lbGroupForNetwork(types.ClusterLBGroupName, l2UDN, clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN)), + lbGroupForNetwork(types.ClusterSwitchLBGroupName, l2UDN, nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv4Protocol, l2UDN)), + lbGroupForNetwork(types.ClusterRouterLBGroupName, l2UDN, nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv4Protocol, l2UDN)), nodeIPTemplate(nodeAInfo), nodeIPTemplate(nodeBInfo), @@ -1021,8 +1288,8 @@ func TestSyncServices(t *testing.T) { }, expectedDb: []libovsdbtest.TestData{ &nbdb.LoadBalancer{ - UUID: loadBalancerClusterWideTCPServiceName(ns, serviceName), - Name: loadBalancerClusterWideTCPServiceName(ns, serviceName), + UUID: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN), + Name: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN), Options: servicesOptions(), Protocol: &nbdb.LoadBalancerProtocolTCP, Vips: map[string]string{ @@ -1032,8 +1299,8 @@ func TestSyncServices(t *testing.T) { ExternalIDs: loadBalancerExternalIDsForNetwork(namespacedServiceName(ns, serviceName), l3UDN.GetNetworkName()), }, &nbdb.LoadBalancer{ - UUID: nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol), - Name: nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol), + UUID: nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv4Protocol, l3UDN), + Name: nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv4Protocol, l3UDN), Options: templateServicesOptions(), Protocol: &nbdb.LoadBalancerProtocolTCP, Vips: map[string]string{ @@ -1044,8 +1311,8 @@ func TestSyncServices(t *testing.T) { ExternalIDs: loadBalancerExternalIDsForNetwork(namespacedServiceName(ns, serviceName), l3UDN.GetNetworkName()), }, &nbdb.LoadBalancer{ - UUID: nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv6Protocol), - Name: nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv6Protocol), + UUID: nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv6Protocol, l3UDN), + Name: nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv6Protocol, l3UDN), Options: templateServicesOptionsV6(), Protocol: &nbdb.LoadBalancerProtocolTCP, Vips: map[string]string{ @@ -1065,15 +1332,100 @@ func TestSyncServices(t *testing.T) { lbGroup(types.ClusterSwitchLBGroupName), lbGroup(types.ClusterRouterLBGroupName), - lbGroupForNetwork(types.ClusterLBGroupName, l3UDN, loadBalancerClusterWideTCPServiceName(ns, serviceName)), + lbGroupForNetwork(types.ClusterLBGroupName, l3UDN, clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l3UDN)), lbGroupForNetwork(types.ClusterSwitchLBGroupName, l3UDN, - nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol), - nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv6Protocol)), + nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv4Protocol, l3UDN), + nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv6Protocol, l3UDN)), lbGroupForNetwork(types.ClusterRouterLBGroupName, l3UDN, - nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol), - nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv6Protocol)), + nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv4Protocol, l3UDN), + nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv6Protocol, l3UDN)), + + &nbdb.ChassisTemplateVar{ + UUID: nodeAInfo.chassisID, Chassis: nodeAInfo.chassisID, + Variables: map[string]string{ + makeLBNodeIPTemplateNamePrefix(v1.IPv4Protocol) + "0": nodeAMultiAddressesV4[0], + makeLBNodeIPTemplateNamePrefix(v1.IPv4Protocol) + "1": nodeAMultiAddressesV4[1], + makeLBNodeIPTemplateNamePrefix(v1.IPv4Protocol) + "2": nodeAMultiAddressesV4[2], + + makeLBNodeIPTemplateNamePrefix(v1.IPv6Protocol) + "0": nodeAMultiAddressesV6[0], + makeLBNodeIPTemplateNamePrefix(v1.IPv6Protocol) + "1": nodeAMultiAddressesV6[1], + }, + }, + }, + }, + { + netInfo: l2UDN, + initialDb: []libovsdbtest.TestData{ + nodeLogicalSwitch(nodeA, initialLsGroups), + nodeLogicalSwitchForNetwork("", initialLsGroups, l2UDN), + + nodeLogicalRouter(nodeA, initialLrGroups), + nodeLogicalRouterForNetwork(nodeA, initialLrGroups, l2UDN), + + lbGroup(types.ClusterLBGroupName), + lbGroup(types.ClusterSwitchLBGroupName), + lbGroup(types.ClusterRouterLBGroupName), + lbGroupForNetwork(types.ClusterLBGroupName, l2UDN), + lbGroupForNetwork(types.ClusterSwitchLBGroupName, l2UDN), + lbGroupForNetwork(types.ClusterRouterLBGroupName, l2UDN), + }, + expectedDb: []libovsdbtest.TestData{ + &nbdb.LoadBalancer{ + UUID: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN), + Name: clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN), + Options: servicesOptions(), + Protocol: &nbdb.LoadBalancerProtocolTCP, + Vips: map[string]string{ + IPAndPort(serviceClusterIP, servicePort): formatEndpoints(outPort, nodeAEndpoint, nodeAEndpoint2), + IPAndPort(serviceClusterIPv6, servicePort): formatEndpoints(outPort, nodeAEndpointV6, nodeAEndpoint2V6), + }, + ExternalIDs: loadBalancerExternalIDsForNetwork(namespacedServiceName(ns, serviceName), l2UDN.GetNetworkName()), + }, + &nbdb.LoadBalancer{ + UUID: nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv4Protocol, l2UDN), + Name: nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv4Protocol, l2UDN), + Options: templateServicesOptions(), + Protocol: &nbdb.LoadBalancerProtocolTCP, + Vips: map[string]string{ + "^NODEIP_IPv4_1:30123": formatEndpoints(outPort, nodeAEndpoint, nodeAEndpoint2), + "^NODEIP_IPv4_2:30123": formatEndpoints(outPort, nodeAEndpoint, nodeAEndpoint2), + "^NODEIP_IPv4_0:30123": formatEndpoints(outPort, nodeAEndpoint, nodeAEndpoint2), + }, + ExternalIDs: loadBalancerExternalIDsForNetwork(namespacedServiceName(ns, serviceName), l2UDN.GetNetworkName()), + }, + &nbdb.LoadBalancer{ + UUID: nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv6Protocol, l2UDN), + Name: nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv6Protocol, l2UDN), + Options: templateServicesOptionsV6(), + Protocol: &nbdb.LoadBalancerProtocolTCP, + Vips: map[string]string{ + "^NODEIP_IPv6_1:30123": formatEndpoints(outPort, nodeAEndpointV6, nodeAEndpoint2V6), + "^NODEIP_IPv6_0:30123": formatEndpoints(outPort, nodeAEndpointV6, nodeAEndpoint2V6), + }, + ExternalIDs: loadBalancerExternalIDsForNetwork(namespacedServiceName(ns, serviceName), l2UDN.GetNetworkName()), + }, + + nodeLogicalSwitchForNetwork("", initialLsGroups, l2UDN), + nodeLogicalRouterForNetwork(nodeAInfo.name, initialLrGroups, l2UDN), + + nodeLogicalSwitch(nodeAInfo.name, initialLsGroups), + nodeLogicalRouter(nodeAInfo.name, initialLrGroups), + + lbGroup(types.ClusterLBGroupName), + lbGroup(types.ClusterSwitchLBGroupName), + lbGroup(types.ClusterRouterLBGroupName), + + lbGroupForNetwork(types.ClusterLBGroupName, l2UDN, clusterWideTCPServiceLoadBalancerNameForNetwork(ns, serviceName, l2UDN)), + lbGroupForNetwork(types.ClusterSwitchLBGroupName, + l2UDN, + nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv4Protocol, l2UDN), + nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv6Protocol, l2UDN)), + lbGroupForNetwork(types.ClusterRouterLBGroupName, + l2UDN, + nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv4Protocol, l2UDN), + nodeMergedTemplateLoadBalancerNameForNetwork(ns, serviceName, v1.IPv6Protocol, l2UDN)), &nbdb.ChassisTemplateVar{ UUID: nodeAInfo.chassisID, Chassis: nodeAInfo.chassisID, @@ -1105,9 +1457,9 @@ func TestSyncServices(t *testing.T) { dbStateAfterDeleting := network.dbStateAfterDeleting if !netInfo.IsDefault() { nodeAInfo.gatewayRouterName = netInfo.GetNetworkScopedGWRouterName(nodeAInfo.gatewayRouterName) - nodeAInfo.switchName = netInfo.GetNetworkScopedGWRouterName(nodeAInfo.switchName) + nodeAInfo.switchName = netInfo.GetNetworkScopedSwitchName(nodeAInfo.switchName) nodeBInfo.gatewayRouterName = netInfo.GetNetworkScopedGWRouterName(nodeBInfo.gatewayRouterName) - nodeBInfo.switchName = netInfo.GetNetworkScopedGWRouterName(nodeBInfo.switchName) + nodeBInfo.switchName = netInfo.GetNetworkScopedSwitchName(nodeBInfo.switchName) }