github.com/vmware/go-vcloud-director/v2@v2.24.0/govcd/nsxt_alb_settings_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  
    10  	. "gopkg.in/check.v1"
    11  )
    12  
    13  func (vcd *TestVCD) Test_GetAlbSettings(check *C) {
    14  	skipNoNsxtAlbConfiguration(vcd, check)
    15  	skipOpenApiEndpointTest(vcd, check, types.OpenApiPathVersion1_0_0+types.OpenApiEndpointAlbEdgeGateway)
    16  
    17  	edge, err := vcd.nsxtVdc.GetNsxtEdgeGatewayByName(vcd.config.VCD.Nsxt.EdgeGateway)
    18  	check.Assert(err, IsNil)
    19  
    20  	albSettings, err := edge.GetAlbSettings()
    21  	check.Assert(err, IsNil)
    22  	check.Assert(albSettings, NotNil)
    23  	check.Assert(albSettings.Enabled, Equals, false)
    24  }
    25  
    26  func (vcd *TestVCD) Test_UpdateAlbSettings(check *C) {
    27  	if vcd.skipAdminTests {
    28  		check.Skip(fmt.Sprintf(TestRequiresSysAdminPrivileges, check.TestName()))
    29  	}
    30  	skipNoNsxtAlbConfiguration(vcd, check)
    31  	skipOpenApiEndpointTest(vcd, check, types.OpenApiPathVersion1_0_0+types.OpenApiEndpointAlbEdgeGateway)
    32  
    33  	controller, cloud, seGroup := spawnAlbControllerCloudServiceEngineGroup(vcd, check, "DEDICATED")
    34  	edge, err := vcd.nsxtVdc.GetNsxtEdgeGatewayByName(vcd.config.VCD.Nsxt.EdgeGateway)
    35  	check.Assert(err, IsNil)
    36  
    37  	// Enable ALB on Edge Gateway with default ServiceNetworkDefinition
    38  	albSettingsConfig := &types.NsxtAlbConfig{
    39  		Enabled: true,
    40  	}
    41  
    42  	// Field is only available when using API version v37.0 onwards
    43  	if vcd.client.Client.APIVCDMaxVersionIs(">= 37.0") {
    44  		albSettingsConfig.SupportedFeatureSet = "STANDARD"
    45  	}
    46  
    47  	enabledSettings, err := edge.UpdateAlbSettings(albSettingsConfig)
    48  	check.Assert(err, IsNil)
    49  	check.Assert(enabledSettings.Enabled, Equals, true)
    50  	check.Assert(enabledSettings.ServiceNetworkDefinition, Equals, "192.168.255.1/25")
    51  	// Field is only available when using API version v37.0 onwards
    52  	if vcd.client.Client.APIVCDMaxVersionIs(">= 37.0") {
    53  		check.Assert(enabledSettings.SupportedFeatureSet, Equals, "STANDARD")
    54  	}
    55  	PrependToCleanupList("", "OpenApiEntityAlbSettingsDisable", edge.EdgeGateway.Name, check.TestName())
    56  
    57  	// Disable ALB on Edge Gateway
    58  	albSettingsConfig.Enabled = false
    59  	disabledSettings, err := edge.UpdateAlbSettings(albSettingsConfig)
    60  	check.Assert(err, IsNil)
    61  	check.Assert(disabledSettings.Enabled, Equals, false)
    62  
    63  	// Enable ALB on Edge Gateway with custom ServiceNetworkDefinition
    64  	albSettingsConfig.Enabled = true
    65  	albSettingsConfig.ServiceNetworkDefinition = "93.93.11.1/25"
    66  	enabledSettingsCustomServiceDefinition, err := edge.UpdateAlbSettings(albSettingsConfig)
    67  	check.Assert(err, IsNil)
    68  	check.Assert(enabledSettingsCustomServiceDefinition.Enabled, Equals, true)
    69  	check.Assert(enabledSettingsCustomServiceDefinition.ServiceNetworkDefinition, Equals, "93.93.11.1/25")
    70  
    71  	// Disable ALB on Edge Gateway
    72  	err = edge.DisableAlb()
    73  	check.Assert(err, IsNil)
    74  
    75  	// Enable IPv6 service network definition (VCD 10.4.0+)
    76  	if vcd.client.Client.APIVCDMaxVersionIs(">= 37.0") {
    77  		printVerbose("Enabling IPv6 service network definition for VCD 10.4.0+\n")
    78  		albSettingsConfig.Ipv6ServiceNetworkDefinition = "2001:0db8:85a3:0000:0000:8a2e:0370:7334/120"
    79  		enabledSettingsIpv6ServiceDefinition, err := edge.UpdateAlbSettings(albSettingsConfig)
    80  		check.Assert(err, IsNil)
    81  		check.Assert(enabledSettingsIpv6ServiceDefinition.Ipv6ServiceNetworkDefinition, Equals, "2001:0db8:85a3:0000:0000:8a2e:0370:7334/120")
    82  		err = edge.DisableAlb()
    83  		check.Assert(err, IsNil)
    84  	}
    85  
    86  	// Enable Transparent mode (VCD 10.4.1+)
    87  	if vcd.client.Client.APIVCDMaxVersionIs(">= 37.1") {
    88  		printVerbose("Enabling Transparent mode for VCD 10.4.1+\n")
    89  		albSettingsConfig.TransparentModeEnabled = addrOf(true)
    90  		enabledSettingsTransparentMode, err := edge.UpdateAlbSettings(albSettingsConfig)
    91  		check.Assert(err, IsNil)
    92  		check.Assert(*enabledSettingsTransparentMode.TransparentModeEnabled, Equals, true)
    93  		err = edge.DisableAlb()
    94  		check.Assert(err, IsNil)
    95  	}
    96  
    97  	albSettings, err := edge.GetAlbSettings()
    98  	check.Assert(err, IsNil)
    99  	check.Assert(albSettings, NotNil)
   100  	check.Assert(albSettings.Enabled, Equals, false)
   101  
   102  	// Remove objects
   103  	err = seGroup.Delete()
   104  	check.Assert(err, IsNil)
   105  	err = cloud.Delete()
   106  	check.Assert(err, IsNil)
   107  	err = controller.Delete()
   108  	check.Assert(err, IsNil)
   109  }