From e5c3315cd6075f097fe4ec20aef61ec3bea021c8 Mon Sep 17 00:00:00 2001 From: Wenqi Qiu Date: Thu, 15 Aug 2024 12:08:32 +0800 Subject: [PATCH] Fix AccessMode name in NSX request body fix subnet e2e test Signed-off-by: Wenqi Qiu --- pkg/apis/vpc/v1alpha1/subnet_types.go | 6 ++++++ .../vpc/v1alpha1/vpcnetworkconfiguration_types.go | 6 ------ pkg/nsx/services/subnet/builder.go | 13 +++++++++++-- pkg/nsx/services/subnetport/store.go | 2 ++ test/e2e/manifest/testSubnet/subnetport_1.yaml | 2 +- test/e2e/manifest/testSubnet/subnetport_3.yaml | 2 +- test/e2e/manifest/testSubnet/subnetset-dhcp.yaml | 1 + test/e2e/manifest/testSubnet/subnetset-static.yaml | 1 + test/e2e/nsx_subnet_test.go | 7 +++---- 9 files changed, 26 insertions(+), 14 deletions(-) diff --git a/pkg/apis/vpc/v1alpha1/subnet_types.go b/pkg/apis/vpc/v1alpha1/subnet_types.go index 391ed8ae2..d11be4943 100644 --- a/pkg/apis/vpc/v1alpha1/subnet_types.go +++ b/pkg/apis/vpc/v1alpha1/subnet_types.go @@ -9,6 +9,12 @@ import ( type AccessMode string +const ( + AccessModePublic string = "Public" + AccessModePrivate string = "Private" + AccessModeProject string = "PrivateTGW" +) + // SubnetSpec defines the desired state of Subnet. type SubnetSpec struct { // Size of Subnet based upon estimated workload count. diff --git a/pkg/apis/vpc/v1alpha1/vpcnetworkconfiguration_types.go b/pkg/apis/vpc/v1alpha1/vpcnetworkconfiguration_types.go index 96a3de7bc..629f3f31d 100644 --- a/pkg/apis/vpc/v1alpha1/vpcnetworkconfiguration_types.go +++ b/pkg/apis/vpc/v1alpha1/vpcnetworkconfiguration_types.go @@ -8,12 +8,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -const ( - AccessModePublic string = "Public" - AccessModePrivate string = "Private" - AccessModeProject string = "PrivateTGW" -) - // VPCNetworkConfigurationSpec defines the desired state of VPCNetworkConfiguration. // There is a default VPCNetworkConfiguration that applies to Namespaces // do not have a VPCNetworkConfiguration assigned. When a field is not set diff --git a/pkg/nsx/services/subnet/builder.go b/pkg/nsx/services/subnet/builder.go index cc4bee9ba..4310d21b6 100644 --- a/pkg/nsx/services/subnet/builder.go +++ b/pkg/nsx/services/subnet/builder.go @@ -12,6 +12,8 @@ import ( "github.com/vmware-tanzu/nsx-operator/pkg/util" ) +const AccessModeProjectInNSX string = "Private_TGW" + var ( String = common.String Int64 = common.Int64 @@ -44,6 +46,13 @@ func (service *SubnetService) buildSubnetSetName(subnetset *v1alpha1.SubnetSet, return util.GenerateTruncName(common.MaxSubnetNameLength, resName, "", index, "", "") } +func convertAccessMode(accessMode string) string { + if accessMode == v1alpha1.AccessModeProject { + return AccessModeProjectInNSX + } + return accessMode +} + func (service *SubnetService) buildSubnet(obj client.Object, tags []model.Tag) (*model.VpcSubnet, error) { tags = append(service.buildBasicTags(obj), tags...) var nsxSubnet *model.VpcSubnet @@ -52,7 +61,7 @@ func (service *SubnetService) buildSubnet(obj client.Object, tags []model.Tag) ( case *v1alpha1.Subnet: nsxSubnet = &model.VpcSubnet{ Id: String(service.BuildSubnetID(o)), - AccessMode: String(util.Capitalize(string(o.Spec.AccessMode))), + AccessMode: String(convertAccessMode(util.Capitalize(string(o.Spec.AccessMode)))), Ipv4SubnetSize: Int64(int64(o.Spec.IPv4SubnetSize)), DhcpConfig: service.buildDHCPConfig(o.Spec.DHCPConfig.EnableDHCP, int64(o.Spec.IPv4SubnetSize-4)), DisplayName: String(service.buildSubnetName(o)), @@ -65,7 +74,7 @@ func (service *SubnetService) buildSubnet(obj client.Object, tags []model.Tag) ( index := util.GetRandomIndexString() nsxSubnet = &model.VpcSubnet{ Id: String(service.buildSubnetSetID(o, index)), - AccessMode: String(util.Capitalize(string(o.Spec.AccessMode))), + AccessMode: String(convertAccessMode(util.Capitalize(string(o.Spec.AccessMode)))), Ipv4SubnetSize: Int64(int64(o.Spec.IPv4SubnetSize)), DhcpConfig: service.buildDHCPConfig(o.Spec.DHCPConfig.EnableDHCP, int64(o.Spec.IPv4SubnetSize-4)), DisplayName: String(service.buildSubnetSetName(o, index)), diff --git a/pkg/nsx/services/subnetport/store.go b/pkg/nsx/services/subnetport/store.go index c9c7464cd..6a01e4d68 100644 --- a/pkg/nsx/services/subnetport/store.go +++ b/pkg/nsx/services/subnetport/store.go @@ -16,6 +16,8 @@ func keyFunc(obj interface{}) (string, error) { return *v.Id, nil case types.UID: return string(v), nil + case string: + return v, nil default: return "", errors.New("keyFunc doesn't support unknown type") } diff --git a/test/e2e/manifest/testSubnet/subnetport_1.yaml b/test/e2e/manifest/testSubnet/subnetport_1.yaml index e29e78d38..99d8491b4 100644 --- a/test/e2e/manifest/testSubnet/subnetport_1.yaml +++ b/test/e2e/manifest/testSubnet/subnetport_1.yaml @@ -1,7 +1,7 @@ apiVersion: crd.nsx.vmware.com/v1alpha1 kind: SubnetPort metadata: - name: port-1 + name: port-e2e-test-1 namespace: subnet-e2e spec: subnetSet: pod-default diff --git a/test/e2e/manifest/testSubnet/subnetport_3.yaml b/test/e2e/manifest/testSubnet/subnetport_3.yaml index d9117dae5..b4de8d2e5 100644 --- a/test/e2e/manifest/testSubnet/subnetport_3.yaml +++ b/test/e2e/manifest/testSubnet/subnetport_3.yaml @@ -1,6 +1,6 @@ apiVersion: crd.nsx.vmware.com/v1alpha1 kind: SubnetPort metadata: - name: port-3 + name: port-e2e-test-3 namespace: subnet-e2e-shared spec: diff --git a/test/e2e/manifest/testSubnet/subnetset-dhcp.yaml b/test/e2e/manifest/testSubnet/subnetset-dhcp.yaml index cad5eb79a..7a5e12ab8 100644 --- a/test/e2e/manifest/testSubnet/subnetset-dhcp.yaml +++ b/test/e2e/manifest/testSubnet/subnetset-dhcp.yaml @@ -4,5 +4,6 @@ metadata: name: user-pod-subnetset-dhcp namespace: subnet-e2e spec: + accessMode: PrivateTGW DHCPConfig: enableDHCP: true diff --git a/test/e2e/manifest/testSubnet/subnetset-static.yaml b/test/e2e/manifest/testSubnet/subnetset-static.yaml index 9bab268fd..c1e3385ab 100644 --- a/test/e2e/manifest/testSubnet/subnetset-static.yaml +++ b/test/e2e/manifest/testSubnet/subnetset-static.yaml @@ -4,6 +4,7 @@ metadata: name: user-pod-subnetset-static namespace: subnet-e2e spec: + accessMode: Private advancedConfig: staticIPAllocation: enable: true diff --git a/test/e2e/nsx_subnet_test.go b/test/e2e/nsx_subnet_test.go index 0994bdcd2..9112f6fc0 100644 --- a/test/e2e/nsx_subnet_test.go +++ b/test/e2e/nsx_subnet_test.go @@ -69,7 +69,6 @@ func TestSubnetSet(t *testing.T) { teardownTest(t, E2ENamespaceTarget, SubnetDeletionTimeout) }) - t.Skip("Skip test") t.Run("case=DefaultSubnetSet", defaultSubnetSet) t.Run("case=UserSubnetSet", UserSubnetSet) t.Run("case=SharedSubnetSet", sharedSubnetSet) @@ -90,7 +89,7 @@ func defaultSubnetSet(t *testing.T) { portPath, _ := filepath.Abs("./manifest/testSubnet/subnetport_1.yaml") err = applyYAML(portPath, E2ENamespace) assertNil(t, err) - err = testData.waitForCRReadyOrDeleted(defaultTimeout, SubnetPortCRType, E2ENamespace, "port-1", Ready) + err = testData.waitForCRReadyOrDeleted(defaultTimeout, SubnetPortCRType, E2ENamespace, "port-e2e-test-1", Ready) assertNil(t, err) defer deleteYAML(portPath, E2ENamespace) @@ -233,7 +232,7 @@ func sharedSubnetSet(t *testing.T) { portPath, _ := filepath.Abs("./manifest/testSubnet/subnetport_3.yaml") err = applyYAML(portPath, E2ENamespaceShared) assertNil(t, err) - err = testData.waitForCRReadyOrDeleted(defaultTimeout, SubnetPortCRType, E2ENamespaceShared, "port-3", Ready) + err = testData.waitForCRReadyOrDeleted(defaultTimeout, SubnetPortCRType, E2ENamespaceShared, "port-e2e-test-3", Ready) assertNil(t, err) defer deleteYAML(portPath, E2ENamespaceShared) @@ -243,7 +242,7 @@ func sharedSubnetSet(t *testing.T) { assert.NotEmpty(t, subnetSet.Status.Subnets, "No Subnet info in SubnetSet") // 4. Check IP address is allocated to SubnetPort. - port, err := testData.crdClientset.CrdV1alpha1().SubnetPorts(E2ENamespaceShared).Get(context.TODO(), "port-3", v1.GetOptions{}) + port, err := testData.crdClientset.CrdV1alpha1().SubnetPorts(E2ENamespaceShared).Get(context.TODO(), "port-e2e-test-3", v1.GetOptions{}) assertNil(t, err) assert.NotEmpty(t, port.Status.NetworkInterfaceConfig.IPAddresses[0].IPAddress, "No IP address in SubnetPort")