github.com/vmware/go-vcloud-director/v2@v2.24.0/govcd/nsxt_alb_controllers_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 // Test_NsxtAlbController tests out NSX-T ALB Controller capabilities 15 func (vcd *TestVCD) Test_NsxtAlbController(check *C) { 16 if vcd.skipAdminTests { 17 check.Skip(fmt.Sprintf(TestRequiresSysAdminPrivileges, check.TestName())) 18 } 19 skipNoNsxtAlbConfiguration(vcd, check) 20 21 newController := spawnAlbController(vcd, check) 22 23 // Get by Url 24 controllerByUrl, err := vcd.client.GetAlbControllerByUrl(newController.NsxtAlbController.Url) 25 check.Assert(err, IsNil) 26 27 // Get by Name 28 controllerByName, err := vcd.client.GetAlbControllerByName(controllerByUrl.NsxtAlbController.Name) 29 check.Assert(err, IsNil) 30 check.Assert(controllerByName.NsxtAlbController.ID, Equals, controllerByUrl.NsxtAlbController.ID) 31 32 // Get by ID 33 controllerById, err := vcd.client.GetAlbControllerById(controllerByUrl.NsxtAlbController.ID) 34 check.Assert(err, IsNil) 35 check.Assert(controllerById.NsxtAlbController.ID, Equals, controllerByName.NsxtAlbController.ID) 36 37 // Get all Controllers and expect to find at least the known one 38 allControllers, err := vcd.client.GetAllAlbControllers(nil) 39 check.Assert(err, IsNil) 40 check.Assert(len(allControllers) > 0, Equals, true) 41 var foundController bool 42 for controllerIndex := range allControllers { 43 if allControllers[controllerIndex].NsxtAlbController.ID == controllerByUrl.NsxtAlbController.ID { 44 foundController = true 45 } 46 } 47 check.Assert(foundController, Equals, true) 48 49 // Check filtering for GetAllAlbControllers works 50 filter := url.Values{} 51 filter.Add("filter", "name=="+controllerByUrl.NsxtAlbController.Name) 52 filteredControllers, err := vcd.client.GetAllAlbControllers(nil) 53 check.Assert(err, IsNil) 54 check.Assert(len(filteredControllers), Equals, 1) 55 check.Assert(filteredControllers[0].NsxtAlbController.ID, Equals, controllerByUrl.NsxtAlbController.ID) 56 57 // Test update of ALB controller 58 updateControllerDef := &types.NsxtAlbController{ 59 ID: controllerByUrl.NsxtAlbController.ID, 60 Name: controllerByUrl.NsxtAlbController.Name + "-update", 61 Description: "Description set", 62 Url: vcd.config.VCD.Nsxt.NsxtAlbControllerUrl, 63 Username: vcd.config.VCD.Nsxt.NsxtAlbControllerUser, 64 Password: vcd.config.VCD.Nsxt.NsxtAlbControllerPassword, 65 LicenseType: "BASIC", // Not used since v37.0 66 } 67 updatedController, err := controllerByUrl.Update(updateControllerDef) 68 check.Assert(err, IsNil) 69 check.Assert(updatedController.NsxtAlbController.Name, Equals, updateControllerDef.Name) 70 check.Assert(updatedController.NsxtAlbController.Description, Equals, updateControllerDef.Description) 71 check.Assert(updatedController.NsxtAlbController.Url, Equals, updateControllerDef.Url) 72 check.Assert(updatedController.NsxtAlbController.Username, Equals, updateControllerDef.Username) 73 if vcd.client.Client.APIVCDMaxVersionIs("< 37.0") { 74 check.Assert(updatedController.NsxtAlbController.LicenseType, Equals, updateControllerDef.LicenseType) 75 } 76 77 // Revert settings to original ones 78 _, err = controllerByUrl.Update(controllerByUrl.NsxtAlbController) 79 check.Assert(err, IsNil) 80 81 // Remove and make sure it is not found 82 err = updatedController.Delete() 83 check.Assert(err, IsNil) 84 85 // Try to find controller and expect an 86 _, err = vcd.client.GetAlbControllerByName(controllerByUrl.NsxtAlbController.Name) 87 check.Assert(ContainsNotFound(err), Equals, true) 88 } 89 90 // spawnAlbController is a helper function to spawn NSX-T ALB Controller instance from defined config 91 func spawnAlbController(vcd *TestVCD, check *C) *NsxtAlbController { 92 skipNoNsxtAlbConfiguration(vcd, check) 93 94 newControllerDef := &types.NsxtAlbController{ 95 Name: check.TestName(), 96 Url: vcd.config.VCD.Nsxt.NsxtAlbControllerUrl, 97 Username: vcd.config.VCD.Nsxt.NsxtAlbControllerUser, 98 Password: vcd.config.VCD.Nsxt.NsxtAlbControllerPassword, 99 LicenseType: "ENTERPRISE", // Not used since v37.0 100 } 101 102 newController, err := vcd.client.CreateNsxtAlbController(newControllerDef) 103 check.Assert(err, IsNil) 104 check.Assert(newController.NsxtAlbController.ID, Not(Equals), "") 105 106 openApiEndpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointAlbController + newController.NsxtAlbController.ID 107 AddToCleanupListOpenApi(newController.NsxtAlbController.Name, check.TestName(), openApiEndpoint) 108 109 return newController 110 }