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 }