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  }