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  }