github.com/vmware/go-vcloud-director/v2@v2.24.0/govcd/nsxt_alb_service_engine_groups_test.go (about) 1 //go:build nsxt || alb || functional || ALL 2 3 package govcd 4 5 import ( 6 "fmt" 7 8 "github.com/vmware/go-vcloud-director/v2/types/v56" 9 . "gopkg.in/check.v1" 10 ) 11 12 func (vcd *TestVCD) Test_GetAllAlbServiceEngineGroups(check *C) { 13 if vcd.skipAdminTests { 14 check.Skip(fmt.Sprintf(TestRequiresSysAdminPrivileges, check.TestName())) 15 } 16 17 controller, createdAlbCloud := spawnAlbControllerAndCloud(vcd, check) 18 19 importableSeGroups, err := vcd.client.GetAllAlbImportableServiceEngineGroups(createdAlbCloud.NsxtAlbCloud.ID, nil) 20 check.Assert(err, IsNil) 21 check.Assert(len(importableSeGroups) > 0, Equals, true) 22 23 albSeGroup := &types.NsxtAlbServiceEngineGroup{ 24 Name: check.TestName() + "SE-group", 25 Description: "Service Engine Group created by " + check.TestName(), 26 ReservationType: "DEDICATED", 27 ServiceEngineGroupBacking: types.ServiceEngineGroupBacking{ 28 BackingId: importableSeGroups[0].NsxtAlbImportableServiceEngineGroups.ID, 29 LoadBalancerCloudRef: &types.OpenApiReference{ 30 ID: createdAlbCloud.NsxtAlbCloud.ID, 31 }, 32 }, 33 } 34 35 // Field is only available when using API version v37.0 onwards 36 if vcd.client.Client.APIVCDMaxVersionIs(">= 37.0") { 37 albSeGroup.SupportedFeatureSet = "PREMIUM" 38 } 39 40 createdSeGroup, err := vcd.client.CreateNsxtAlbServiceEngineGroup(albSeGroup) 41 check.Assert(err, IsNil) 42 43 check.Assert(createdSeGroup.NsxtAlbServiceEngineGroup.ID != "", Equals, true) 44 check.Assert(createdSeGroup.NsxtAlbServiceEngineGroup.Name, Equals, albSeGroup.Name) 45 check.Assert(createdSeGroup.NsxtAlbServiceEngineGroup.Description, Equals, albSeGroup.Description) 46 check.Assert(createdSeGroup.NsxtAlbServiceEngineGroup.ReservationType, Equals, albSeGroup.ReservationType) 47 // Field is only populated in responses when using API version v37.0 onwards 48 if vcd.client.Client.APIVCDMaxVersionIs(">= 37.0") { 49 check.Assert(createdSeGroup.NsxtAlbServiceEngineGroup.SupportedFeatureSet, Equals, albSeGroup.SupportedFeatureSet) 50 } 51 52 openApiEndpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointAlbServiceEngineGroups + createdSeGroup.NsxtAlbServiceEngineGroup.ID 53 AddToCleanupListOpenApi(createdSeGroup.NsxtAlbServiceEngineGroup.Name, check.TestName(), openApiEndpoint) 54 55 // Sync 56 err = createdSeGroup.Sync() 57 check.Assert(err, IsNil) 58 59 // Find by Name 60 seGroupByName, err := vcd.client.GetAlbServiceEngineGroupByName("", createdSeGroup.NsxtAlbServiceEngineGroup.Name) 61 check.Assert(err, IsNil) 62 check.Assert(seGroupByName, NotNil) 63 64 // Find by ID 65 seGroupById, err := vcd.client.GetAlbServiceEngineGroupById(createdSeGroup.NsxtAlbServiceEngineGroup.ID) 66 check.Assert(err, IsNil) 67 check.Assert(seGroupById, NotNil) 68 69 check.Assert(seGroupByName.NsxtAlbServiceEngineGroup.ID, Equals, createdSeGroup.NsxtAlbServiceEngineGroup.ID) 70 check.Assert(seGroupById.NsxtAlbServiceEngineGroup.ID, Equals, createdSeGroup.NsxtAlbServiceEngineGroup.ID) 71 72 // Test update 73 createdSeGroup.NsxtAlbServiceEngineGroup.Name = createdSeGroup.NsxtAlbServiceEngineGroup.Name + "updated" 74 // Field is only available when using API version v37.0 onwards 75 if vcd.client.Client.APIVCDMaxVersionIs(">= 37.0") { 76 albSeGroup.SupportedFeatureSet = "STANDARD" 77 } 78 updatedSeGroup, err := createdSeGroup.Update(createdSeGroup.NsxtAlbServiceEngineGroup) 79 check.Assert(err, IsNil) 80 81 // SupportedFeatureSet is a field only available since v37.0, in that case we ignore it in the following DeepEquals 82 if vcd.client.Client.APIVCDMaxVersionIs("< 37.0") { 83 updatedSeGroup.NsxtAlbServiceEngineGroup.SupportedFeatureSet = createdSeGroup.NsxtAlbServiceEngineGroup.SupportedFeatureSet 84 } 85 check.Assert(updatedSeGroup.NsxtAlbServiceEngineGroup, DeepEquals, createdSeGroup.NsxtAlbServiceEngineGroup) 86 87 // Cleanup 88 err = createdSeGroup.Delete() 89 check.Assert(err, IsNil) 90 91 err = createdAlbCloud.Delete() 92 check.Assert(err, IsNil) 93 94 err = controller.Delete() 95 check.Assert(err, IsNil) 96 } 97 98 // spawnAlbControllerCloudServiceEngineGroup is a helper function to spawn NSX-T ALB Controller, ALB Cloud, and ALB 99 // Service Engine Group 100 func spawnAlbControllerCloudServiceEngineGroup(vcd *TestVCD, check *C, seGroupReservationType string) (*NsxtAlbController, *NsxtAlbCloud, *NsxtAlbServiceEngineGroup) { 101 skipNoNsxtAlbConfiguration(vcd, check) 102 103 albController, createdAlbCloud := spawnAlbControllerAndCloud(vcd, check) 104 105 importableSeGroup, err := vcd.client.GetAlbImportableServiceEngineGroupByName(createdAlbCloud.NsxtAlbCloud.ID, vcd.config.VCD.Nsxt.NsxtAlbServiceEngineGroup) 106 check.Assert(err, IsNil) 107 108 albSeGroup := &types.NsxtAlbServiceEngineGroup{ 109 Name: check.TestName() + "SE-group", 110 Description: "Service Engine Group created by " + check.TestName(), 111 ReservationType: seGroupReservationType, 112 ServiceEngineGroupBacking: types.ServiceEngineGroupBacking{ 113 BackingId: importableSeGroup.NsxtAlbImportableServiceEngineGroups.ID, 114 LoadBalancerCloudRef: &types.OpenApiReference{ 115 ID: createdAlbCloud.NsxtAlbCloud.ID, 116 }, 117 }, 118 } 119 120 // Field is only available when using API version v37.0 onwards 121 if vcd.client.Client.APIVCDMaxVersionIs(">= 37.0") { 122 albSeGroup.SupportedFeatureSet = "PREMIUM" 123 } 124 125 createdSeGroup, err := vcd.client.CreateNsxtAlbServiceEngineGroup(albSeGroup) 126 check.Assert(err, IsNil) 127 128 openApiEndpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointAlbServiceEngineGroups + createdSeGroup.NsxtAlbServiceEngineGroup.ID 129 PrependToCleanupListOpenApi(createdSeGroup.NsxtAlbServiceEngineGroup.Name, check.TestName(), openApiEndpoint) 130 131 return albController, createdAlbCloud, createdSeGroup 132 }