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

     1  /*
     2   * Copyright 2023 VMware, Inc.  All rights reserved.  Licensed under the Apache v2 License.
     3   */
     4  
     5  package govcd
     6  
     7  import (
     8  	"fmt"
     9  	"github.com/vmware/go-vcloud-director/v2/types/v56"
    10  	"net/url"
    11  )
    12  
    13  func (vcdClient *VCDClient) GetAllNsxtTransportZones(nsxtManagerId string, queryParameters url.Values) ([]*types.TransportZone, error) {
    14  	if nsxtManagerId == "" {
    15  		return nil, fmt.Errorf("empty NSX-T manager ID")
    16  	}
    17  
    18  	if !isUrn(nsxtManagerId) {
    19  		return nil, fmt.Errorf("NSX-T manager ID is not URN (e.g. 'urn:vcloud:nsxtmanager:09722307-aee0-4623-af95-7f8e577c9ebc)', got: %s", nsxtManagerId)
    20  	}
    21  
    22  	client := vcdClient.Client
    23  	endpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointImportableTransportZones
    24  	apiVersion, err := client.checkOpenApiEndpointCompatibility(endpoint)
    25  	if err != nil {
    26  		return nil, err
    27  	}
    28  
    29  	urlRef, err := client.OpenApiBuildEndpoint(endpoint)
    30  	if err != nil {
    31  		return nil, err
    32  	}
    33  
    34  	queryParams := copyOrNewUrlValues(queryParameters)
    35  	filterField := "_context"
    36  	if client.APIClientVersionIs(">=38.0") {
    37  		// field "networkProviderId" does not exist prior to API 38.0, where field "_context" is deprecated
    38  		filterField = "networkProviderId"
    39  	}
    40  	queryParams = queryParameterFilterAnd(fmt.Sprintf("%s==%s", filterField, nsxtManagerId), queryParams)
    41  	var typeResponses []*types.TransportZone
    42  	err = client.OpenApiGetAllItems(apiVersion, urlRef, queryParams, &typeResponses, nil)
    43  	if err != nil {
    44  		return nil, err
    45  	}
    46  
    47  	return typeResponses, nil
    48  }