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  }