github.com/vmware/go-vcloud-director/v2@v2.24.0/govcd/nsxt_alb_settings.go (about)

     1  package govcd
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/vmware/go-vcloud-director/v2/types/v56"
     7  )
     8  
     9  // GetAlbSettings retrieves NSX-T ALB settings for a particular Edge Gateway
    10  func (egw *NsxtEdgeGateway) GetAlbSettings() (*types.NsxtAlbConfig, error) {
    11  	client := egw.client
    12  	endpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointAlbEdgeGateway
    13  	apiVersion, err := client.getOpenApiHighestElevatedVersion(endpoint)
    14  	if err != nil {
    15  		return nil, err
    16  	}
    17  
    18  	urlRef, err := client.OpenApiBuildEndpoint(fmt.Sprintf(endpoint, egw.EdgeGateway.ID))
    19  	if err != nil {
    20  		return nil, err
    21  	}
    22  
    23  	typeResponse := &types.NsxtAlbConfig{}
    24  	err = client.OpenApiGetItem(apiVersion, urlRef, nil, &typeResponse, nil)
    25  	if err != nil {
    26  		return nil, err
    27  	}
    28  
    29  	return typeResponse, nil
    30  }
    31  
    32  // UpdateAlbSettings updates NSX-T ALB settings for a particular Edge Gateway
    33  func (egw *NsxtEdgeGateway) UpdateAlbSettings(config *types.NsxtAlbConfig) (*types.NsxtAlbConfig, error) {
    34  	client := egw.client
    35  	endpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointAlbEdgeGateway
    36  	apiVersion, err := client.getOpenApiHighestElevatedVersion(endpoint)
    37  	if err != nil {
    38  		return nil, err
    39  	}
    40  
    41  	urlRef, err := client.OpenApiBuildEndpoint(fmt.Sprintf(endpoint, egw.EdgeGateway.ID))
    42  	if err != nil {
    43  		return nil, err
    44  	}
    45  
    46  	typeResponse := &types.NsxtAlbConfig{}
    47  	err = client.OpenApiPutItem(apiVersion, urlRef, nil, config, typeResponse, nil)
    48  	if err != nil {
    49  		return nil, err
    50  	}
    51  
    52  	return typeResponse, nil
    53  }
    54  
    55  // DisableAlb is a shortcut wrapping UpdateAlbSettings which disables ALB configuration
    56  func (egw *NsxtEdgeGateway) DisableAlb() error {
    57  	config := &types.NsxtAlbConfig{
    58  		Enabled: false,
    59  	}
    60  	_, err := egw.UpdateAlbSettings(config)
    61  	if err != nil {
    62  		return fmt.Errorf("error disabling NSX-T ALB: %s", err)
    63  	}
    64  
    65  	return nil
    66  }