github.com/vmware/go-vcloud-director/v2@v2.24.0/govcd/nsxt_alb_clouds_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 11 . "gopkg.in/check.v1" 12 ) 13 14 func (vcd *TestVCD) Test_AlbClouds(check *C) { 15 if vcd.skipAdminTests { 16 check.Skip(fmt.Sprintf(TestRequiresSysAdminPrivileges, check.TestName())) 17 } 18 skipNoNsxtAlbConfiguration(vcd, check) 19 20 albController := spawnAlbController(vcd, check) 21 check.Assert(albController, NotNil) 22 23 importableCloud, err := albController.GetAlbImportableCloudByName(vcd.config.VCD.Nsxt.NsxtAlbImportableCloud) 24 check.Assert(err, IsNil) 25 26 albCloudConfig := &types.NsxtAlbCloud{ 27 Name: check.TestName(), 28 Description: "alb-cloud-description", 29 LoadBalancerCloudBacking: types.NsxtAlbCloudBacking{ 30 BackingId: importableCloud.NsxtAlbImportableCloud.ID, 31 BackingType: types.NsxtAlbCloudBackingTypeNsxtAlb, 32 LoadBalancerControllerRef: types.OpenApiReference{ 33 ID: albController.NsxtAlbController.ID, 34 }, 35 }, 36 NetworkPoolRef: &types.OpenApiReference{ 37 ID: importableCloud.NsxtAlbImportableCloud.NetworkPoolRef.ID, 38 }, 39 } 40 41 createdAlbCloud, err := vcd.client.CreateAlbCloud(albCloudConfig) 42 check.Assert(err, IsNil) 43 openApiEndpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointAlbCloud + createdAlbCloud.NsxtAlbCloud.ID 44 AddToCleanupListOpenApi(createdAlbCloud.NsxtAlbCloud.Name, check.TestName(), openApiEndpoint) 45 46 // Get all clouds and ensure the needed one is found 47 allClouds, err := vcd.client.GetAllAlbClouds(nil) 48 check.Assert(err, IsNil) 49 var foundCreatedCloud bool 50 for cloudIndex := range allClouds { 51 if allClouds[cloudIndex].NsxtAlbCloud.ID == createdAlbCloud.NsxtAlbCloud.ID { 52 foundCreatedCloud = true 53 break 54 } 55 } 56 check.Assert(foundCreatedCloud, Equals, true) 57 58 // Filter lookup by name 59 filter := url.Values{} 60 filter.Add("filter", "name=="+createdAlbCloud.NsxtAlbCloud.Name) 61 allCloudsFiltered, err := vcd.client.GetAllAlbClouds(filter) 62 check.Assert(err, IsNil) 63 check.Assert(len(allCloudsFiltered), Equals, 1) 64 check.Assert(allCloudsFiltered[0].NsxtAlbCloud.ID, Equals, createdAlbCloud.NsxtAlbCloud.ID) 65 66 // Get by Name 67 albCloudByName, err := vcd.client.GetAlbCloudByName(createdAlbCloud.NsxtAlbCloud.Name) 68 check.Assert(err, IsNil) 69 check.Assert(albCloudByName.NsxtAlbCloud.Name, Equals, createdAlbCloud.NsxtAlbCloud.Name) 70 71 // Get by ID 72 albCloudById, err := vcd.client.GetAlbCloudById(createdAlbCloud.NsxtAlbCloud.ID) 73 check.Assert(err, IsNil) 74 check.Assert(albCloudById.NsxtAlbCloud.Name, Equals, createdAlbCloud.NsxtAlbCloud.Name) 75 76 // Cleanup 77 err = createdAlbCloud.Delete() 78 check.Assert(err, IsNil) 79 80 _, err = vcd.client.GetAlbCloudByName(createdAlbCloud.NsxtAlbCloud.Name) 81 check.Assert(ContainsNotFound(err), Equals, true) 82 83 err = albController.Delete() 84 check.Assert(err, IsNil) 85 } 86 87 // spawnAlbControllerAndCloud is a helper function to spawn NSX-T ALB Controller and Cloud 88 // It automatically adds these artefacts to clean up list 89 func spawnAlbControllerAndCloud(vcd *TestVCD, check *C) (*NsxtAlbController, *NsxtAlbCloud) { 90 skipNoNsxtAlbConfiguration(vcd, check) 91 92 albController := spawnAlbController(vcd, check) 93 check.Assert(albController, NotNil) 94 95 importableCloud, err := albController.GetAlbImportableCloudByName(vcd.config.VCD.Nsxt.NsxtAlbImportableCloud) 96 check.Assert(err, IsNil) 97 98 albCloudConfig := &types.NsxtAlbCloud{ 99 Name: check.TestName(), 100 Description: "alb-cloud-description", 101 LoadBalancerCloudBacking: types.NsxtAlbCloudBacking{ 102 BackingId: importableCloud.NsxtAlbImportableCloud.ID, 103 //BackingType: types.NsxtAlbCloudBackingTypeNsxtAlb, 104 LoadBalancerControllerRef: types.OpenApiReference{ 105 ID: albController.NsxtAlbController.ID, 106 }, 107 }, 108 NetworkPoolRef: &types.OpenApiReference{ 109 ID: importableCloud.NsxtAlbImportableCloud.NetworkPoolRef.ID, 110 }, 111 } 112 113 createdAlbCloud, err := vcd.client.CreateAlbCloud(albCloudConfig) 114 check.Assert(err, IsNil) 115 116 openApiEndpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointAlbCloud + createdAlbCloud.NsxtAlbCloud.ID 117 PrependToCleanupListOpenApi(createdAlbCloud.NsxtAlbCloud.Name, check.TestName(), openApiEndpoint) 118 119 return albController, createdAlbCloud 120 }