github.com/vmware/go-vcloud-director/v2@v2.24.0/govcd/nsxt_alb_service_engine_group_assignment_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  	. "gopkg.in/check.v1"
    11  )
    12  
    13  func (vcd *TestVCD) Test_GetAllEdgeAlbServiceEngineGroupAssignmentsDedicated(check *C) {
    14  	if vcd.skipAdminTests {
    15  		check.Skip(fmt.Sprintf(TestRequiresSysAdminPrivileges, check.TestName()))
    16  	}
    17  	skipNoNsxtAlbConfiguration(vcd, check)
    18  	skipOpenApiEndpointTest(vcd, check, types.OpenApiPathVersion1_0_0+types.OpenApiEndpointAlbEdgeGateway)
    19  
    20  	controller, cloud, seGroup := spawnAlbControllerCloudServiceEngineGroup(vcd, check, "DEDICATED")
    21  	edge, err := vcd.nsxtVdc.GetNsxtEdgeGatewayByName(vcd.config.VCD.Nsxt.EdgeGateway)
    22  	check.Assert(err, IsNil)
    23  
    24  	// Enable ALB on Edge Gateway with default ServiceNetworkDefinition
    25  	albSettingsConfig := &types.NsxtAlbConfig{
    26  		Enabled: true,
    27  	}
    28  	enabledSettings, err := edge.UpdateAlbSettings(albSettingsConfig)
    29  	check.Assert(err, IsNil)
    30  	check.Assert(enabledSettings.Enabled, Equals, true)
    31  	PrependToCleanupList("OpenApiEntityAlbSettingsDisable", "OpenApiEntityAlbSettingsDisable", edge.EdgeGateway.Name, check.TestName())
    32  
    33  	serviceEngineGroupAssignmentConfig := &types.NsxtAlbServiceEngineGroupAssignment{
    34  		GatewayRef:            &types.OpenApiReference{ID: edge.EdgeGateway.ID},
    35  		ServiceEngineGroupRef: &types.OpenApiReference{ID: seGroup.NsxtAlbServiceEngineGroup.ID},
    36  	}
    37  	assignment, err := vcd.client.CreateAlbServiceEngineGroupAssignment(serviceEngineGroupAssignmentConfig)
    38  	check.Assert(err, IsNil)
    39  	check.Assert(assignment.NsxtAlbServiceEngineGroupAssignment.ID, Not(Equals), "")
    40  	openApiEndpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointAlbServiceEngineGroupAssignments + assignment.NsxtAlbServiceEngineGroupAssignment.ID
    41  	PrependToCleanupListOpenApi(assignment.NsxtAlbServiceEngineGroupAssignment.ServiceEngineGroupRef.Name, check.TestName(), openApiEndpoint)
    42  
    43  	// Get By ID
    44  	assignmentById, err := vcd.client.GetAlbServiceEngineGroupAssignmentById(assignment.NsxtAlbServiceEngineGroupAssignment.ID)
    45  	check.Assert(err, IsNil)
    46  	check.Assert(assignmentById.NsxtAlbServiceEngineGroupAssignment, DeepEquals, assignment.NsxtAlbServiceEngineGroupAssignment)
    47  
    48  	// Get By Name
    49  	assignmentByName, err := vcd.client.GetAlbServiceEngineGroupAssignmentByName(assignment.NsxtAlbServiceEngineGroupAssignment.ServiceEngineGroupRef.Name)
    50  	check.Assert(err, IsNil)
    51  	check.Assert(assignmentByName.NsxtAlbServiceEngineGroupAssignment, DeepEquals, assignment.NsxtAlbServiceEngineGroupAssignment)
    52  
    53  	// Filtered by name and Edge Gateway ID
    54  	queryParams := url.Values{}
    55  	queryParams.Add("filter", fmt.Sprintf("gatewayRef.id==%s", edge.EdgeGateway.ID))
    56  	filteredAssignmentByName, err := vcd.client.GetFilteredAlbServiceEngineGroupAssignmentByName(assignment.NsxtAlbServiceEngineGroupAssignment.ServiceEngineGroupRef.Name, queryParams)
    57  	check.Assert(err, IsNil)
    58  	check.Assert(filteredAssignmentByName.NsxtAlbServiceEngineGroupAssignment, DeepEquals, filteredAssignmentByName.NsxtAlbServiceEngineGroupAssignment)
    59  
    60  	// Get all
    61  	allAssignments, err := vcd.client.GetAllAlbServiceEngineGroupAssignments(nil)
    62  	check.Assert(err, IsNil)
    63  	var foundAssignment bool
    64  	for i := range allAssignments {
    65  		if allAssignments[i].NsxtAlbServiceEngineGroupAssignment.ID == assignment.NsxtAlbServiceEngineGroupAssignment.ID {
    66  			foundAssignment = true
    67  		}
    68  	}
    69  	check.Assert(foundAssignment, Equals, true)
    70  
    71  	assignment.NsxtAlbServiceEngineGroupAssignment.MaxVirtualServices = addrOf(50)
    72  	assignment.NsxtAlbServiceEngineGroupAssignment.MinVirtualServices = addrOf(30)
    73  	// Expect an error because "DEDICATED" service engine group does not support specifying virtual services
    74  	updatedAssignment, err := assignment.Update(assignment.NsxtAlbServiceEngineGroupAssignment)
    75  	check.Assert(err, NotNil)
    76  	check.Assert(updatedAssignment, IsNil)
    77  
    78  	// Perform immediate cleanups
    79  	err = assignment.Delete()
    80  	check.Assert(err, IsNil)
    81  	err = edge.DisableAlb()
    82  	check.Assert(err, IsNil)
    83  	err = seGroup.Delete()
    84  	check.Assert(err, IsNil)
    85  	err = cloud.Delete()
    86  	check.Assert(err, IsNil)
    87  	err = controller.Delete()
    88  	check.Assert(err, IsNil)
    89  }
    90  
    91  func (vcd *TestVCD) Test_GetAllEdgeAlbServiceEngineGroupAssignmentsShared(check *C) {
    92  	if vcd.skipAdminTests {
    93  		check.Skip(fmt.Sprintf(TestRequiresSysAdminPrivileges, check.TestName()))
    94  	}
    95  	skipNoNsxtAlbConfiguration(vcd, check)
    96  	skipOpenApiEndpointTest(vcd, check, types.OpenApiPathVersion1_0_0+types.OpenApiEndpointAlbEdgeGateway)
    97  
    98  	controller, cloud, seGroup := spawnAlbControllerCloudServiceEngineGroup(vcd, check, "SHARED")
    99  	edge, err := vcd.nsxtVdc.GetNsxtEdgeGatewayByName(vcd.config.VCD.Nsxt.EdgeGateway)
   100  	check.Assert(err, IsNil)
   101  
   102  	// Enable ALB on Edge Gateway with default ServiceNetworkDefinition
   103  	albSettingsConfig := &types.NsxtAlbConfig{
   104  		Enabled: true,
   105  	}
   106  	enabledSettings, err := edge.UpdateAlbSettings(albSettingsConfig)
   107  	check.Assert(err, IsNil)
   108  	check.Assert(enabledSettings.Enabled, Equals, true)
   109  	PrependToCleanupList(check.TestName()+"-ALB-settings", "OpenApiEntityAlbSettingsDisable", edge.EdgeGateway.Name, check.TestName())
   110  
   111  	serviceEngineGroupAssignmentConfig := &types.NsxtAlbServiceEngineGroupAssignment{
   112  		GatewayRef:            &types.OpenApiReference{ID: edge.EdgeGateway.ID},
   113  		ServiceEngineGroupRef: &types.OpenApiReference{ID: seGroup.NsxtAlbServiceEngineGroup.ID},
   114  		MaxVirtualServices:    addrOf(89),
   115  		MinVirtualServices:    addrOf(20),
   116  	}
   117  	assignment, err := vcd.client.CreateAlbServiceEngineGroupAssignment(serviceEngineGroupAssignmentConfig)
   118  	check.Assert(err, IsNil)
   119  	check.Assert(assignment.NsxtAlbServiceEngineGroupAssignment.ID, Not(Equals), "")
   120  	openApiEndpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointAlbServiceEngineGroupAssignments + assignment.NsxtAlbServiceEngineGroupAssignment.ID
   121  	PrependToCleanupListOpenApi(assignment.NsxtAlbServiceEngineGroupAssignment.ServiceEngineGroupRef.Name, check.TestName(), openApiEndpoint)
   122  
   123  	// Get By ID
   124  	assignmentById, err := vcd.client.GetAlbServiceEngineGroupAssignmentById(assignment.NsxtAlbServiceEngineGroupAssignment.ID)
   125  	check.Assert(err, IsNil)
   126  	check.Assert(assignmentById.NsxtAlbServiceEngineGroupAssignment, DeepEquals, assignment.NsxtAlbServiceEngineGroupAssignment)
   127  
   128  	// Get By Name
   129  	assignmentByName, err := vcd.client.GetAlbServiceEngineGroupAssignmentByName(assignment.NsxtAlbServiceEngineGroupAssignment.ServiceEngineGroupRef.Name)
   130  	check.Assert(err, IsNil)
   131  	check.Assert(assignmentByName.NsxtAlbServiceEngineGroupAssignment, DeepEquals, assignment.NsxtAlbServiceEngineGroupAssignment)
   132  
   133  	// Filtered by name and Edge Gateway ID
   134  	queryParams := url.Values{}
   135  	queryParams.Add("filter", fmt.Sprintf("gatewayRef.id==%s", edge.EdgeGateway.ID))
   136  	filteredAssignmentByName, err := vcd.client.GetFilteredAlbServiceEngineGroupAssignmentByName(assignment.NsxtAlbServiceEngineGroupAssignment.ServiceEngineGroupRef.Name, queryParams)
   137  	check.Assert(err, IsNil)
   138  	check.Assert(filteredAssignmentByName.NsxtAlbServiceEngineGroupAssignment, DeepEquals, filteredAssignmentByName.NsxtAlbServiceEngineGroupAssignment)
   139  
   140  	// Get all
   141  	allAssignments, err := vcd.client.GetAllAlbServiceEngineGroupAssignments(nil)
   142  	check.Assert(err, IsNil)
   143  	var foundAssignment bool
   144  	for i := range allAssignments {
   145  		if allAssignments[i].NsxtAlbServiceEngineGroupAssignment.ID == assignment.NsxtAlbServiceEngineGroupAssignment.ID {
   146  			foundAssignment = true
   147  		}
   148  	}
   149  	check.Assert(foundAssignment, Equals, true)
   150  
   151  	assignment.NsxtAlbServiceEngineGroupAssignment.MaxVirtualServices = addrOf(50)
   152  	assignment.NsxtAlbServiceEngineGroupAssignment.MinVirtualServices = addrOf(30)
   153  
   154  	updatedAssignment, err := assignment.Update(assignment.NsxtAlbServiceEngineGroupAssignment)
   155  	check.Assert(err, IsNil)
   156  	check.Assert(updatedAssignment, NotNil)
   157  
   158  	// Perform immediate cleanups
   159  	err = assignment.Delete()
   160  	check.Assert(err, IsNil)
   161  	err = edge.DisableAlb()
   162  	check.Assert(err, IsNil)
   163  	err = seGroup.Delete()
   164  	check.Assert(err, IsNil)
   165  	err = cloud.Delete()
   166  	check.Assert(err, IsNil)
   167  	err = controller.Delete()
   168  	check.Assert(err, IsNil)
   169  }