github.com/vmware/go-vcloud-director/v2@v2.24.0/govcd/nsxt_alb_service_engine_group_assignment_test.go (about) 1 //go:build nsxt || alb || functional || ALL 2 3 package govcd 4 5 import ( 6 "fmt" 7 "net/url" 8 9 "github.com/vmware/go-vcloud-director/v2/types/v56" 10 . "gopkg.in/check.v1" 11 ) 12 13 func (vcd *TestVCD) Test_GetAllEdgeAlbServiceEngineGroupAssignmentsDedicated(check *C) { 14 if vcd.skipAdminTests { 15 check.Skip(fmt.Sprintf(TestRequiresSysAdminPrivileges, check.TestName())) 16 } 17 skipNoNsxtAlbConfiguration(vcd, check) 18 skipOpenApiEndpointTest(vcd, check, types.OpenApiPathVersion1_0_0+types.OpenApiEndpointAlbEdgeGateway) 19 20 controller, cloud, seGroup := spawnAlbControllerCloudServiceEngineGroup(vcd, check, "DEDICATED") 21 edge, err := vcd.nsxtVdc.GetNsxtEdgeGatewayByName(vcd.config.VCD.Nsxt.EdgeGateway) 22 check.Assert(err, IsNil) 23 24 // Enable ALB on Edge Gateway with default ServiceNetworkDefinition 25 albSettingsConfig := &types.NsxtAlbConfig{ 26 Enabled: true, 27 } 28 enabledSettings, err := edge.UpdateAlbSettings(albSettingsConfig) 29 check.Assert(err, IsNil) 30 check.Assert(enabledSettings.Enabled, Equals, true) 31 PrependToCleanupList("OpenApiEntityAlbSettingsDisable", "OpenApiEntityAlbSettingsDisable", edge.EdgeGateway.Name, check.TestName()) 32 33 serviceEngineGroupAssignmentConfig := &types.NsxtAlbServiceEngineGroupAssignment{ 34 GatewayRef: &types.OpenApiReference{ID: edge.EdgeGateway.ID}, 35 ServiceEngineGroupRef: &types.OpenApiReference{ID: seGroup.NsxtAlbServiceEngineGroup.ID}, 36 } 37 assignment, err := vcd.client.CreateAlbServiceEngineGroupAssignment(serviceEngineGroupAssignmentConfig) 38 check.Assert(err, IsNil) 39 check.Assert(assignment.NsxtAlbServiceEngineGroupAssignment.ID, Not(Equals), "") 40 openApiEndpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointAlbServiceEngineGroupAssignments + assignment.NsxtAlbServiceEngineGroupAssignment.ID 41 PrependToCleanupListOpenApi(assignment.NsxtAlbServiceEngineGroupAssignment.ServiceEngineGroupRef.Name, check.TestName(), openApiEndpoint) 42 43 // Get By ID 44 assignmentById, err := vcd.client.GetAlbServiceEngineGroupAssignmentById(assignment.NsxtAlbServiceEngineGroupAssignment.ID) 45 check.Assert(err, IsNil) 46 check.Assert(assignmentById.NsxtAlbServiceEngineGroupAssignment, DeepEquals, assignment.NsxtAlbServiceEngineGroupAssignment) 47 48 // Get By Name 49 assignmentByName, err := vcd.client.GetAlbServiceEngineGroupAssignmentByName(assignment.NsxtAlbServiceEngineGroupAssignment.ServiceEngineGroupRef.Name) 50 check.Assert(err, IsNil) 51 check.Assert(assignmentByName.NsxtAlbServiceEngineGroupAssignment, DeepEquals, assignment.NsxtAlbServiceEngineGroupAssignment) 52 53 // Filtered by name and Edge Gateway ID 54 queryParams := url.Values{} 55 queryParams.Add("filter", fmt.Sprintf("gatewayRef.id==%s", edge.EdgeGateway.ID)) 56 filteredAssignmentByName, err := vcd.client.GetFilteredAlbServiceEngineGroupAssignmentByName(assignment.NsxtAlbServiceEngineGroupAssignment.ServiceEngineGroupRef.Name, queryParams) 57 check.Assert(err, IsNil) 58 check.Assert(filteredAssignmentByName.NsxtAlbServiceEngineGroupAssignment, DeepEquals, filteredAssignmentByName.NsxtAlbServiceEngineGroupAssignment) 59 60 // Get all 61 allAssignments, err := vcd.client.GetAllAlbServiceEngineGroupAssignments(nil) 62 check.Assert(err, IsNil) 63 var foundAssignment bool 64 for i := range allAssignments { 65 if allAssignments[i].NsxtAlbServiceEngineGroupAssignment.ID == assignment.NsxtAlbServiceEngineGroupAssignment.ID { 66 foundAssignment = true 67 } 68 } 69 check.Assert(foundAssignment, Equals, true) 70 71 assignment.NsxtAlbServiceEngineGroupAssignment.MaxVirtualServices = addrOf(50) 72 assignment.NsxtAlbServiceEngineGroupAssignment.MinVirtualServices = addrOf(30) 73 // Expect an error because "DEDICATED" service engine group does not support specifying virtual services 74 updatedAssignment, err := assignment.Update(assignment.NsxtAlbServiceEngineGroupAssignment) 75 check.Assert(err, NotNil) 76 check.Assert(updatedAssignment, IsNil) 77 78 // Perform immediate cleanups 79 err = assignment.Delete() 80 check.Assert(err, IsNil) 81 err = edge.DisableAlb() 82 check.Assert(err, IsNil) 83 err = seGroup.Delete() 84 check.Assert(err, IsNil) 85 err = cloud.Delete() 86 check.Assert(err, IsNil) 87 err = controller.Delete() 88 check.Assert(err, IsNil) 89 } 90 91 func (vcd *TestVCD) Test_GetAllEdgeAlbServiceEngineGroupAssignmentsShared(check *C) { 92 if vcd.skipAdminTests { 93 check.Skip(fmt.Sprintf(TestRequiresSysAdminPrivileges, check.TestName())) 94 } 95 skipNoNsxtAlbConfiguration(vcd, check) 96 skipOpenApiEndpointTest(vcd, check, types.OpenApiPathVersion1_0_0+types.OpenApiEndpointAlbEdgeGateway) 97 98 controller, cloud, seGroup := spawnAlbControllerCloudServiceEngineGroup(vcd, check, "SHARED") 99 edge, err := vcd.nsxtVdc.GetNsxtEdgeGatewayByName(vcd.config.VCD.Nsxt.EdgeGateway) 100 check.Assert(err, IsNil) 101 102 // Enable ALB on Edge Gateway with default ServiceNetworkDefinition 103 albSettingsConfig := &types.NsxtAlbConfig{ 104 Enabled: true, 105 } 106 enabledSettings, err := edge.UpdateAlbSettings(albSettingsConfig) 107 check.Assert(err, IsNil) 108 check.Assert(enabledSettings.Enabled, Equals, true) 109 PrependToCleanupList(check.TestName()+"-ALB-settings", "OpenApiEntityAlbSettingsDisable", edge.EdgeGateway.Name, check.TestName()) 110 111 serviceEngineGroupAssignmentConfig := &types.NsxtAlbServiceEngineGroupAssignment{ 112 GatewayRef: &types.OpenApiReference{ID: edge.EdgeGateway.ID}, 113 ServiceEngineGroupRef: &types.OpenApiReference{ID: seGroup.NsxtAlbServiceEngineGroup.ID}, 114 MaxVirtualServices: addrOf(89), 115 MinVirtualServices: addrOf(20), 116 } 117 assignment, err := vcd.client.CreateAlbServiceEngineGroupAssignment(serviceEngineGroupAssignmentConfig) 118 check.Assert(err, IsNil) 119 check.Assert(assignment.NsxtAlbServiceEngineGroupAssignment.ID, Not(Equals), "") 120 openApiEndpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointAlbServiceEngineGroupAssignments + assignment.NsxtAlbServiceEngineGroupAssignment.ID 121 PrependToCleanupListOpenApi(assignment.NsxtAlbServiceEngineGroupAssignment.ServiceEngineGroupRef.Name, check.TestName(), openApiEndpoint) 122 123 // Get By ID 124 assignmentById, err := vcd.client.GetAlbServiceEngineGroupAssignmentById(assignment.NsxtAlbServiceEngineGroupAssignment.ID) 125 check.Assert(err, IsNil) 126 check.Assert(assignmentById.NsxtAlbServiceEngineGroupAssignment, DeepEquals, assignment.NsxtAlbServiceEngineGroupAssignment) 127 128 // Get By Name 129 assignmentByName, err := vcd.client.GetAlbServiceEngineGroupAssignmentByName(assignment.NsxtAlbServiceEngineGroupAssignment.ServiceEngineGroupRef.Name) 130 check.Assert(err, IsNil) 131 check.Assert(assignmentByName.NsxtAlbServiceEngineGroupAssignment, DeepEquals, assignment.NsxtAlbServiceEngineGroupAssignment) 132 133 // Filtered by name and Edge Gateway ID 134 queryParams := url.Values{} 135 queryParams.Add("filter", fmt.Sprintf("gatewayRef.id==%s", edge.EdgeGateway.ID)) 136 filteredAssignmentByName, err := vcd.client.GetFilteredAlbServiceEngineGroupAssignmentByName(assignment.NsxtAlbServiceEngineGroupAssignment.ServiceEngineGroupRef.Name, queryParams) 137 check.Assert(err, IsNil) 138 check.Assert(filteredAssignmentByName.NsxtAlbServiceEngineGroupAssignment, DeepEquals, filteredAssignmentByName.NsxtAlbServiceEngineGroupAssignment) 139 140 // Get all 141 allAssignments, err := vcd.client.GetAllAlbServiceEngineGroupAssignments(nil) 142 check.Assert(err, IsNil) 143 var foundAssignment bool 144 for i := range allAssignments { 145 if allAssignments[i].NsxtAlbServiceEngineGroupAssignment.ID == assignment.NsxtAlbServiceEngineGroupAssignment.ID { 146 foundAssignment = true 147 } 148 } 149 check.Assert(foundAssignment, Equals, true) 150 151 assignment.NsxtAlbServiceEngineGroupAssignment.MaxVirtualServices = addrOf(50) 152 assignment.NsxtAlbServiceEngineGroupAssignment.MinVirtualServices = addrOf(30) 153 154 updatedAssignment, err := assignment.Update(assignment.NsxtAlbServiceEngineGroupAssignment) 155 check.Assert(err, IsNil) 156 check.Assert(updatedAssignment, NotNil) 157 158 // Perform immediate cleanups 159 err = assignment.Delete() 160 check.Assert(err, IsNil) 161 err = edge.DisableAlb() 162 check.Assert(err, IsNil) 163 err = seGroup.Delete() 164 check.Assert(err, IsNil) 165 err = cloud.Delete() 166 check.Assert(err, IsNil) 167 err = controller.Delete() 168 check.Assert(err, IsNil) 169 }