Skip to content

Commit

Permalink
Add l2 UDN tests to services_controller_test.go
Browse files Browse the repository at this point in the history
Signed-off-by: Patryk Diak <[email protected]>
  • Loading branch information
kyrtapz committed Sep 2, 2024
1 parent 5d8e221 commit 2eda103
Showing 1 changed file with 352 additions and 0 deletions.
352 changes: 352 additions & 0 deletions go-controller/pkg/ovn/controller/services/services_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -358,6 +359,56 @@ func TestSyncServices(t *testing.T) {
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: loadBalancerClusterWideTCPServiceName(ns, serviceName),
Name: loadBalancerClusterWideTCPServiceName(ns, serviceName),
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, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
lbGroupForNetwork(types.ClusterSwitchLBGroupName, l2UDN),
lbGroupForNetwork(types.ClusterRouterLBGroupName, l2UDN),

nodeIPTemplate(nodeAInfo),
nodeIPTemplate(nodeBInfo),
},
Expand Down Expand Up @@ -504,6 +555,68 @@ func TestSyncServices(t *testing.T) {
lbGroupForNetwork(types.ClusterSwitchLBGroupName, l3UDN),
lbGroupForNetwork(types.ClusterRouterLBGroupName, l3UDN),

nodeIPTemplate(nodeAInfo),
nodeIPTemplate(nodeBInfo),
},
},
{
netInfo: l2UDN,
initialDb: []libovsdbtest.TestData{
&nbdb.LoadBalancer{
UUID: loadBalancerClusterWideTCPServiceName(ns, serviceName),
Name: loadBalancerClusterWideTCPServiceName(ns, serviceName),
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: loadBalancerClusterWideTCPServiceName(ns, serviceName),
Name: loadBalancerClusterWideTCPServiceName(ns, serviceName),
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, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
lbGroupForNetwork(types.ClusterSwitchLBGroupName, l2UDN),
lbGroupForNetwork(types.ClusterRouterLBGroupName, l2UDN),

nodeIPTemplate(nodeAInfo),
nodeIPTemplate(nodeBInfo),
},
Expand Down Expand Up @@ -666,6 +779,68 @@ func TestSyncServices(t *testing.T) {
lbGroupForNetwork(types.ClusterSwitchLBGroupName, l3UDN, nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol)),
lbGroupForNetwork(types.ClusterRouterLBGroupName, l3UDN, nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol)),

nodeIPTemplate(nodeAInfo),
nodeIPTemplate(nodeBInfo),
},
},
{
netInfo: l2UDN,
initialDb: []libovsdbtest.TestData{
&nbdb.LoadBalancer{
UUID: loadBalancerClusterWideTCPServiceName(ns, serviceName),
Name: loadBalancerClusterWideTCPServiceName(ns, serviceName),
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, loadBalancerClusterWideTCPServiceName(ns, serviceName)),

nodeLogicalRouter(nodeA, initialLrGroups),
nodeLogicalRouter(nodeB, initialLrGroups),
nodeLogicalRouterForNetwork(nodeA, initialLrGroups, l2UDN, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalRouterForNetwork(nodeB, initialLrGroups, 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: loadBalancerClusterWideTCPServiceName(ns, serviceName),
Name: loadBalancerClusterWideTCPServiceName(ns, serviceName),
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.GetNetworkName(), 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, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
lbGroupForNetwork(types.ClusterSwitchLBGroupName, l2UDN, nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol)),
lbGroupForNetwork(types.ClusterRouterLBGroupName, l2UDN, nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol)),

nodeIPTemplate(nodeAInfo),
nodeIPTemplate(nodeBInfo),
},
Expand Down Expand Up @@ -881,6 +1056,98 @@ func TestSyncServices(t *testing.T) {
lbGroupForNetwork(types.ClusterSwitchLBGroupName, l3UDN, nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol)),
lbGroupForNetwork(types.ClusterRouterLBGroupName, l3UDN, nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol)),

nodeIPTemplate(nodeAInfo),
nodeIPTemplate(nodeBInfo),
},
},
{
netInfo: l2UDN,
initialDb: []libovsdbtest.TestData{
&nbdb.LoadBalancer{
UUID: loadBalancerClusterWideTCPServiceName(ns, serviceName),
Name: loadBalancerClusterWideTCPServiceName(ns, serviceName),
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, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
lbGroupForNetwork(types.ClusterSwitchLBGroupName, l2UDN),
lbGroupForNetwork(types.ClusterRouterLBGroupName, l2UDN),
},
expectedDb: []libovsdbtest.TestData{
&nbdb.LoadBalancer{
UUID: loadBalancerClusterWideTCPServiceName(ns, serviceName),
Name: loadBalancerClusterWideTCPServiceName(ns, serviceName),
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.GetNetworkName(), 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, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
lbGroupForNetwork(types.ClusterSwitchLBGroupName, l2UDN, nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol)),
lbGroupForNetwork(types.ClusterRouterLBGroupName, l2UDN, nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol)),

nodeIPTemplate(nodeAInfo),
nodeIPTemplate(nodeBInfo),
},
dbStateAfterDeleting: []libovsdbtest.TestData{
&nbdb.LoadBalancer{
UUID: loadBalancerClusterWideTCPServiceName(ns, serviceName),
Name: loadBalancerClusterWideTCPServiceName(ns, serviceName),
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.GetNetworkName(), 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, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
lbGroupForNetwork(types.ClusterSwitchLBGroupName, l2UDN, nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol)),
lbGroupForNetwork(types.ClusterRouterLBGroupName, l2UDN, nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol)),

nodeIPTemplate(nodeAInfo),
nodeIPTemplate(nodeBInfo),
},
Expand Down Expand Up @@ -1088,6 +1355,91 @@ func TestSyncServices(t *testing.T) {
},
},
},
{
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: loadBalancerClusterWideTCPServiceName(ns, serviceName),
Name: loadBalancerClusterWideTCPServiceName(ns, serviceName),
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: nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol),
Name: nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol),
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: nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv6Protocol),
Name: nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv6Protocol),
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, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
lbGroupForNetwork(types.ClusterSwitchLBGroupName,
l2UDN,
nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol),
nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv6Protocol)),
lbGroupForNetwork(types.ClusterRouterLBGroupName,
l2UDN,
nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv4Protocol),
nodeMergedTemplateLoadBalancerName(ns, serviceName, v1.IPv6Protocol)),

&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],
},
},
},
},
},
},
}
Expand Down

0 comments on commit 2eda103

Please sign in to comment.