types

package
v2.24.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 18, 2024 License: Apache-2.0 Imports: 5 Imported by: 36

Documentation

Overview

Package types/v56 provider all types which are used by govcd package in order to perform API requests and parse responses

  • Copyright 2021 VMware, Inc. All rights reserved. Licensed under the Apache v2 License.

Index

Constants

View Source
const (
	// PublicCatalog Name
	PublicCatalog = "Public Catalog"

	// DefaultCatalog Name
	DefaultCatalog = "Default Catalog"

	// JSONMimeV57 the json mime for version 5.7 of the API
	JSONMimeV57 = "application/json;version=5.7"
	// AnyXMLMime511 the wildcard xml mime for version 5.11 of the API
	AnyXMLMime511 = "application/*+xml;version=5.11"
	AnyXMLMime    = "application/xml"
	// Version511 the 5.11 version
	Version511 = "5.11"
	// Version is the default version number
	Version = Version511
	// SoapXML mime type
	SoapXML = "application/soap+xml"
	// JSONMime
	JSONMime = "application/json"
)
View Source
const (
	// MimeOrgList mime for org list
	MimeOrgList = "application/vnd.vmware.vcloud.orgList+xml"
	// MimeOrg mime for org
	MimeOrg = "application/vnd.vmware.vcloud.org+xml"
	// MimeAdminOrg mime for admin org
	MimeAdminOrg = "application/vnd.vmware.admin.organization+xml"
	// MimeCatalog mime for catalog
	MimeCatalog = "application/vnd.vmware.vcloud.catalog+xml"
	// MimeCatalogItem mime for catalog item
	MimeCatalogItem = "application/vnd.vmware.vcloud.catalogItem+xml"
	// MimeVDC mime for a VDC
	MimeVDC = "application/vnd.vmware.vcloud.vdc+xml"
	// MimeVDC mime for a admin VDC
	MimeAdminVDC = "application/vnd.vmware.admin.vdc+xml"
	// MimeEdgeGateway mime for an Edge Gateway
	MimeEdgeGateway = "application/vnd.vmware.admin.edgeGateway+xml"
	// MimeVAppTemplate mime for a vapp template
	MimeVAppTemplate = "application/vnd.vmware.vcloud.vAppTemplate+xml"
	// MimeVApp mime for a vApp
	MimeVApp = "application/vnd.vmware.vcloud.vApp+xml"
	// MimeQueryRecords mime for the query records
	MimeQueryRecords = "application/vnd.vmware.vcloud.query.records+xml"
	// MimeAPIExtensibility mime for api extensibility
	MimeAPIExtensibility = "application/vnd.vmware.vcloud.apiextensibility+xml"
	// MimeEntity mime for vcloud entity
	MimeEntity = "application/vnd.vmware.vcloud.entity+xml"
	// MimeQueryList mime for query list
	MimeQueryList = "application/vnd.vmware.vcloud.query.queryList+xml"
	// MimeSession mime for a session
	MimeSession = "application/vnd.vmware.vcloud.session+xml"
	// MimeTask mime for task
	MimeTask = "application/vnd.vmware.vcloud.task+xml"
	// MimeError mime for error
	MimeError = "application/vnd.vmware.vcloud.error+xml"
	// MimeNetwork mime for a network
	MimeNetwork = "application/vnd.vmware.vcloud.network+xml"
	// MimeOrgVdcNetwork mime for an Org VDC network
	MimeOrgVdcNetwork = "application/vnd.vmware.vcloud.orgVdcNetwork+xml"
	//MimeDiskCreateParams mime for create independent disk
	MimeDiskCreateParams = "application/vnd.vmware.vcloud.diskCreateParams+xml"
	// Mime for VMs
	MimeVMs = "application/vnd.vmware.vcloud.vms+xml"
	// Mime for attach or detach independent disk
	MimeDiskAttachOrDetachParams = "application/vnd.vmware.vcloud.diskAttachOrDetachParams+xml"
	// Mime for Disk
	MimeDisk = "application/vnd.vmware.vcloud.disk+xml"
	// Mime for insert or eject media
	MimeMediaInsertOrEjectParams = "application/vnd.vmware.vcloud.mediaInsertOrEjectParams+xml"
	// Mime for catalog
	MimeAdminCatalog = "application/vnd.vmware.admin.catalog+xml"
	// Mime for virtual hardware section
	MimeVirtualHardwareSection = "application/vnd.vmware.vcloud.virtualHardwareSection+xml"
	// Mime for networkConnectionSection
	MimeNetworkConnectionSection = "application/vnd.vmware.vcloud.networkConnectionSection+xml"
	// Mime for Item
	MimeRasdItem = "application/vnd.vmware.vcloud.rasdItem+xml"
	// Mime for guest customization section
	MimeGuestCustomizationSection = "application/vnd.vmware.vcloud.guestCustomizationSection+xml"
	// Mime for guest customization status
	MimeGuestCustomizationStatus = "application/vnd.vmware.vcloud.guestcustomizationstatussection"
	// Mime for network config section
	MimeNetworkConfigSection = "application/vnd.vmware.vcloud.networkconfigsection+xml"
	// Mime for recompose vApp params
	MimeRecomposeVappParams = "application/vnd.vmware.vcloud.recomposeVAppParams+xml"
	// Mime for compose vApp params
	MimeComposeVappParams = "application/vnd.vmware.vcloud.composeVAppParams+xml"
	// Mime for undeploy vApp params
	MimeUndeployVappParams = "application/vnd.vmware.vcloud.undeployVAppParams+xml"
	// Mime for deploy vApp params
	MimeDeployVappParams = "application/vnd.vmware.vcloud.deployVAppParams+xml"
	// Mime for VM
	MimeVM = "application/vnd.vmware.vcloud.vm+xml"
	// Mime for instantiate vApp template params
	MimeInstantiateVappTemplateParams = "application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml"
	// Mime for capture vApp into template
	MimeCaptureVappTemplateParams = "application/vnd.vmware.vcloud.captureVAppParams+xml"
	// Mime for clone vApp template params
	MimeCloneVapp = "application/vnd.vmware.vcloud.cloneVAppParams+xml"
	// Mime for product section
	MimeProductSection = "application/vnd.vmware.vcloud.productSections+xml"
	// Mime for metadata
	MimeMetaData = "application/vnd.vmware.vcloud.metadata+xml"
	// Mime for metadata value
	MimeMetaDataValue = "application/vnd.vmware.vcloud.metadata.value+xml"
	// Mime for a admin network
	MimeExtensionNetwork = "application/vnd.vmware.admin.extension.network+xml"
	// Mime for an external network
	MimeExternalNetwork = "application/vnd.vmware.admin.vmwexternalnet+xml"
	// Mime of an Org User
	MimeAdminUser = "application/vnd.vmware.admin.user+xml"
	// MimeAdminGroup specifies groups
	MimeAdminGroup = "application/vnd.vmware.admin.group+xml"
	// MimeOrgLdapSettings
	MimeOrgLdapSettings = "application/vnd.vmware.admin.organizationldapsettings+xml"
	// Mime of vApp network
	MimeVappNetwork = "application/vnd.vmware.vcloud.vAppNetwork+xml"
	// Mime of access control
	MimeControlAccess = "application/vnd.vmware.vcloud.controlAccess+xml"
	// Mime of VM capabilities
	MimeVmCapabilities = "application/vnd.vmware.vcloud.vmCapabilitiesSection+xml"
	// Mime of Vdc Compute Policy References
	MimeVdcComputePolicyReferences = "application/vnd.vmware.vcloud.vdcComputePolicyReferences+xml"
	// Mime for Storage profile
	MimeStorageProfile = "application/vnd.vmware.admin.vdcStorageProfile+xml "
	// Mime for create VM Params
	MimeCreateVmParams = "application/vnd.vmware.vcloud.CreateVmParams+xml"
	// Mime for instantiate VM Params from template
	MimeInstantiateVmTemplateParams = "application/vnd.vmware.vcloud.instantiateVmTemplateParams+xml"
	// Mime for adding or removing VDC storage profiles
	MimeUpdateVdcStorageProfiles = "application/vnd.vmware.admin.updateVdcStorageProfiles+xml"
	// Mime to modify lease settings
	MimeLeaseSettingSection = "application/vnd.vmware.vcloud.leaseSettingsSection+xml"
	// Mime to publish external catalog
	PublishExternalCatalog = "application/vnd.vmware.admin.publishExternalCatalogParams+xml"
	// Mime to publish a catalog
	PublishCatalog = "application/vnd.vmware.admin.publishCatalogParams+xml"
	// Mime to subscribe to an external catalog
	MimeSubscribeToExternalCatalog = "application/vnd.vmware.admin.externalCatalogSubscriptionParams+json"
	// Mime to identify a media item
	MimeMediaItem = "application/vnd.vmware.vcloud.media+xml"
	// Mime to identify a provider VDC
	MimeProviderVdc = "application/vnd.vmware.admin.vmwprovidervdc+xml"
	// Mime to identify SAML metadata
	MimeSamlMetadata = "application/samlmetadata+xml"
	// Mime to identify organization federation settings (SAML) XML and JSON
	MimeFederationSettingsXml  = "application/vnd.vmware.admin.organizationFederationSettings+xml"
	MimeFederationSettingsJson = "application/vnd.vmware.admin.organizationFederationSettings+json"
	// Mime to handle virtual hardware versions
	MimeVirtualHardwareVersion = "application/vnd.vmware.vcloud.virtualHardwareVersion+xml"
)
View Source
const (
	ResourceTypeOther     int = 0
	ResourceTypeProcessor int = 3
	ResourceTypeMemory    int = 4
	ResourceTypeIDE       int = 5
	ResourceTypeSCSI      int = 6
	ResourceTypeEthernet  int = 10
	ResourceTypeFloppy    int = 14
	ResourceTypeCD        int = 15
	ResourceTypeDVD       int = 16
	ResourceTypeDisk      int = 17
	ResourceTypeUSB       int = 23
)
View Source
const (
	FenceModeIsolated = "isolated"
	FenceModeBridged  = "bridged"
	FenceModeNAT      = "natRouted"
)
View Source
const (
	IPAllocationModeDHCP   = "DHCP"
	IPAllocationModeManual = "MANUAL"
	IPAllocationModeNone   = "NONE"
	IPAllocationModePool   = "POOL"
)
View Source
const (
	XMLNamespaceVCloud    = "http://www.vmware.com/vcloud/v1.5"
	XMLNamespaceOVF       = "http://schemas.dmtf.org/ovf/envelope/1"
	XMLNamespaceVMW       = "http://www.vmware.com/schema/ovf"
	XMLNamespaceXSI       = "http://www.w3.org/2001/XMLSchema-instance"
	XMLNamespaceRASD      = "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData"
	XMLNamespaceVSSD      = "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData"
	XMLNamespaceExtension = "http://www.vmware.com/vcloud/extension/v1.5"
)
View Source
const (
	EdgeNatPath            = "/nat/config"
	EdgeCreateNatPath      = "/nat/config/rules"
	EdgeFirewallPath       = "/firewall/config"
	EdgeCreateFirewallPath = "/firewall/config/rules"
	EdgeVnicConfig         = "/vnics"
	EdgeVdcVnicConfig      = "/vdcNetworks"
	EdgeDhcpRelayPath      = "/dhcp/config/relay"
	EdgeDhcpLeasePath      = "/dhcp/leaseInfo"
	LbConfigPath           = "/loadbalancer/config/"
	LbMonitorPath          = "/loadbalancer/config/monitors/"
	LbServerPoolPath       = "/loadbalancer/config/pools/"
	LbAppProfilePath       = "/loadbalancer/config/applicationprofiles/"
	LbAppRulePath          = "/loadbalancer/config/applicationrules/"
	LbVirtualServerPath    = "/loadbalancer/config/virtualservers/"
)

NSX-V Edge gateway API endpoints

View Source
const (
	GuestCustStatusPending       = "GC_PENDING"
	GuestCustStatusPostPending   = "POST_GC_PENDING"
	GuestCustStatusComplete      = "GC_COMPLETE"
	GuestCustStatusFailed        = "GC_FAILED"
	GuestCustStatusRebootPending = "REBOOT_PENDING"
)

Guest customization statuses. These are all known possible statuses

View Source
const (
	EdgeGatewayVnicTypeUplink       = "uplink"
	EdgeGatewayVnicTypeInternal     = "internal"
	EdgeGatewayVnicTypeTrunk        = "trunk"
	EdgeGatewayVnicTypeSubinterface = "subinterface"
	EdgeGatewayVnicTypeAny          = "any"
)

Edge gateway vNic types

View Source
const (
	FilterNameRegex = "name_regex" // a name, searched by regular expression
	FilterDate      = "date"       // a date expression (>|<|==|>=|<= date)
	FilterIp        = "ip"         // An IP, searched by regular expression
	FilterLatest    = "latest"     // gets the newest element
	FilterEarliest  = "earliest"   // gets the oldest element
	FilterParent    = "parent"     // matches the entity parent
	FilterParentId  = "parent_id"  // matches the entity parent ID
)

Names of the filters allowed in the search engine

View Source
const (
	// The Qt* (Query Type) constants are the names used with Query requests to retrieve the corresponding entities
	QtVappTemplate              = "vAppTemplate"              // vApp template
	QtAdminVappTemplate         = "adminVAppTemplate"         // vApp template as admin
	QtEdgeGateway               = "edgeGateway"               // edge gateway
	QtOrgVdcNetwork             = "orgVdcNetwork"             // Org VDC network
	QtCatalog                   = "catalog"                   // catalog
	QtAdminCatalog              = "adminCatalog"              // catalog as admin
	QtCatalogItem               = "catalogItem"               // catalog item
	QtAdminCatalogItem          = "adminCatalogItem"          // catalog item as admin
	QtAdminMedia                = "adminMedia"                // media item as admin
	QtMedia                     = "media"                     // media item
	QtVm                        = "vm"                        // Virtual machine
	QtAdminVm                   = "adminVM"                   // Virtual machine as admin
	QtVapp                      = "vApp"                      // vApp
	QtAdminVapp                 = "adminVApp"                 // vApp as admin
	QtOrgVdc                    = "orgVdc"                    // Org VDC
	QtAdminOrgVdc               = "adminOrgVdc"               // Org VDC as admin
	QtOrgVdcStorageProfile      = "orgVdcStorageProfile"      // StorageProfile of VDC
	QtAdminOrgVdcStorageProfile = "adminOrgVdcStorageProfile" // StorageProfile of VDC as admin
	QtTask                      = "task"                      // Task
	QtAdminTask                 = "adminTask"                 // Task as admin
	QtResourcePool              = "resourcePool"              // Resource Pool
	QtNetworkPool               = "networkPool"               // Network Pool
	QtProviderVdcStorageProfile = "providerVdcStorageProfile" // StorageProfile of Provider VDC
	QtVappNetwork               = "vAppNetwork"
	QtAdminVappNetwork          = "adminVAppNetwork"
)
View Source
const (
	// Affinity and anti affinity definitions
	PolarityAffinity     = "Affinity"
	PolarityAntiAffinity = "Anti-Affinity"
)
View Source
const (
	LdapModeNone   = "NONE"
	LdapModeSystem = "SYSTEM"
	LdapModeCustom = "CUSTOM"
)

LDAP modes for Organization

View Source
const (
	ControlAccessReadOnly    = "ReadOnly"
	ControlAccessReadWrite   = "Change"
	ControlAccessFullControl = "FullControl"
)

Access control modes

View Source
const (
	OpenApiPathVersion1_0_0                           = "1.0.0/"
	OpenApiPathVersion2_0_0                           = "2.0.0/"
	OpenApiEndpointRoles                              = "roles/"
	OpenApiEndpointGlobalRoles                        = "globalRoles/"
	OpenApiEndpointRights                             = "rights/"
	OpenApiEndpointRightsCategories                   = "rightsCategories/"
	OpenApiEndpointRightsBundles                      = "rightsBundles/"
	OpenApiEndpointAuditTrail                         = "auditTrail/"
	OpenApiEndpointImportableTier0Routers             = "nsxTResources/importableTier0Routers"
	OpenApiEndpointImportableSwitches                 = "/network/orgvdcnetworks/importableswitches"
	OpenApiEndpointImportableDvpgs                    = "virtualCenters/resources/importableDvpgs"
	OpenApiEndpointEdgeClusters                       = "nsxTResources/edgeClusters"
	OpenApiEndpointQosProfiles                        = "nsxTResources/gatewayQoSProfiles"
	OpenApiEndpointExternalNetworks                   = "externalNetworks/"
	OpenApiEndpointVdcComputePolicies                 = "vdcComputePolicies/"
	OpenApiEndpointVdcAssignedComputePolicies         = "vdcs/%s/computePolicies"
	OpenApiEndpointVdcCapabilities                    = "vdcs/%s/capabilities"
	OpenApiEndpointVdcNetworkProfile                  = "vdcs/%s/networkProfile"
	OpenApiEndpointEdgeGateways                       = "edgeGateways/"
	OpenApiEndpointEdgeGatewayQos                     = "edgeGateways/%s/qos"
	OpenApiEndpointEdgeGatewayDhcpForwarder           = "edgeGateways/%s/dhcpForwarder"
	OpenApiEndpointEdgeGatewayDns                     = "edgeGateways/%s/dns"
	OpenApiEndpointEdgeGatewaySlaacProfile            = "edgeGateways/%s/slaacProfile"
	OpenApiEndpointEdgeGatewayStaticRoutes            = "edgeGateways/%s/routing/staticRoutes/"
	OpenApiEndpointEdgeGatewayUsedIpAddresses         = "edgeGateways/%s/usedIpAddresses"
	OpenApiEndpointNsxtFirewallRules                  = "edgeGateways/%s/firewall/rules"
	OpenApiEndpointEdgeGatewayL2VpnTunnel             = "edgeGateways/%s/l2vpn/tunnels/"
	OpenApiEndpointEdgeGatewayL2VpnTunnelStatistics   = "edgeGateways/%s/l2vpn/tunnels/%s/metrics"
	OpenApiEndpointEdgeGatewayL2VpnTunnelStatus       = "edgeGateways/%s/l2vpn/tunnels/%s/status"
	OpenApiEndpointFirewallGroups                     = "firewallGroups/"
	OpenApiEndpointOrgVdcNetworks                     = "orgVdcNetworks/"
	OpenApiEndpointOrgVdcNetworkSegmentProfiles       = "orgVdcNetworks/%s/segmentProfiles"
	OpenApiEndpointOrgVdcNetworksDhcp                 = "orgVdcNetworks/%s/dhcp"
	OpenApiEndpointOrgVdcNetworksDhcpBindings         = "orgVdcNetworks/%s/dhcp/bindings/"
	OpenApiEndpointNsxtNatRules                       = "edgeGateways/%s/nat/rules/"
	OpenApiEndpointAppPortProfiles                    = "applicationPortProfiles/"
	OpenApiEndpointIpSecVpnTunnel                     = "edgeGateways/%s/ipsec/tunnels/"
	OpenApiEndpointIpSecVpnTunnelConnectionProperties = "edgeGateways/%s/ipsec/tunnels/%s/connectionProperties"
	OpenApiEndpointIpSecVpnTunnelStatus               = "edgeGateways/%s/ipsec/tunnels/%s/status"
	OpenApiEndpointSSLCertificateLibrary              = "ssl/certificateLibrary/"
	OpenApiEndpointSSLCertificateLibraryOld           = "ssl/cetificateLibrary/"
	OpenApiEndpointSessionCurrent                     = "sessions/current"
	OpenApiEndpointVdcGroups                          = "vdcGroups/"
	OpenApiEndpointVdcGroupsCandidateVdcs             = "vdcGroups/networkingCandidateVdcs"
	OpenApiEndpointVdcGroupsDfwPolicies               = "vdcGroups/%s/dfwPolicies"
	OpenApiEndpointVdcGroupsDfwDefaultPolicies        = "vdcGroups/%s/dfwPolicies/default"
	OpenApiEndpointVdcGroupsDfwRules                  = "vdcGroups/%s/dfwPolicies/%s/rules"
	OpenApiEndpointLogicalVmGroups                    = "logicalVmGroups/"
	OpenApiEndpointNetworkContextProfiles             = "networkContextProfiles"
	OpenApiEndpointSecurityTags                       = "securityTags"
	OpenApiEndpointNsxtRouteAdvertisement             = "edgeGateways/%s/routing/advertisement"
	OpenApiEndpointTestConnection                     = "testConnection/"
	OpenApiEndpointEdgeBgpNeighbor                    = "edgeGateways/%s/routing/bgp/neighbors/"   // '%s' is NSX-T Edge Gateway ID
	OpenApiEndpointEdgeBgpConfigPrefixLists           = "edgeGateways/%s/routing/bgp/prefixLists/" // '%s' is NSX-T Edge Gateway ID
	OpenApiEndpointEdgeBgpConfig                      = "edgeGateways/%s/routing/bgp"              // '%s' is NSX-T Edge Gateway ID
	OpenApiEndpointRdeInterfaces                      = "interfaces/"
	OpenApiEndpointRdeInterfaceBehaviors              = "interfaces/%s/behaviors/"
	OpenApiEndpointRdeEntityTypes                     = "entityTypes/"
	OpenApiEndpointRdeTypeBehaviors                   = "entityTypes/%s/behaviors/"
	OpenApiEndpointRdeTypeBehaviorAccessControls      = "entityTypes/%s/behaviorAccessControls"
	OpenApiEndpointRdeEntities                        = "entities/"
	OpenApiEndpointRdeEntitiesTypes                   = "entities/types/"
	OpenApiEndpointRdeEntitiesResolve                 = "entities/%s/resolve"
	OpenApiEndpointRdeEntitiesBehaviorsInvocations    = "entities/%s/behaviors/%s/invocations"
	OpenApiEndpointVirtualCenters                     = "virtualCenters"
	OpenApiEndpointResourcePools                      = "virtualCenters/%s/resourcePools/browse"    // '%s' is vCenter ID
	OpenApiEndpointResourcePoolsBrowseAll             = "virtualCenters/%s/resourcePools/browseAll" // '%s' is vCenter ID
	OpenApiEndpointResourcePoolHardware               = "virtualCenters/%s/resourcePools/%s/hwv"    // first '%s' is vCenter ID. Second one is Resource Pool MoRef
	OpenApiEndpointNetworkPools                       = "networkPools/"
	OpenApiEndpointNetworkPoolSummaries               = "networkPools/networkPoolSummaries"
	OpenApiEndpointStorageProfiles                    = "virtualCenters/%s/storageProfiles" // '%s' is vCenter ID
	OpenApiEndpointExtensionsUi                       = "extensions/ui/"
	OpenApiEndpointExtensionsUiPlugin                 = "extensions/ui/%s/plugin"
	OpenApiEndpointExtensionsUiTenants                = "extensions/ui/%s/tenants"
	OpenApiEndpointExtensionsUiTenantsPublishAll      = "extensions/ui/%s/tenants/publishAll"
	OpenApiEndpointExtensionsUiTenantsPublish         = "extensions/ui/%s/tenants/publish"
	OpenApiEndpointExtensionsUiTenantsUnpublishAll    = "extensions/ui/%s/tenants/unpublishAll"
	OpenApiEndpointExtensionsUiTenantsUnpublish       = "extensions/ui/%s/tenants/unpublish"
	OpenApiEndpointImportableTransportZones           = "nsxTResources/importableTransportZones"
	OpenApiEndpointVCenterDistributedSwitch           = "virtualCenters/resources/dvSwitches"

	OpenApiEndpointNsxtSegmentProfileTemplates              = "segmentProfileTemplates/"
	OpenApiEndpointNsxtGlobalDefaultSegmentProfileTemplates = "segmentProfileTemplates/default"
	OpenApiEndpointNsxtSegmentIpDiscoveryProfiles           = "nsxTResources/segmentIpDiscoveryProfiles"
	OpenApiEndpointNsxtSegmentMacDiscoveryProfiles          = "nsxTResources/segmentMacDiscoveryProfiles"
	OpenApiEndpointNsxtSegmentSpoofGuardProfiles            = "nsxTResources/segmentSpoofGuardProfiles"
	OpenApiEndpointNsxtSegmentQosProfiles                   = "nsxTResources/segmentQoSProfiles"
	OpenApiEndpointNsxtSegmentSecurityProfiles              = "nsxTResources/segmentSecurityProfiles"

	// IP Spaces
	OpenApiEndpointIpSpaces                     = "ipSpaces/"
	OpenApiEndpointIpSpaceSummaries             = "ipSpaces/summaries"
	OpenApiEndpointIpSpaceUplinks               = "ipSpaceUplinks/"
	OpenApiEndpointIpSpaceUplinksAllocate       = "ipSpaces/%s/allocate"     // '%s' is IP Space ID
	OpenApiEndpointIpSpaceIpAllocations         = "ipSpaces/%s/allocations/" // '%s' is IP Space ID
	OpenApiEndpointIpSpaceOrgAssignments        = "ipSpaces/orgAssignments/" // '%s' is IP Space ID
	OpenApiEndpointIpSpaceFloatingIpSuggestions = "ipSpaces/floatingIpSuggestions/"

	OpenApiEndpointAlbController = "loadBalancer/controllers/"

	// OpenApiEndpointAlbImportableClouds endpoint requires a filter _context==urn:vcloud:loadBalancerController:aa23ef66-ba32-48b2-892f-7acdffe4587e
	OpenApiEndpointAlbImportableClouds              = "nsxAlbResources/importableClouds/"
	OpenApiEndpointAlbImportableServiceEngineGroups = "nsxAlbResources/importableServiceEngineGroups"
	OpenApiEndpointAlbCloud                         = "loadBalancer/clouds/"
	OpenApiEndpointAlbServiceEngineGroups           = "loadBalancer/serviceEngineGroups/"
	OpenApiEndpointAlbPools                         = "loadBalancer/pools/"
	// OpenApiEndpointAlbPoolSummaries returns a limited subset of data provided by OpenApiEndpointAlbPools
	// however only the summary endpoint can list all available pools for an edge gateway
	OpenApiEndpointAlbPoolSummaries                 = "edgeGateways/%s/loadBalancer/poolSummaries" // %s contains edge gateway
	OpenApiEndpointAlbVirtualServices               = "loadBalancer/virtualServices/"
	OpenApiEndpointAlbVirtualServiceSummaries       = "edgeGateways/%s/loadBalancer/virtualServiceSummaries" // %s contains edge gateway
	OpenApiEndpointAlbServiceEngineGroupAssignments = "loadBalancer/serviceEngineGroups/assignments/"
	OpenApiEndpointAlbEdgeGateway                   = "edgeGateways/%s/loadBalancer"

	// OpenApiEndpointServiceAccountGrant is needed for granting a Service Account
	OpenApiEndpointServiceAccountGrant = "deviceLookup/grant"
	OpenApiEndpointTokens              = "tokens/"
	OpenApiEndpointServiceAccounts     = "serviceAccounts/"

	// OpenApiEndpointVgpuProfile is used to query vGPU profiles
	OpenApiEndpointVgpuProfile = "vgpuProfiles"
)

These constants allow constructing OpenAPI endpoint paths and avoid strings in code for easy replacement in the future.

View Source
const (
	// HeaderTenantContext requires the Org ID of the tenant
	HeaderTenantContext = "X-VMWARE-VCLOUD-TENANT-CONTEXT"
	// HeaderAuthContext requires the Org name of the tenant
	HeaderAuthContext = "X-VMWARE-VCLOUD-AUTH-CONTEXT"
)

Header keys to run operations in tenant context

View Source
const (
	// ExternalNetworkBackingTypeNsxtTier0Router defines backing type of NSX-T Tier-0 router
	ExternalNetworkBackingTypeNsxtTier0Router = "NSXT_TIER0"
	// ExternalNetworkBackingTypeNsxtVrfTier0Router defines backing type of NSX-T Tier-0 VRF router
	ExternalNetworkBackingTypeNsxtVrfTier0Router = "NSXT_VRF_TIER0"
	// ExternalNetworkBackingTypeNsxtSegment defines backing type of NSX-T Segment (supported in VCD 10.3+)
	ExternalNetworkBackingTypeNsxtSegment = "IMPORTED_T_LOGICAL_SWITCH"
	// ExternalNetworkBackingTypeNetwork defines vSwitch portgroup
	ExternalNetworkBackingTypeNetwork = "NETWORK"
	// ExternalNetworkBackingDvPortgroup refers distributed switch portgroup
	ExternalNetworkBackingDvPortgroup = "DV_PORTGROUP"
)
View Source
const (
	// OrgVdcNetworkTypeRouted can be used to create NSX-T or NSX-V routed Org Vdc network
	OrgVdcNetworkTypeRouted = "NAT_ROUTED"
	// OrgVdcNetworkTypeIsolated can be used to create NSX-T or NSX-V isolated Org Vdc network
	OrgVdcNetworkTypeIsolated = "ISOLATED"
	// OrgVdcNetworkTypeDirect can be used to create NSX-V direct Org Vdc network
	OrgVdcNetworkTypeDirect = "DIRECT"
	// OrgVdcNetworkTypeOpaque type is used to create NSX-T imported Org Vdc network
	OrgVdcNetworkTypeOpaque = "OPAQUE"
)
View Source
const (
	// OrgVdcNetworkBackingTypeVirtualWire matches Org VDC network backing type for NSX-V
	OrgVdcNetworkBackingTypeVirtualWire = "VIRTUAL_WIRE"
	// OrgVdcNetworkBackingTypeNsxtFlexibleSegment matches Org VDC network backing type for NSX-T networks
	OrgVdcNetworkBackingTypeNsxtFlexibleSegment = "NSXT_FLEXIBLE_SEGMENT"
	// OrgVdcNetworkBackingTypeDvPortgroup matches Org VDC network backing type for NSX-T Imported network backed by DV Portgroup
	OrgVdcNetworkBackingTypeDvPortgroup = "DV_PORTGROUP"
)
View Source
const (
	// VdcCapabilityNetworkProviderNsxv is a convenience constant to match VDC capability
	VdcCapabilityNetworkProviderNsxv = "NSX_V"
	// VdcCapabilityNetworkProviderNsxt is a convenience constant to match VDC capability
	VdcCapabilityNetworkProviderNsxt = "NSX_T"
)
View Source
const (
	// FirewallGroupTypeSecurityGroup can be used in types.NsxtFirewallGroup for 'TypeValue' field
	// to create Security Group
	FirewallGroupTypeSecurityGroup = "SECURITY_GROUP"
	// FirewallGroupTypeIpSet can be used in types.NsxtFirewallGroup for 'TypeValue' field to create
	// IP Set
	FirewallGroupTypeIpSet = "IP_SET"

	// FirewallGroupTypeVmCriteria can be used in types.NsxtFirewallGroup for 'TypeValue' field to
	// create Dynamic Security Group (VCD 10.3+)
	FirewallGroupTypeVmCriteria = "VM_CRITERIA"
)
View Source
const (
	NsxtNatRuleTypeDnat      = "DNAT"
	NsxtNatRuleTypeNoDnat    = "NO_DNAT"
	NsxtNatRuleTypeSnat      = "SNAT"
	NsxtNatRuleTypeNoSnat    = "NO_SNAT"
	NsxtNatRuleTypeReflexive = "REFLEXIVE" // Only in VCD 10.3+ (API V36.0)
)

These constants can be used to pick type of NSX-T NAT Rule

View Source
const (
	// NsxtNatRuleFirewallMatchInternalAddress will match firewall rules based on NAT rules internal
	// address (DEFAULT)
	NsxtNatRuleFirewallMatchInternalAddress = "MATCH_INTERNAL_ADDRESS"
	// NsxtNatRuleFirewallMatchExternalAddress will match firewall rules based on NAT rule external
	// address
	NsxtNatRuleFirewallMatchExternalAddress = "MATCH_EXTERNAL_ADDRESS"
	// NsxtNatRuleFirewallMatchBypass will skip evaluating NAT rules in firewall
	NsxtNatRuleFirewallMatchBypass = "BYPASS"
)

In VCD versions 10.2.2+ (API V35.2+) there is a FirewallMatch field in NAT rule with these options

View Source
const (
	// ApplicationPortProfileScopeSystem is a defined scope which allows user to only read (no write capability) system
	// predefined Application Port Profiles
	ApplicationPortProfileScopeSystem = "SYSTEM"
	// ApplicationPortProfileScopeProvider allows user to read and set Application Port Profiles at provider level. In
	// reality Network Provider (NSX-T Manager) must be specified while creating.
	ApplicationPortProfileScopeProvider = "PROVIDER"
	// ApplicationPortProfileScopeTenant allows user to read and set Application Port Profiles at Org VDC level.
	ApplicationPortProfileScopeTenant = "TENANT"
)
View Source
const (
	// UrnTypeVdcGroup is the third segment of URN for VDC Group
	UrnTypeVdcGroup = "vdcGroup"
	// UrnTypeVdc is the third segment of URN for VDC
	UrnTypeVdc = "vdc"
)
View Source
const (
	MetadataStringValue   string = "MetadataStringValue"
	MetadataNumberValue   string = "MetadataNumberValue"
	MetadataDateTimeValue string = "MetadataDateTimeValue"
	MetadataBooleanValue  string = "MetadataBooleanValue"

	MetadataReadOnlyVisibility  string = "READONLY"
	MetadataHiddenVisibility    string = "PRIVATE"
	MetadataReadWriteVisibility string = "READWRITE"

	OpenApiMetadataStringEntry  string = "StringEntry"
	OpenApiMetadataNumberEntry  string = "NumberEntry"
	OpenApiMetadataBooleanEntry string = "BoolEntry"
)

Metadata type constants

View Source
const (
	DFWProtocolTcp  = "TCP"
	DFWProtocolUdp  = "UDP"
	DFWProtocolIcmp = "ICMP"
)

Protocols

View Source
const (
	DFWActionAllow = "allow"
	DFWActionDeny  = "deny"
)

Action types

View Source
const (
	DFWDirectionIn    = "in"
	DFWDirectionOut   = "out"
	DFWDirectionInout = "inout"
)

Directions

View Source
const (
	DFWPacketAny  = "any"
	DFWPacketIpv4 = "ipv4"
	DFWPacketIpv6 = "ipv6"
)

Types of packet

View Source
const (
	DFWElementVdc            = "VDC"
	DFWElementVirtualMachine = "VirtualMachine"
	DFWElementNetwork        = "Network"
	DFWElementEdge           = "Edge"
	DFWElementIpSet          = "IPSet"
	DFWElementIpv4           = "Ipv4Address"
)

Elements of Source, Destination, and Applies-To

View Source
const (
	DFWServiceTypeApplication      = "Application"
	DFWServiceTypeApplicationGroup = "ApplicationGroup"
)

Types of service

View Source
const (
	NsxtDhcpBindingTypeIpv4 = "IPV4"
	NsxtDhcpBindingTypeIpv6 = "IPV6"
)

NSX-T DHCP Binding Type

View Source
const (
	NsxtIpSecVpnAuthenticationModePSK         = "PSK"
	NsxtIpSecVpnAuthenticationModeCertificate = "CERTIFICATE"
)

NSX-T IPSec VPN authentication modes

View Source
const (
	OpenApiOrgVdcNetworkBackingTypeNsxv = "VIRTUAL_WIRE"
	OpenApiOrgVdcNetworkBackingTypeNsxt = "NSXT_FLEXIBLE_SEGMENT"
)

Org VDC network backing types

View Source
const (
	IpSpaceShared  = "SHARED_SERVICES"
	IpSpacePublic  = "PUBLIC"
	IpSpacePrivate = "PRIVATE"
)

IP Space types

View Source
const (
	IpSpaceIpAllocationUsedManual = "USED_MANUAL"
	IpSpaceIpAllocationUsed       = "USED"
	IpSpaceIpAllocationUnused     = "UNUSED"
)

IP Space IP Allocation Reservation Types

View Source
const (
	IpSpaceIpAllocationTypeFloatingIp = "FLOATING_IP"
	IpSpaceIpAllocationTypeIpPrefix   = "IP_PREFIX"
)

IP Space IP Allocation Types

View Source
const (
	SamlNamespaceMd     = "urn:oasis:names:tc:SAML:2.0:metadata"
	SamlNamespaceDs     = "http://www.w3.org/2000/09/xmldsig#"
	SamlNamespaceHoksso = "urn:oasis:names:tc:SAML:2.0:profiles:holder-of-key:SSO:browser"
)

Values used for SAML metadata normalization and validation

View Source
const (
	NetworkPoolVxlanType     = "VXLAN" // NSX-V backed network pool. Only used as read-only
	NetworkPoolVlanType      = "VLAN"
	NetworkPoolGeneveType    = "GENEVE"
	NetworkPoolPortGroupType = "PORTGROUP_BACKED"
)

Values used to identify the type of network pool

View Source
const (
	RelDown          = "down"
	RelAdd           = "add"
	RelUp            = "up"
	RelEdit          = "edit"
	RelRemove        = "remove"
	RelCopy          = "copy"
	RelMove          = "move"
	RelAlternate     = "alternate"
	RelTaskCancel    = "task:cancel"
	RelDeploy        = "deploy"
	RelUndeploy      = "undeploy"
	RelDiscardState  = "discardState"
	RelPowerOn       = "power:powerOn"
	RelPowerOff      = "power:powerOff"
	RelPowerReset    = "power:reset"
	RelPowerReboot   = "power:reboot"
	RelPowerSuspend  = "power:suspend"
	RelPowerShutdown = "power:shutdown"

	RelScreenThumbnail        = "screen:thumbnail"
	RelScreenAcquireTicket    = "screen:acquireTicket"
	RelScreenAcquireMksTicket = "screen:acquireMksTicket"

	RelMediaInsertMedia = "media:insertMedia"
	RelMediaEjectMedia  = "media:ejectMedia"

	RelDiskAttach = "disk:attach"
	RelDiskDetach = "disk:detach"

	RelUploadDefault   = "upload:default"
	RelUploadAlternate = "upload:alternate"

	RelDownloadDefault   = "download:default"
	RelDownloadAlternate = "download:alternate"
	RelDownloadIdentity  = "download:identity"

	RelSnapshotCreate          = "snapshot:create"
	RelSnapshotRevertToCurrent = "snapshot:revertToCurrent"
	RelSnapshotRemoveAll       = "snapshot:removeAll"

	RelOVF               = "ovf"
	RelOVA               = "ova"
	RelControlAccess     = "controlAccess"
	RelPublish           = "publish"
	RelPublishExternal   = "publishToExternalOrganizations"
	RelSubscribeExternal = "subscribeToExternalCatalog"
	RelExtension         = "extension"
	RelEnable            = "enable"
	RelDisable           = "disable"
	RelMerge             = "merge"
	RelCatalogItem       = "catalogItem"
	RelRecompose         = "recompose"
	RelRegister          = "register"
	RelUnregister        = "unregister"
	RelRepair            = "repair"
	RelReconnect         = "reconnect"
	RelDisconnect        = "disconnect"
	RelUpgrade           = "upgrade"
	RelAnswer            = "answer"
	RelAddOrgs           = "addOrgs"
	RelRemoveOrgs        = "removeOrgs"
	RelSync              = "sync"

	RelVSphereWebClientURL = "vSphereWebClientUrl"
	RelVimServerDvSwitches = "vimServerDvSwitches"

	RelCollaborationResume    = "resume"
	RelCollaborationFail      = "fail"
	RelEnterMaintenanceMode   = "enterMaintenanceMode"
	RelExitMaintenanceMode    = "exitMaintenanceMode"
	RelTask                   = "task"
	RelTaskOwner              = "task:owner"
	RelPreviousPage           = "previousPage"
	RelNextPage               = "nextPage"
	RelFirstPage              = "firstPage"
	RelLastPage               = "lastPage"
	RelInstallVMWareTools     = "installVmwareTools"
	RelConsolidate            = "consolidate"
	RelEntity                 = "entity"
	RelEntityResolver         = "entityResolver"
	RelRelocate               = "relocate"
	RelBlockingTasks          = "blockingTasks"
	RelUpdateProgress         = "updateProgress"
	RelSyncSyslogSettings     = "syncSyslogSettings"
	RelTakeOwnership          = "takeOwnership"
	RelUnlock                 = "unlock"
	RelShadowVMs              = "shadowVms"
	RelTest                   = "test"
	RelUpdateResourcePools    = "update:resourcePools"
	RelRemoveForce            = "remove:force"
	RelStorageClass           = "storageProfile"
	RelRefreshStorageClasses  = "refreshStorageProfile"
	RelRefreshVirtualCenter   = "refreshVirtualCenter"
	RelCheckCompliance        = "checkCompliance"
	RelForceFullCustomization = "customizeAtNextPowerOn"
	RelReloadFromVC           = "reloadFromVc"
	RelMetricsDayView         = "interval:day"
	RelMetricsWeekView        = "interval:week"
	RelMetricsMonthView       = "interval:month"
	RelMetricsYearView        = "interval:year"
	RelMetricsPreviousRange   = "range:previous"
	RelMetricsNextRange       = "range:next"
	RelMetricsLatestRange     = "range:latest"
	RelRights                 = "rights"
	RelMigratVMs              = "migrateVms"
	RelResourcePoolVMList     = "resourcePoolVmList"
	RelCreateEvent            = "event:create"
	RelCreateTask             = "task:create"
	RelUploadBundle           = "bundle:upload"
	RelCleanupBundles         = "bundles:cleanup"
	RelAuthorizationCheck     = "authorization:check"
	RelCleanupRights          = "rights:cleanup"

	RelEdgeGatewayRedeploy           = "edgeGateway:redeploy"
	RelEdgeGatewayReapplyServices    = "edgeGateway:reapplyServices"
	RelEdgeGatewayConfigureServices  = "edgeGateway:configureServices"
	RelEdgeGatewayConfigureSyslog    = "edgeGateway:configureSyslogServerSettings"
	RelEdgeGatewaySyncSyslogSettings = "edgeGateway:syncSyslogSettings"
	RelEdgeGatewayUpgrade            = "edgeGateway:upgrade"
	RelEdgeGatewayUpgradeNetworking  = "edgeGateway:convertToAdvancedNetworking"
	RelVDCManageFirewall             = "manageFirewall"

	RelCertificateUpdate = "certificate:update"
	RelCertificateReset  = "certificate:reset"
	RelTruststoreUpdate  = "truststore:update"
	RelTruststoreReset   = "truststore:reset"
	RelKeyStoreUpdate    = "keystore:update"
	RelKeystoreReset     = "keystore:reset"
	RelKeytabUpdate      = "keytab:update"
	RelKeytabReset       = "keytab:reset"

	RelServiceLinks             = "down:serviceLinks"
	RelAPIFilters               = "down:apiFilters"
	RelResourceClasses          = "down:resourceClasses"
	RelResourceClassActions     = "down:resourceClassActions"
	RelServices                 = "down:services"
	RelACLRules                 = "down:aclRules"
	RelFileDescriptors          = "down:fileDescriptors"
	RelAPIDefinitions           = "down:apiDefinitions"
	RelServiceResources         = "down:serviceResources"
	RelExtensibility            = "down:extensibility"
	RelAPIServiceQuery          = "down:service"
	RelAPIDefinitionsQuery      = "down:apidefinitions"
	RelAPIFilesQuery            = "down:files"
	RelServiceOfferings         = "down:serviceOfferings"
	RelServiceOfferingInstances = "down:serviceOfferingInstances"
	RelHybrid                   = "down:hybrid"

	RelServiceRefresh      = "service:refresh"
	RelServiceAssociate    = "service:associate"
	RelServiceDisassociate = "service:disassociate"

	RelReconfigureVM = "reconfigureVM"

	RelOrgVDCGateways = "edgeGateways"
	RelOrgVDCNetworks = "orgVdcNetworks"

	RelHybridAcquireControlTicket = "hybrid:acquireControlTicket"
	RelHybridAcquireTicket        = "hybrid:acquireTicket"
	RelHybridRefreshTunnel        = "hybrid:refreshTunnel"

	RelMetrics = "metrics"

	RelFederationRegenerateCertificate = "federation:regenerateFederationCertificate"
	RelTemplateInstantiate             = "instantiate"
)
View Source
const (
	// DistributedFirewallPolicyDefault is a constant for "default" Distributed Firewall Policy
	DistributedFirewallPolicyDefault = "default"
)
View Source
const (
	// FiqlQueryTimestampFormat is the format accepted by Cloud API time comparison operator in FIQL query filters
	FiqlQueryTimestampFormat = "2006-01-02T15:04:05.000Z"
)
View Source
const (
	NoneNetwork = "none"
)

NoneNetwork is a special type of network in vCD which represents a network card which is not attached to any network.

View Source
const (
	// NsxtAlbCloudBackingTypeNsxtAlb is a backing type for NSX-T ALB used in types.NsxtAlbCloudBacking
	NsxtAlbCloudBackingTypeNsxtAlb = "NSXALB_NSXT"
)
View Source
const (
	NsxvIpSetServicePath = "/ipset"
)

NSX-V proxied services API endpoints

View Source
const (
	VMsCDResourceSubType = "vmware.cdrom.iso"
)
View Source
const (
	// VcloudUndefinedKey is the bundles key automatically added to new role related objects
	VcloudUndefinedKey = "com.vmware.vcloud.undefined.key"
)

Variables

AdminQueryTypes returns the corresponding "admin" query type for each regular type

View Source
var NsxvProtocolCodes = map[string]int{
	DFWProtocolTcp:  6,
	DFWProtocolUdp:  17,
	DFWProtocolIcmp: 1,
}
View Source
var VAppStatuses = map[int]string{
	-1: "FAILED_CREATION",
	0:  "UNRESOLVED",
	1:  "RESOLVED",
	2:  "DEPLOYED",
	3:  "SUSPENDED",
	4:  "POWERED_ON",
	5:  "WAITING_FOR_INPUT",
	6:  "UNKNOWN",
	7:  "UNRECOGNIZED",
	8:  "POWERED_OFF",
	9:  "INCONSISTENT_STATE",
	10: "MIXED",
	11: "DESCRIPTOR_PENDING",
	12: "COPYING_CONTENTS",
	13: "DISK_CONTENTS_PENDING",
	14: "QUARANTINED",
	15: "QUARANTINE_EXPIRED",
	16: "REJECTED",
	17: "TRANSFER_TIMEOUT",
	18: "VAPP_UNDEPLOYED",
	19: "VAPP_PARTIALLY_DEPLOYED",
	20: "PARTIALLY_POWERED_OFF",
	21: "PARTIALLY_SUSPENDED",
}

Maps status Attribute Values for VAppTemplate, VApp, VM, and Media Objects

View Source
var VDCStatuses = map[int]string{
	-1: "FAILED_CREATION",
	0:  "NOT_READY",
	1:  "READY",
	2:  "UNKNOWN",
	3:  "UNRECOGNIZED",
}

Maps status Attribute Values for VDC Objects

Functions

This section is empty.

Types

type AccessSetting added in v2.9.0

type AccessSetting struct {
	XMLName         xml.Name         `xml:"AccessSetting"`
	Subject         *LocalSubject    `xml:"Subject,omitempty"`         // The user or group to which these settings apply.
	ExternalSubject *ExternalSubject `xml:"ExternalSubject,omitempty"` // Subject existing external of VCD, to which these settings apply.
	AccessLevel     string           `xml:"AccessLevel"`               // The access level for the subject. One of: FullControl Change ReadOnly Deny (only for a VDC resource)
}

AccessSetting controls access to the resource.

type AccessSettingList added in v2.9.0

type AccessSettingList struct {
	AccessSetting []*AccessSetting `xml:"AccessSetting"`
}

AccessSettingList is a tagged list of AccessSetting

type Adapter added in v2.20.0

type Adapter struct {
	Mac        string `xml:"mac,attr"`
	Network    string `xml:"network,attr"`
	UnitNumber string `xml:"unitNumber,attr"`
}

type AddResourcePool added in v2.21.0

type AddResourcePool struct {
	VimObjectRef []*VimObjectRef `xml:"AddItem" json:"addItem"`
}

AddResourcePool is used to add one or more resource pools to a provider VDC

type AddStorageProfiles added in v2.21.0

type AddStorageProfiles struct {
	AddStorageProfile []string `json:"addStorageProfile"`
}

AddStorageProfiles is used to add storage profiles to an existing provider VDC

type AdfsAuthErrorEnvelope added in v2.8.0

type AdfsAuthErrorEnvelope struct {
	XMLName xml.Name `xml:"Envelope"`
	Body    struct {
		Text  string `xml:",chardata"`
		Fault struct {
			Text string `xml:",chardata"`
			Code struct {
				Text    string `xml:",chardata"`
				Value   string `xml:"Value"`
				Subcode struct {
					Text  string `xml:",chardata"`
					Value struct {
						Text string `xml:",chardata"`
						A    string `xml:"a,attr"`
					} `xml:"Value"`
				} `xml:"Subcode"`
			} `xml:"Code"`
			Reason struct {
				Chardata string `xml:",chardata"`
				Text     struct {
					Text string `xml:",chardata"`
					Lang string `xml:"lang,attr"`
				} `xml:"Text"`
			} `xml:"Reason"`
		} `xml:"Fault"`
	} `xml:"Body"`
}

AdfsAuthErrorEnvelope helps to parse ADFS authentication error with help of Error() method

Note. This structure is not complete and has many more fields.

func (AdfsAuthErrorEnvelope) Error added in v2.8.0

func (samlErr AdfsAuthErrorEnvelope) Error() string

Error satisfies Go's default `error` interface for AdfsAuthErrorEnvelope and formats error for humand readable output

type AdfsAuthResponseEnvelope added in v2.8.0

type AdfsAuthResponseEnvelope struct {
	XMLName xml.Name `xml:"Envelope"`
	Body    struct {
		RequestSecurityTokenResponseCollection struct {
			RequestSecurityTokenResponse struct {
				// RequestedSecurityTokenTxt returns data which is accepted by vCD as a SIGN token
				RequestedSecurityTokenTxt InnerXML `xml:"RequestedSecurityToken"`
			} `xml:"RequestSecurityTokenResponse"`
		} `xml:"RequestSecurityTokenResponseCollection"`
	} `xml:"Body"`
}

AdfsAuthResponseEnvelope helps to marshal ADFS reponse to authentication request.

Note. This structure is not complete and has many more fields.

type AdminCatalog

type AdminCatalog struct {
	Catalog
	XMLName                      xml.Name                      `xml:"AdminCatalog"`
	Xmlns                        string                        `xml:"xmlns,attr"`
	PublishExternalCatalogParams *PublishExternalCatalogParams `xml:"PublishExternalCatalogParams,omitempty"`
	CatalogStorageProfiles       *CatalogStorageProfiles       `xml:"CatalogStorageProfiles,omitempty"`
	ExternalCatalogSubscription  *ExternalCatalogSubscription  `xml:"ExternalCatalogSubscriptionParams,omitempty"`
	IsPublished                  bool                          `xml:"IsPublished,omitempty"`
}

AdminCatalog represents the Admin view of a Catalog object. Type: AdminCatalogType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents the Admin view of a Catalog object. https://code.vmware.com/apis/287/vcloud#/doc/doc/types/AdminCatalogType.html Since: 0.9

type AdminCatalogRecord added in v2.4.0

type AdminCatalogRecord CatalogRecord

type AdminOrg

type AdminOrg struct {
	XMLName         xml.Name         `xml:"AdminOrg"`
	Xmlns           string           `xml:"xmlns,attr"`
	HREF            string           `xml:"href,attr,omitempty"`
	Type            string           `xml:"type,attr,omitempty"`
	ID              string           `xml:"id,attr,omitempty"`
	OperationKey    string           `xml:"operationKey,attr,omitempty"`
	Name            string           `xml:"name,attr"`
	Description     string           `xml:"Description,omitempty"`
	FullName        string           `xml:"FullName"`
	IsEnabled       bool             `xml:"IsEnabled,omitempty"`
	Link            LinkList         `xml:"Link,omitempty"`
	Tasks           *TasksInProgress `xml:"Tasks,omitempty"`
	Users           *OrgUserList     `xml:"Users,omitempty"`
	Groups          *OrgGroupList    `xml:"Groups,omitempty"`
	Catalogs        *CatalogsList    `xml:"Catalogs,omitempty"`
	OrgSettings     *OrgSettings     `xml:"Settings,omitempty"`
	Vdcs            *VDCList         `xml:"Vdcs,omitempty"`
	Networks        *NetworksList    `xml:"Networks,omitempty"`
	RightReferences *OrgRoleType     `xml:"RightReferences,omitempty"`
	RoleReferences  *OrgRoleType     `xml:"RoleReferences,omitempty"`
}

AdminOrg represents the admin view of a VMware Cloud Director organization. Type: AdminOrgType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents the admin view of a VMware Cloud Director organization. Since: 0.9

type AdminVdc

type AdminVdc struct {
	Xmlns string `xml:"xmlns,attr"`
	Vdc

	VCpuInMhz2               *int64     `xml:"VCpuInMhz2,omitempty"`
	ResourceGuaranteedMemory *float64   `xml:"ResourceGuaranteedMemory,omitempty"`
	ResourceGuaranteedCpu    *float64   `xml:"ResourceGuaranteedCpu,omitempty"`
	VCpuInMhz                *int64     `xml:"VCpuInMhz,omitempty"`
	IsThinProvision          *bool      `xml:"IsThinProvision,omitempty"`
	NetworkPoolReference     *Reference `xml:"NetworkPoolReference,omitempty"`
	ProviderVdcReference     *Reference `xml:"ProviderVdcReference"`

	// ResourcePoolRefs is a read-only field and should be avoided in XML structure for write
	// operations because it breaks on Go marshalling bug https://github.com/golang/go/issues/9519
	ResourcePoolRefs              *VimObjectRefs `xml:"ResourcePoolRefs,omitempty"`
	UsesFastProvisioning          *bool          `xml:"UsesFastProvisioning,omitempty"`
	OverCommitAllowed             bool           `xml:"OverCommitAllowed,omitempty"`
	VmDiscoveryEnabled            bool           `xml:"VmDiscoveryEnabled,omitempty"`
	IsElastic                     *bool          `xml:"IsElastic,omitempty"`                     // Supported from 32.0 for the Flex model
	IncludeMemoryOverhead         *bool          `xml:"IncludeMemoryOverhead,omitempty"`         // Supported from 32.0 for the Flex model
	UniversalNetworkPoolReference *Reference     `xml:"UniversalNetworkPoolReference,omitempty"` // Reference to a universal network pool
}

AdminVdc represents the admin view of an organization VDC. Type: AdminVdcType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents the admin view of an organization VDC. Since: 0.9

type AdminVdcStorageProfile added in v2.10.0

type AdminVdcStorageProfile struct {
	Xmlns                     string                         `xml:"xmlns,attr"`
	Name                      string                         `xml:"name,attr"`
	Enabled                   *bool                          `xml:"Enabled,omitempty"`
	Units                     string                         `xml:"Units"`
	Limit                     int64                          `xml:"Limit"`
	Default                   bool                           `xml:"Default"`
	IopsSettings              *VdcStorageProfileIopsSettings `xml:"IopsSettings"`
	StorageUsedMB             int64                          `xml:"StorageUsedMB"`
	IopsAllocated             int64                          `xml:"IopsAllocated"`
	ProviderVdcStorageProfile *Reference                     `xml:"ProviderVdcStorageProfile"`
}

AdminVdcStorageProfile represents the parameters for fetched storage profile Type: AdminVdcStorageProfileType Namespace: http://www.vmware.com/vcloud/v1.5 https://vdc-repo.vmware.com/vmwb-repository/dcr-public/71e12563-bc11-4d64-821d-92d30f8fcfa1/7424bf8e-aec2-44ad-be7d-b98feda7bae0/doc/doc/types/AdminVdcStorageProfileType.html

type ApiTokenParams added in v2.21.0

type ApiTokenParams struct {
	ClientName              string   `json:"client_name"`
	ClientID                string   `json:"client_id,omitempty"`
	GrantTypes              []string `json:"grant_types,omitempty"`
	TokenEndpointAuthMethod string   `json:"token_endpoint_auth_method,omitempty"`
	ClientURI               string   `json:"client_uri,omitempty"`
	SoftwareID              string   `json:"software_id,omitempty"`
	SoftwareVersion         string   `json:"software_version,omitempty"`
	Scope                   string   `json:"scope,omitempty"`
}

ApiTokenParams contains the parameters required and returned by oauth/register operation

type ApiTokenRefresh added in v2.14.0

type ApiTokenRefresh struct {
	AccessToken  string `json:"access_token,omitempty"`
	TokenType    string `json:"token_type,omitempty"`
	ExpiresIn    int    `json:"expires_in,omitempty"`
	RefreshToken string `json:"refresh_token,omitempty"`
	UpdatedBy    string `json:"updated_by,omitempty"`
	UpdatedOn    string `json:"updated_on,omitempty"`
}

ApiTokenRefresh contains the access token resulting from a refresh_token operation

type Application added in v2.20.0

type Application struct {
	ObjectID           string          `xml:"objectId"`
	ObjectTypeName     string          `xml:"objectTypeName"`
	VsmUuid            string          `xml:"vsmUuid"`
	NodeID             string          `xml:"nodeId"`
	Revision           string          `xml:"revision"`
	Type               ApplicationType `xml:"type"`
	Name               string          `xml:"name"`
	Scope              Scope           `xml:"scope"`
	ClientHandle       struct{}        `xml:"clientHandle"`
	ExtendedAttributes struct{}        `xml:"extendedAttributes"`
	IsUniversal        bool            `xml:"isUniversal"`
	UniversalRevision  string          `xml:"universalRevision"`
	IsTemporal         bool            `xml:"isTemporal"`
	InheritanceAllowed bool            `xml:"inheritanceAllowed"`
	Element            Element         `xml:"element"`
	Layer              string          `xml:"layer"`
	IsReadOnly         bool            `xml:"isReadOnly"`
	Description        *string         `xml:"description"`
}

type ApplicationGroup added in v2.20.0

type ApplicationGroup struct {
	ObjectID           string          `xml:"objectId"`
	ObjectTypeName     string          `xml:"objectTypeName"`
	VsmUuid            string          `xml:"vsmUuid"`
	NodeID             string          `xml:"nodeId"`
	Revision           string          `xml:"revision"`
	Type               ApplicationType `xml:"type"`
	Name               string          `xml:"name"`
	Scope              Scope           `xml:"scope"`
	ClientHandle       struct{}        `xml:"clientHandle"`
	ExtendedAttributes struct{}        `xml:"extendedAttributes"`
	IsUniversal        bool            `xml:"isUniversal"`
	UniversalRevision  string          `xml:"universalRevision"`
	IsTemporal         bool            `xml:"isTemporal"`
	InheritanceAllowed bool            `xml:"inheritanceAllowed"`
	IsReadOnly         bool            `xml:"isReadOnly"`
	Member             []Member        `xml:"member"`
}

type ApplicationGroupList added in v2.20.0

type ApplicationGroupList struct {
	ApplicationGroup []ApplicationGroup `xml:"applicationGroup"`
}

type ApplicationList added in v2.20.0

type ApplicationList struct {
	Application []Application `xml:"application"`
}

type ApplicationType added in v2.20.0

type ApplicationType struct {
	TypeName string `xml:"typeName"`
}

type AppliedTo added in v2.20.0

type AppliedTo struct {
	Name    string `xml:"name"`
	Value   string `xml:"value"`
	Type    string `xml:"type"`
	IsValid bool   `xml:"isValid"`
}

type AppliedToList added in v2.20.0

type AppliedToList struct {
	AppliedTo []AppliedTo `xml:"appliedTo"`
}

type AvailableNetworks

type AvailableNetworks struct {
	Network []*Reference `xml:"Network,omitempty" json:"network,omitempty"`
}

AvailableNetworks is a container for references to available organization vDC networks. Type: AvailableNetworksType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Container for references to available organization vDC networks. Since: 0.9

type BackingUseConstraint added in v2.22.0

type BackingUseConstraint string

BackingUseConstraint is a constraint about the use of a backing in a network pool

const (
	BackingUseExplicit       BackingUseConstraint = "use-explicit-name"   // use explicitly named backing
	BackingUseWhenOnlyOne    BackingUseConstraint = "use-when-only-one"   // use automatically when only one was found
	BackingUseFirstAvailable BackingUseConstraint = "use-first-available" // use the first available backing with no conditions
)

type Behavior added in v2.21.0

type Behavior struct {
	ID          string                 `json:"id,omitempty"`          // The Behavior ID is generated and is an output-only property
	Description string                 `json:"description,omitempty"` // A description specifying the contract of the Behavior
	Execution   map[string]interface{} `json:"execution,omitempty"`   // The Behavior execution mechanism. Can be defined both in an Interface and in a Defined Entity Type as an override
	Ref         string                 `json:"ref,omitempty"`         // The Behavior invocation reference to be used for polymorphic behavior invocations. It is generated and is an output-only property
	Name        string                 `json:"name,omitempty"`
}

Behavior defines a concept similar to a "procedure" that lives inside Defined Interfaces or Defined Entity Types as overrides.

type BehaviorAccess added in v2.21.0

type BehaviorAccess struct {
	AccessLevelId string `json:"accessLevelId,omitempty"` // The ID of an AccessLevel
	BehaviorId    string `json:"behaviorId,omitempty"`    // The ID of the Behavior. It can be both a behavior-interface or an overridden behavior-type ID
}

BehaviorAccess defines the access control configuration of a Behavior.

type BehaviorInvocation added in v2.21.0

type BehaviorInvocation struct {
	Arguments interface{} `json:"arguments,omitempty"`
	Metadata  interface{} `json:"metadata,omitempty"`
}

BehaviorInvocation is an invocation of a Behavior on a Defined Entity instance. Currently, the Behavior interfaces are key-value maps specified in the Behavior description.

type BodyType added in v2.9.0

type BodyType int

BodyType allows to define API body types where applicable

const (
	// BodyTypeXML
	BodyTypeXML BodyType = iota

	// BodyTypeJSON
	BodyTypeJSON
)

type BootOptions added in v2.22.0

type BootOptions struct {
	BootDelay            *int   `xml:"BootDelay,omitempty"`            // Delay between power-on and boot of the VM
	EnterBiosSetup       *bool  `xml:"EnterBIOSSetup,omitempty"`       // Set to false on the next boot
	BootRetryEnabled     *bool  `xml:"BootRetryEnabled,omitempty"`     // Available since API 37.1
	BootRetryDelay       *int   `xml:"BootRetryDelay,omitempty"`       // Available since API 37.1. Doesn't have an effect if BootRetryEnabled is set to false
	EfiSecureBootEnabled *bool  `xml:"EfiSecureBootEnabled,omitempty"` // Available since API 37.1
	NetworkBootProtocol  string `xml:"NetworkBootProtocol,omitempty"`  // Available since API 37.1
}

BootOptions allows to specify boot options of a VM

type CandidateVdc added in v2.14.0

type CandidateVdc struct {
	FaultDomainTag       string           `json:"faultDomainTag"`
	Id                   string           `json:"id"`
	Name                 string           `json:"name"`
	NetworkProviderScope string           `json:"networkProviderScope"`
	OrgRef               OpenApiReference `json:"orgRef"`
	SiteRef              OpenApiReference `json:"siteRef"`
}

CandidateVdc defines possible candidate VDCs for VDC group

type Capabilities

type Capabilities struct {
	SupportedHardwareVersions *SupportedHardwareVersions `xml:"SupportedHardwareVersions,omitempty" json:"supportedHardwareVersions,omitempty"` // Read-only list of virtual hardware versions supported by this vDC.
}

Capabilities collection of supported hardware capabilities. Type: CapabilitiesType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Collection of supported hardware capabilities. Since: 1.5

type CapacityWithUsage

type CapacityWithUsage struct {
	Units     string `xml:"Units"`
	Allocated int64  `xml:"Allocated"`
	Limit     int64  `xml:"Limit"`
	Reserved  int64  `xml:"Reserved,omitempty"`
	Used      int64  `xml:"Used,omitempty"`
}

CapacityWithUsage represents a capacity and usage of a given resource. Type: CapacityWithUsageType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a capacity and usage of a given resource. Since: 0.9

type CaptureVAppParams added in v2.23.0

type CaptureVAppParams struct {
	XMLName xml.Name `xml:"CaptureVAppParams"`

	Xmlns    string `xml:"xmlns,attr"`
	XmlnsNs0 string `xml:"xmlns:ns0,attr,omitempty"`

	// Name of vApp template
	Name string `xml:"name,attr"`
	// Description of vApp template
	Description string `xml:"Description,omitempty"`

	// Source vApp reference. At least HREF field must be set
	Source *Reference `xml:"Source"`

	// CustomizationSection section
	CustomizationSection CaptureVAppParamsCustomizationSection `xml:"CustomizationSection"`

	// TargetCatalogItem can be used to overwrite existing item. To overwrite an existing vApp
	// template with the one created by this capture, place a reference to the existing template
	// here. Otherwise, the operation creates a new vApp template.
	TargetCatalogItem *Reference `xml:"TargetCatalogItem,omitempty"`

	// CopyTpmOnInstantiate defines if TPM device is copied (`true`) to instantiated vApp from this
	// template or `false` if a new TPM device is created for instantiated vApp.
	// Note. Supported on VCD 10.4.2+
	CopyTpmOnInstantiate *bool `xml:"CopyTpmOnInstantiate"`
}

CaptureVAppParams is a configuration that can be supplied for capturing a vApp template from existing vApp

type CaptureVAppParamsCustomizationSection added in v2.23.0

type CaptureVAppParamsCustomizationSection struct {
	// This field must contain value "CustomizeOnInstantiate Settings" so that API does not reject
	// the request
	Info string `xml:"ns0:Info,omitempty"`
	// CustomizeOnInstantiate marks if instantiating this template applies customization settings
	// (`true`). `false` creates an identical copy.
	CustomizeOnInstantiate bool `xml:"CustomizeOnInstantiate"`
}

CaptureVAppParamsCustomizationSection settings for CaptureVAppParams type

type Capvcd added in v2.23.0

type Capvcd struct {
	Kind string `json:"kind,omitempty"`
	Spec struct {
		VcdKe struct {
			// NOTE: "Secure" struct needs to be a pointer to avoid overriding with empty values by mistake, as VCD doesn't return RDE fields
			// marked with "x-vcloud-restricted: secure"
			Secure *struct {
				ApiToken string `json:"apiToken,omitempty"`
			} `json:"secure,omitempty"`
			IsVCDKECluster             bool `json:"isVCDKECluster,omitempty"`
			AutoRepairOnErrors         bool `json:"autoRepairOnErrors,omitempty"`
			DefaultStorageClassOptions struct {
				Filesystem             string `json:"filesystem,omitempty"`
				K8SStorageClassName    string `json:"k8sStorageClassName,omitempty"`
				VcdStorageProfileName  string `json:"vcdStorageProfileName,omitempty"`
				UseDeleteReclaimPolicy bool   `json:"useDeleteReclaimPolicy,omitempty"`
			} `json:"defaultStorageClassOptions,omitempty"`
		} `json:"vcdKe,omitempty"`
		CapiYaml string `json:"capiYaml,omitempty"`
	} `json:"spec,omitempty"`
	Status struct {
		Cpi struct {
			Name     string `json:"name,omitempty"`
			Version  string `json:"version,omitempty"`
			EventSet []struct {
				Name              string    `json:"name,omitempty"`
				OccurredAt        time.Time `json:"occurredAt,omitempty"`
				VcdResourceId     string    `json:"vcdResourceId,omitempty"`
				VcdResourceName   string    `json:"vcdResourceName,omitempty"`
				AdditionalDetails struct {
					DetailedEvent string `json:"Detailed Event,omitempty"`
				} `json:"additionalDetails,omitempty"`
			} `json:"eventSet,omitempty"`
			ErrorSet []struct {
				Name              string    `json:"name,omitempty"`
				OccurredAt        time.Time `json:"occurredAt,omitempty"`
				VcdResourceId     string    `json:"vcdResourceId,omitempty"`
				VcdResourceName   string    `json:"vcdResourceName,omitempty"`
				AdditionalDetails struct {
					DetailedError string `json:"Detailed Error,omitempty"`
				} `json:"additionalDetails,omitempty"`
			} `json:"errorSet,omitempty"`
		} `json:"cpi,omitempty"`
		Csi struct {
			Name     string `json:"name,omitempty"`
			Version  string `json:"version,omitempty"`
			EventSet []struct {
				Name              string    `json:"name,omitempty"`
				OccurredAt        time.Time `json:"occurredAt,omitempty"`
				VcdResourceId     string    `json:"vcdResourceId,omitempty"`
				VcdResourceName   string    `json:"vcdResourceName,omitempty"`
				AdditionalDetails struct {
					DetailedDescription string `json:"Detailed Description,omitempty"`
				} `json:"additionalDetails,omitempty"`
			} `json:"eventSet,omitempty"`
			ErrorSet []struct {
				Name              string    `json:"name,omitempty"`
				OccurredAt        time.Time `json:"occurredAt,omitempty"`
				VcdResourceId     string    `json:"vcdResourceId,omitempty"`
				VcdResourceName   string    `json:"vcdResourceName,omitempty"`
				AdditionalDetails struct {
					DetailedError string `json:"Detailed Error,omitempty"`
				} `json:"additionalDetails,omitempty"`
			} `json:"errorSet,omitempty"`
		} `json:"csi,omitempty"`
		VcdKe struct {
			State    string `json:"state,omitempty"`
			EventSet []struct {
				Name              string    `json:"name,omitempty"`
				OccurredAt        time.Time `json:"occurredAt,omitempty"`
				VcdResourceId     string    `json:"vcdResourceId,omitempty"`
				VcdResourceName   string    `json:"vcdResourceName,omitempty"`
				AdditionalDetails struct {
					DetailedEvent string `json:"Detailed Event,omitempty"`
				} `json:"additionalDetails,omitempty"`
			} `json:"eventSet,omitempty"`
			ErrorSet []struct {
				Name              string    `json:"name,omitempty"`
				OccurredAt        time.Time `json:"occurredAt,omitempty"`
				VcdResourceId     string    `json:"vcdResourceId,omitempty"`
				VcdResourceName   string    `json:"vcdResourceName,omitempty"`
				AdditionalDetails struct {
					DetailedError string `json:"Detailed Error,omitempty"`
				} `json:"additionalDetails,omitempty"`
			} `json:"errorSet,omitempty"`
			WorkerId       string `json:"workerId,omitempty"`
			VcdKeVersion   string `json:"vcdKeVersion,omitempty"`
			VcdResourceSet []struct {
				Id   string `json:"id,omitempty"`
				Name string `json:"name,omitempty"`
				Type string `json:"type,omitempty"`
			} `json:"vcdResourceSet,omitempty"`
			HeartbeatString     string `json:"heartbeatString,omitempty"`
			VcdKeInstanceId     string `json:"vcdKeInstanceId,omitempty"`
			HeartbeatTimestamp  string `json:"heartbeatTimestamp,omitempty"`
			DefaultStorageClass struct {
				FileSystem             string `json:"fileSystem,omitempty"`
				K8SStorageClassName    string `json:"k8sStorageClassName,omitempty"`
				VcdStorageProfileName  string `json:"vcdStorageProfileName,omitempty"`
				UseDeleteReclaimPolicy bool   `json:"useDeleteReclaimPolicy,omitempty"`
			} `json:"defaultStorageClass,omitempty"`
		} `json:"vcdKe,omitempty"`
		Capvcd struct {
			Uid   string `json:"uid,omitempty"`
			Phase string `json:"phase,omitempty"`
			// NOTE: "Private" struct needs to be a pointer to avoid overriding with empty values by mistake, as VCD doesn't return RDE fields
			// marked with "x-vcloud-restricted: secure"
			Private *struct {
				KubeConfig string `json:"kubeConfig,omitempty"`
			} `json:"private,omitempty"`
			Upgrade struct {
				Ready   bool `json:"ready,omitempty"`
				Current struct {
					TkgVersion        string `json:"tkgVersion,omitempty"`
					KubernetesVersion string `json:"kubernetesVersion,omitempty"`
				} `json:"current,omitempty"`
			} `json:"upgrade,omitempty"`
			EventSet []struct {
				Name            string    `json:"name,omitempty"`
				OccurredAt      time.Time `json:"occurredAt,omitempty"`
				VcdResourceId   string    `json:"vcdResourceId,omitempty"`
				VcdResourceName string    `json:"vcdResourceName,omitempty"`
			} `json:"eventSet,omitempty"`
			ErrorSet []struct {
				Name              string    `json:"name,omitempty"`
				OccurredAt        time.Time `json:"occurredAt,omitempty"`
				VcdResourceId     string    `json:"vcdResourceId,omitempty"`
				VcdResourceName   string    `json:"vcdResourceName,omitempty"`
				AdditionalDetails struct {
					DetailedError string `json:"Detailed Error,omitempty"`
				} `json:"additionalDetails,omitempty"`
			} `json:"errorSet,omitempty"`
			NodePool []struct {
				Name              string `json:"name,omitempty"`
				DiskSizeMb        int    `json:"diskSizeMb,omitempty"`
				SizingPolicy      string `json:"sizingPolicy,omitempty"`
				StorageProfile    string `json:"storageProfile,omitempty"`
				DesiredReplicas   int    `json:"desiredReplicas,omitempty"`
				AvailableReplicas int    `json:"availableReplicas,omitempty"`
			} `json:"nodePool,omitempty"`
			ParentUid  string `json:"parentUid,omitempty"`
			K8SNetwork struct {
				Pods struct {
					CidrBlocks []string `json:"cidrBlocks,omitempty"`
				} `json:"pods,omitempty"`
				Services struct {
					CidrBlocks []string `json:"cidrBlocks,omitempty"`
				} `json:"services,omitempty"`
			} `json:"k8sNetwork,omitempty"`
			Kubernetes    string `json:"kubernetes,omitempty"`
			CapvcdVersion string `json:"capvcdVersion,omitempty"`
			VcdProperties struct {
				Site    string `json:"site,omitempty"`
				OrgVdcs []struct {
					Id              string `json:"id,omitempty"`
					Name            string `json:"name,omitempty"`
					OvdcNetworkName string `json:"ovdcNetworkName,omitempty"`
				} `json:"orgVdcs,omitempty"`
				Organizations []struct {
					Id   string `json:"id,omitempty"`
					Name string `json:"name,omitempty"`
				} `json:"organizations,omitempty"`
			} `json:"vcdProperties,omitempty"`
			CapiStatusYaml string `json:"capiStatusYaml,omitempty"`
			VcdResourceSet []struct {
				Id                string `json:"id,omitempty"`
				Name              string `json:"name,omitempty"`
				Type              string `json:"type,omitempty"`
				AdditionalDetails struct {
					VirtualIP string `json:"virtualIP,omitempty"`
				} `json:"additionalDetails,omitempty"`
			} `json:"vcdResourceSet,omitempty"`
			ClusterApiStatus struct {
				Phase        string `json:"phase,omitempty"`
				ApiEndpoints []struct {
					Host string `json:"host,omitempty"`
					Port int    `json:"port,omitempty"`
				} `json:"apiEndpoints,omitempty"`
			} `json:"clusterApiStatus,omitempty"`
			CreatedByVersion           string `json:"createdByVersion,omitempty"`
			ClusterResourceSetBindings []struct {
				Kind                   string `json:"kind,omitempty"`
				Name                   string `json:"name,omitempty"`
				Applied                bool   `json:"applied,omitempty"`
				LastAppliedTime        string `json:"lastAppliedTime,omitempty"`
				ClusterResourceSetName string `json:"clusterResourceSetName,omitempty"`
			} `json:"clusterResourceSetBindings,omitempty"`
		} `json:"capvcd,omitempty"`
		Projector struct {
			Name     string `json:"name,omitempty"`
			Version  string `json:"version,omitempty"`
			EventSet []struct {
				Name              string    `json:"name,omitempty"`
				OccurredAt        time.Time `json:"occurredAt,omitempty"`
				VcdResourceId     string    `json:"vcdResourceId,omitempty"`
				VcdResourceName   string    `json:"vcdResourceName,omitempty"`
				AdditionalDetails struct {
					Event string `json:"event,omitempty"`
				} `json:"additionalDetails,omitempty"`
			} `json:"eventSet,omitempty"`
			ErrorSet []struct {
				Name              string    `json:"name,omitempty"`
				OccurredAt        time.Time `json:"occurredAt,omitempty"`
				VcdResourceId     string    `json:"vcdResourceId,omitempty"`
				VcdResourceName   string    `json:"vcdResourceName,omitempty"`
				AdditionalDetails struct {
					DetailedError string `json:"Detailed Error,omitempty"`
				} `json:"additionalDetails,omitempty"`
			} `json:"errorSet,omitempty"`
		} `json:"projector,omitempty"`
	} `json:"status,omitempty"`
	Metadata struct {
		Name                  string `json:"name,omitempty"`
		Site                  string `json:"site,omitempty"`
		OrgName               string `json:"orgName,omitempty"`
		VirtualDataCenterName string `json:"virtualDataCenterName,omitempty"`
	} `json:"metadata,omitempty"`
	ApiVersion string `json:"apiVersion,omitempty"`
}

Capvcd (Cluster API Provider for VCD), is a type that represents a Kubernetes cluster inside VCD, that is created and managed with the Container Service Extension (CSE)

type Catalog

type Catalog struct {
	HREF                         string                        `xml:"href,attr,omitempty"`
	Type                         string                        `xml:"type,attr,omitempty"`
	ID                           string                        `xml:"id,attr,omitempty"`
	OperationKey                 string                        `xml:"operationKey,attr,omitempty"`
	Name                         string                        `xml:"name,attr"`
	CatalogItems                 []*CatalogItems               `xml:"CatalogItems,omitempty"`
	DateCreated                  string                        `xml:"DateCreated,omitempty"`
	Description                  string                        `xml:"Description,omitempty"`
	IsPublished                  bool                          `xml:"IsPublished,omitempty"`
	Link                         LinkList                      `xml:"Link,omitempty"`
	Owner                        *Owner                        `xml:"Owner,omitempty"`
	Tasks                        *TasksInProgress              `xml:"Tasks,omitempty"`
	VersionNumber                int64                         `xml:"VersionNumber,omitempty"`
	PublishExternalCatalogParams *PublishExternalCatalogParams `xml:"PublishExternalCatalogParams,omitempty"`
}

Catalog represents the user view of a Catalog object. Type: CatalogType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents the user view of a Catalog object. https://code.vmware.com/apis/287/vcloud#/doc/doc/types/CatalogType.html Since: 0.9

type CatalogItem

type CatalogItem struct {
	HREF          string           `xml:"href,attr,omitempty"`
	Type          string           `xml:"type,attr,omitempty"`
	ID            string           `xml:"id,attr,omitempty"`
	OperationKey  string           `xml:"operationKey,attr,omitempty"`
	Name          string           `xml:"name,attr"`
	Size          int64            `xml:"size,attr,omitempty"`
	DateCreated   string           `xml:"DateCreated,omitempty"`
	Description   string           `xml:"Description,omitempty"`
	Entity        *Entity          `xml:"Entity"`
	Link          LinkList         `xml:"Link,omitempty"`
	Tasks         *TasksInProgress `xml:"Tasks,omitempty"`
	VersionNumber int64            `xml:"VersionNumber,omitempty"`
}

CatalogItem contains a reference to a VappTemplate or Media object and related metadata. Type: CatalogItemType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Contains a reference to a VappTemplate or Media object and related metadata. Since: 0.9

type CatalogItems

type CatalogItems struct {
	CatalogItem []*Reference `xml:"CatalogItem"`
}

CatalogItems is a container for references to catalog items. Type: CatalogItemsType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Container for references to catalog items. Since: 0.9

type CatalogRecord added in v2.8.0

type CatalogRecord struct {
	HREF                    string    `xml:"href,attr,omitempty"`
	ID                      string    `xml:"id,attr,omitempty"`
	Type                    string    `xml:"type,attr,omitempty"`
	Name                    string    `xml:"name,attr,omitempty"`
	Description             string    `xml:"description,attr,omitempty"`
	IsPublished             bool      `xml:"isPublished,attr,omitempty"`
	IsShared                bool      `xml:"isShared,attr,omitempty"`
	IsLocal                 bool      `xml:"isLocal,attr,omitempty"`
	CreationDate            string    `xml:"creationDate,attr,omitempty"`
	OrgName                 string    `xml:"orgName,attr,omitempty"`
	OwnerName               string    `xml:"ownerName,attr,omitempty"`
	NumberOfVAppTemplates   int64     `xml:"numberOfVAppTemplates,attr,omitempty"`
	NumberOfMedia           int64     `xml:"numberOfMedia,attr,omitempty"`
	Owner                   string    `xml:"owner,attr,omitempty"`
	PublishSubscriptionType string    `xml:"publishSubscriptionType,attr,omitempty"`
	Version                 int64     `xml:"version,attr,omitempty"`
	Status                  string    `xml:"status,attr,omitempty"`
	Link                    *Link     `xml:"Link,omitempty"`
	Metadata                *Metadata `xml:"Metadata,omitempty"`
}

Type: AdminCatalogRecord Namespace: http://www.vmware.com/vcloud/v1.5 https://code.vmware.com/apis/287/vcloud#/doc/doc/types/QueryResultCatalogRecordType.html Issue that description partly matches with what is returned Description: Represents Catalog record Since: 1.5

type CatalogStorageProfiles

type CatalogStorageProfiles struct {
	VdcStorageProfile []*Reference `xml:"VdcStorageProfile,omitempty"`
}

CatalogStorageProfiles represents a container for storage profiles used by this catalog Type: CatalogStorageProfiles Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a container for storage profiles used by this catalog Since: 5.5

type CatalogsList

type CatalogsList struct {
	Catalog []*Reference `xml:"CatalogReference,omitempty"`
}

CatalogsList contains a list of references to Org Catalogs Type: CatalogsListType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a list of organization Catalogs. Since: 0.9

type CertificateLibraryItem added in v2.14.0

type CertificateLibraryItem struct {
	Alias                string `json:"alias"`
	Id                   string `json:"id,omitempty"`
	Certificate          string `json:"certificate"` // PEM encoded certificate
	Description          string `json:"description,omitempty"`
	PrivateKey           string `json:"privateKey,omitempty"`           // PEM encoded private key. Required if providing a certificate chain
	PrivateKeyPassphrase string `json:"privateKeyPassphrase,omitempty"` // passphrase for the private key. Required if the private key is encrypted
}

CertificateLibraryItem is a Certificate Library definition of stored Certificate details

type CloneVAppParams added in v2.21.0

type CloneVAppParams struct {
	XMLName xml.Name `xml:"CloneVAppParams"`
	Ovf     string   `xml:"xmlns:ovf,attr"`
	Xsi     string   `xml:"xmlns:xsi,attr,omitempty"`
	Xmlns   string   `xml:"xmlns,attr"`
	// Attributes
	Name        string `xml:"name,attr,omitempty"`        // Typically used to name or identify the subject of the request. For example, the name of the object being created or modified.
	Deploy      bool   `xml:"deploy,attr"`                // True if the vApp should be deployed at instantiation. Defaults to true.
	PowerOn     bool   `xml:"powerOn,attr"`               // True if the vApp should be powered-on at instantiation. Defaults to true.
	LinkedClone bool   `xml:"linkedClone,attr,omitempty"` // Reserved. Unimplemented.
	// Elements
	Description         string                       `xml:"Description,omitempty"`         // Optional description.
	InstantiationParams *InstantiationParams         `xml:"InstantiationParams,omitempty"` // Instantiation parameters for the composed vApp.
	Source              *Reference                   `xml:"Source"`                        // A reference to a source object such as a vApp or vApp template.
	IsSourceDelete      *bool                        `xml:"IsSourceDelete"`                // Set to true to delete the source object after the operation completes.
	SourcedItem         *SourcedCompositionItemParam `xml:"SourcedItem,omitempty"`         // Composition item. One of: vApp vAppTemplate VM.
}

CloneVAppParams is used to copy one vApp into another

type ComposeVAppParams

type ComposeVAppParams struct {
	XMLName xml.Name `xml:"ComposeVAppParams"`
	Ovf     string   `xml:"xmlns:ovf,attr"`
	Xsi     string   `xml:"xmlns:xsi,attr"`
	Xmlns   string   `xml:"xmlns,attr"`
	// Attributes
	Name        string `xml:"name,attr,omitempty"`        // Typically used to name or identify the subject of the request. For example, the name of the object being created or modified.
	Deploy      bool   `xml:"deploy,attr"`                // True if the vApp should be deployed at instantiation. Defaults to true.
	PowerOn     bool   `xml:"powerOn,attr"`               // True if the vApp should be powered-on at instantiation. Defaults to true.
	LinkedClone bool   `xml:"linkedClone,attr,omitempty"` // Reserved. Unimplemented.
	// Elements
	Description         string                       `xml:"Description,omitempty"`         // Optional description.
	VAppParent          *Reference                   `xml:"VAppParent,omitempty"`          // Reserved. Unimplemented.
	InstantiationParams *InstantiationParams         `xml:"InstantiationParams,omitempty"` // Instantiation parameters for the composed vApp.
	SourcedItem         *SourcedCompositionItemParam `xml:"SourcedItem,omitempty"`         // Composition item. One of: vApp vAppTemplate VM.
	AllEULAsAccepted    bool                         `xml:"AllEULAsAccepted,omitempty"`    // True confirms acceptance of all EULAs in a vApp template. Instantiation fails if this element is missing, empty, or set to false and one or more EulaSection elements are present.
}

ComposeVAppParams represents vApp composition parameters Type: ComposeVAppParamsType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents vApp composition parameters. Since: 0.9

type ComputeCapacity

type ComputeCapacity struct {
	CPU    *CapacityWithUsage `xml:"Cpu"`
	Memory *CapacityWithUsage `xml:"Memory"`
}

ComputeCapacity represents VDC compute capacity. Type: ComputeCapacityType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents VDC compute capacity. Since: 0.9

type ComputePolicy added in v2.9.0

type ComputePolicy struct {
	HREF                   string     `xml:"href,attr,omitempty"`
	Type                   string     `xml:"type,attr,omitempty"`
	Link                   *Link      `xml:"Link,omitempty"`                   // A reference to an entity or operation associated with this object.
	VmPlacementPolicy      *Reference `xml:"VmPlacementPolicy,omitempty"`      // VdcComputePolicy that defines VM's placement on a host through various affinity constraints.
	VmPlacementPolicyFinal *bool      `xml:"VmPlacementPolicyFinal,omitempty"` // True indicates that the placement policy cannot be removed from a VM that is instantiated with it. This value defaults to false.
	VmSizingPolicy         *Reference `xml:"VmSizingPolicy,omitempty"`         // VdcComputePolicy that defines VM's sizing and resource allocation.
	VmSizingPolicyFinal    *bool      `xml:"VmSizingPolicyFinal,omitempty"`    // True indicates that the sizing policy cannot be removed from a VM that is instantiated with it. This value defaults to false.
}

ComputePolicy represents structure to manage VM compute polices, part of RecomposeVAppParams structure.

type Connection added in v2.11.0

type Connection struct {
	RouterRef      OpenApiReference `json:"routerRef"`
	ConnectionType string           `json:"connectionType,omitempty"`
}

Connection specifies the edge gateway this network is connected to

type ControlAccessParams added in v2.9.0

type ControlAccessParams struct {
	XMLName             xml.Name           `xml:"ControlAccessParams"`
	Xmlns               string             `xml:"xmlns,attr"`
	IsSharedToEveryone  bool               `xml:"IsSharedToEveryone"`            // If true, the resource is shared with everyone in the organization. Defaults to false.
	EveryoneAccessLevel *string            `xml:"EveryoneAccessLevel,omitempty"` // If IsSharedToEveryone is true, this element must be present to specify the access level. for all members of the organization. One of: FullControl Change ReadOnly
	AccessSettings      *AccessSettingList `xml:"AccessSettings,omitempty"`      // The access settings to be applied if IsSharedToEveryone is false. Required on create and modify if IsSharedToEveryone is false.
}

ControlAccessParams specifies access controls for a resource.

type CpuResourceMhz added in v2.6.0

type CpuResourceMhz struct {
	Configured  int64  `xml:"Configured"`            // The amount of resource configured on the virtual machine.
	Reservation *int64 `xml:"Reservation,omitempty"` // The amount of reservation of this resource on the underlying virtualization infrastructure.
	Limit       *int64 `xml:"Limit,omitempty"`       // The limit for how much of this resource can be consumed on the underlying virtualization infrastructure. This is only valid when the resource allocation is not unlimited.
	SharesLevel string `xml:"SharesLevel,omitempty"` //	Pre-determined relative priorities according to which the non-reserved portion of this resource is made available to the virtualized workload.
	Shares      *int   `xml:"Shares,omitempty"`      // Custom priority for the resource. This field is read-only, unless the shares level is CUSTOM.
}

CpuResourceMhz from Vm/VmSpecSection struct

type CreateItem added in v2.8.0

type CreateItem struct {
	Name                      string                     `xml:"name,attr,omitempty"`
	Description               string                     `xml:"Description,omitempty"`
	GuestCustomizationSection *GuestCustomizationSection `xml:"GuestCustomizationSection,omitempty"`
	NetworkConnectionSection  *NetworkConnectionSection  `xml:"NetworkConnectionSection,omitempty"`
	VmSpecSection             *VmSpecSection             `xml:"VmSpecSection,omitempty"`
	StorageProfile            *Reference                 `xml:"StorageProfile,omitempty"`
	ComputePolicy             *ComputePolicy             `xml:"ComputePolicy,omitempty"` // accessible only from version API 33.0
	BootOptions               *BootOptions               `xml:"BootOptions,omitempty"`
	BootImage                 *Media                     `xml:"Media,omitempty"` // boot image as vApp template. Href, Id and name needed.
}

CreateItem represents structure to create VM, part of RecomposeVAppParams structure.

type CreateVmParams added in v2.11.0

type CreateVmParams struct {
	XMLName     xml.Name   `xml:"CreateVmParams"`
	XmlnsOvf    string     `xml:"xmlns:ovf,attr"`
	Xmlns       string     `xml:"xmlns,attr,omitempty"`
	Name        string     `xml:"name,attr,omitempty"`    // Typically used to name or identify the subject of the request. For example, the name of the object being created or modified.
	PowerOn     bool       `xml:"powerOn,attr,omitempty"` // True if the VM should be powered-on after creation. Defaults to false.
	Description string     `xml:"Description,omitempty"`  // Optional description
	CreateVm    *Vm        `xml:"CreateVm"`               // Read-only information about the VM to create. This information appears in the Task returned by a createVm request.
	Media       *Reference `xml:"Media,omitempty"`        // Reference to the media object to insert in the new VM.
}

CreateVmParams is used to create a standalone VM without a template

type CurrentSessionInfo added in v2.14.0

type CurrentSessionInfo struct {
	ID                        string            `json:"id"`                        // Session ID
	User                      OpenApiReference  `json:"user"`                      // Name of the user associated with this session
	Org                       OpenApiReference  `json:"org"`                       // Organization for this connection
	Location                  string            `json:"location"`                  // Location ID: unknown usage
	Roles                     []string          `json:"roles"`                     // Roles associated with the session user
	RoleRefs                  OpenApiReferences `json:"roleRefs"`                  // Roles references for the session user
	SessionIdleTimeoutMinutes int               `json:"sessionIdleTimeoutMinutes"` // session idle timeout
}

CurrentSessionInfo gives information about the current session

type CustomOrgLdapSettings

type CustomOrgLdapSettings struct {
	HREF string   `xml:"href,attr,omitempty"` // The URI of the entity.
	Type string   `xml:"type,attr,omitempty"` // The MIME type of the entity.
	Link LinkList `xml:"Link,omitempty"`      // A reference to an entity or operation associated with this object.

	HostName                 string                  `xml:"HostName,omitempty"`
	Port                     int                     `xml:"Port"`
	IsSsl                    bool                    `xml:"IsSsl,omitempty"`
	IsSslAcceptAll           bool                    `xml:"IsSslAcceptAll,omitempty"`
	SearchBase               string                  `xml:"SearchBase,omitempty"`
	Username                 string                  `xml:"UserName,omitempty"`
	Password                 string                  `xml:"Password,omitempty"`
	AuthenticationMechanism  string                  `xml:"AuthenticationMechanism"`
	IsGroupSearchBaseEnabled bool                    `xml:"IsGroupSearchBaseEnabled"`
	GroupSearchBase          string                  `xml:"GroupSearchBase,omitempty"`
	ConnectorType            string                  `xml:"ConnectorType"`   // Defines LDAP service implementation type
	UserAttributes           *OrgLdapUserAttributes  `xml:"UserAttributes"`  // Defines how LDAP attributes are used when importing a user.
	GroupAttributes          *OrgLdapGroupAttributes `xml:"GroupAttributes"` // Defines how LDAP attributes are used when importing a group.
	UseExternalKerberos      bool                    `xml:"UseExternalKerberos"`

	Realm string `xml:"Realm,omitempty"`
}

CustomOrgLdapSettings represents the custom ldap settings for a VMware Cloud Director organization. Type: CustomOrgLdapSettingsType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents the custom ldap settings of a VMware Cloud Director organization. Since: 0.9 Note. Order of these fields matter and API will error if it is changed

type CustomizationSection

type CustomizationSection struct {
	// FIXME: OVF Section needs to be laid down correctly
	Info string `xml:"ovf:Info"`
	//
	GoldMaster             bool     `xml:"goldMaster,attr,omitempty"`
	HREF                   string   `xml:"href,attr,omitempty"`
	Type                   string   `xml:"type,attr,omitempty"`
	CustomizeOnInstantiate bool     `xml:"CustomizeOnInstantiate"`
	Link                   LinkList `xml:"Link,omitempty"`
}

CustomizationSection represents a vApp template customization settings. Type: CustomizationSectionType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a vApp template customization settings. Since: 1.0

type DefaultPolicy added in v2.14.0

type DefaultPolicy struct {
	Description string        `json:"description,omitempty"` // Description for the security policy.
	Enabled     *bool         `json:"enabled,omitempty"`     // Whether this security policy is enabled.
	Id          string        `json:"id,omitempty"`          // The unique id of this security policy. On updates, the id is required for the policy, while for create a new id will be generated. This id is not a VCD URN.
	Name        string        `json:"name"`                  // Name for the security policy.
	Version     *VersionField `json:"version,omitempty"`     // This property describes the current version of the entity. To prevent clients from overwriting each other’s changes, update operations must include the version which can be obtained by issuing a GET operation. If the version number on an update call is missing, the operation will be rejected. This is only needed on update calls.
}

DefaultPolicy defines Default policy for Distributed firewall

type DefaultStorageProfileSection

type DefaultStorageProfileSection struct {
	StorageProfile string `xml:"StorageProfile,omitempty"`
}

DefaultStorageProfileSection is the name of the storage profile that will be specified for this virtual machine. The named storage profile must exist in the organization vDC that contains the virtual machine. If not specified, the default storage profile for the vDC is used. Type: DefaultStorageProfileSection_Type Namespace: http://www.vmware.com/vcloud/v1.5 Description: Name of the storage profile that will be specified for this virtual machine. The named storage profile must exist in the organization vDC that contains the virtual machine. If not specified, the default storage profile for the vDC is used. Since: 5.1

type DefinedEntity added in v2.20.0

type DefinedEntity struct {
	ID         string                 `json:"id,omitempty"`         // The id of the defined entity in URN format
	EntityType string                 `json:"entityType,omitempty"` // The URN ID of the defined entity type that the entity is an instance of. This is a read-only field
	Name       string                 `json:"name,omitempty"`       // The name of the defined entity
	ExternalId string                 `json:"externalId,omitempty"` // An external entity's id that this entity may have a relation to.
	Entity     map[string]interface{} `json:"entity,omitempty"`     // A JSON value representation. The JSON will be validated against the schema of the DefinedEntityType that the entity is an instance of
	State      *string                `json:"state,omitempty"`      // Every entity is created in the "PRE_CREATED" state. Once an entity is ready to be validated against its schema, it will transition in another state - RESOLVED, if the entity is valid according to the schema, or RESOLUTION_ERROR otherwise. If an entity in an "RESOLUTION_ERROR" state is updated, it will transition to the inital "PRE_CREATED" state without performing any validation. If its in the "RESOLVED" state, then it will be validated against the entity type schema and throw an exception if its invalid
	Owner      *OpenApiReference      `json:"owner,omitempty"`      // The owner of the defined entity
	Org        *OpenApiReference      `json:"org,omitempty"`        // The organization of the defined entity.
}

DefinedEntity describes an instance of a defined entity type.

type DefinedEntityType added in v2.20.0

type DefinedEntityType struct {
	ID               string                 `json:"id,omitempty"`               // The id of the defined entity type in URN format
	Name             string                 `json:"name,omitempty"`             // The name of the defined entity type
	Nss              string                 `json:"nss,omitempty"`              // A unique namespace specific string. The combination of nss and version must be unique
	Version          string                 `json:"version,omitempty"`          // The version of the defined entity. The combination of nss and version must be unique. The version string must follow semantic versioning rules
	Description      string                 `json:"description,omitempty"`      // Description of the defined entity
	ExternalId       string                 `json:"externalId,omitempty"`       // An external entity’s id that this definition may apply to
	Hooks            map[string]string      `json:"hooks,omitempty"`            // A mapping defining which behaviors should be invoked upon specific lifecycle events, like PostCreate, PostUpdate, PreDelete. For example: "hooks": { "PostCreate": "urn:vcloud:behavior-interface:postCreateHook:vendorA:containerCluster:1.0.0" }. Added in 36.0
	InheritedVersion string                 `json:"inheritedVersion,omitempty"` // To be used when creating a new version of a defined entity type. Specifies the version of the type that will be the template for the authorization configuration of the new version. The Type ACLs and the access requirements of the Type Behaviors of the new version will be copied from those of the inherited version. If the value of this property is ‘0’, then the new type version will not inherit another version and will have the default authorization settings, just like the first version of a new type. Added in 36.0
	Interfaces       []string               `json:"interfaces,omitempty"`       // List of interface IDs that this defined entity type is referenced by
	MaxImplicitRight string                 `json:"maxImplicitRight,omitempty"` // The maximum Type Right level that will be implied from the user’s Type ACLs if this field is defined. For example, “maxImplicitRight”: “urn:vcloud:accessLevel:ReadWrite” would mean that a user with RO , RW, and FC ACLs to the Type would implicitly get the “Read: ” and “Write: ” rights, but not the “Full Control: ” right. The valid values are “urn:vcloud:accessLevel:ReadOnly”, “urn:vcloud:accessLevel:ReadWrite”, “urn:vcloud:accessLevel:FullControl”
	IsReadOnly       bool                   `json:"readonly,omitempty"`         // `true` if the entity type cannot be modified
	Schema           map[string]interface{} `json:"schema,omitempty"`           // The JSON-Schema valid definition of the defined entity type. If no JSON Schema version is specified, version 4 will be assumed
	Vendor           string                 `json:"vendor,omitempty"`           // The vendor name
}

DefinedEntityType describes what a Defined Entity Type should look like.

type DefinedInterface added in v2.20.0

type DefinedInterface struct {
	ID         string `json:"id,omitempty"`       // The id of the defined interface type in URN format
	Name       string `json:"name,omitempty"`     // The name of the defined interface
	Nss        string `json:"nss,omitempty"`      // A unique namespace associated with the interface
	Version    string `json:"version,omitempty"`  // The interface's version. The version should follow semantic versioning rules
	Vendor     string `json:"vendor,omitempty"`   // The vendor name
	IsReadOnly bool   `json:"readonly,omitempty"` // True if the entity type cannot be modified
}

DefinedInterface defines a interface for a defined entity. The combination of nss+version+vendor should be unique

type DeleteItem

type DeleteItem struct {
	HREF string `xml:"href,attr,omitempty"`
}

type DeleteResourcePool added in v2.21.0

type DeleteResourcePool struct {
	ResourcePoolRefs []*Reference `xml:"DeleteItem" json:"deleteItem"`
}

DeleteResourcePool is used to remove one or more resource pools from a provider VDC

type DeployVAppParams

type DeployVAppParams struct {
	XMLName xml.Name `xml:"DeployVAppParams"`
	Xmlns   string   `xml:"xmlns,attr"`
	// Attributes
	PowerOn                bool `xml:"powerOn,attr"`                          // Used to specify whether to power on vapp on deployment, if not set default value is true.
	DeploymentLeaseSeconds int  `xml:"deploymentLeaseSeconds,attr,omitempty"` // Lease in seconds for deployment. A value of 0 is replaced by the organization default deploymentLeaseSeconds value.
	ForceCustomization     bool `xml:"forceCustomization,attr,omitempty"`     // Used to specify whether to force customization on deployment, if not set default value is false
}

DeployVAppParams are the parameters to a deploy vApp request Type: DeployVAppParamsType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Parameters to a deploy vApp request. Since: 0.9

type Destination added in v2.20.0

type Destination struct {
	Name    string `xml:"name"`
	Value   string `xml:"value"`
	Type    string `xml:"type"`
	IsValid bool   `xml:"isValid"`
}

type Destinations added in v2.20.0

type Destinations struct {
	Excluded    bool          `xml:"excluded,attr"`
	Destination []Destination `xml:"destination"`
}

type DfwPolicies added in v2.14.0

type DfwPolicies struct {
	Enabled       bool           `json:"enabled"`
	DefaultPolicy *DefaultPolicy `json:"defaultPolicy,omitempty"`
}

DfwPolicies defines Distributed firewall policies

type DhcpPoolService

type DhcpPoolService struct {
	IsEnabled        bool       `xml:"IsEnabled,omitempty"`        // True if this DHCP Pool is enabled.
	Network          *Reference `xml:"Network"`                    // Org vDC network to which the DHCP range is applicable.
	DefaultLeaseTime int        `xml:"DefaultLeaseTime,omitempty"` // Default lease period for DHCP range.
	MaxLeaseTime     int        `xml:"MaxLeaseTime"`               // Maximum lease period for DHCP range.
	LowIPAddress     string     `xml:"LowIpAddress"`               // Low IP address in DHCP range.
	HighIPAddress    string     `xml:"HighIpAddress"`              // High IP address in DHCP range.
}

DhcpPoolService represents DHCP pool service. Type: DhcpPoolServiceType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents DHCP pool service. Since: 5.1

type DhcpService

type DhcpService struct {
	IsEnabled           bool     `xml:"IsEnabled"`                     // Enable or disable the service using this flag
	DefaultLeaseTime    int      `xml:"DefaultLeaseTime,omitempty"`    // Default lease in seconds for DHCP addresses.
	MaxLeaseTime        int      `xml:"MaxLeaseTime"`                  //	Max lease in seconds for DHCP addresses.
	IPRange             *IPRange `xml:"IpRange"`                       //	IP range for DHCP addresses.
	RouterIP            string   `xml:"RouterIp,omitempty"`            // Router IP.
	SubMask             string   `xml:"SubMask,omitempty"`             // The subnet mask.
	PrimaryNameServer   string   `xml:"PrimaryNameServer,omitempty"`   // The primary name server.
	SecondaryNameServer string   `xml:"SecondaryNameServer,omitempty"` // The secondary name server.
	DomainName          string   `xml:"DomainName,omitempty"`          //	The domain name.
}

DhcpService represents a DHCP network service. Type: DhcpServiceType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a DHCP network service. Since:

type DhcpV4BindingConfig added in v2.20.0

type DhcpV4BindingConfig struct {
	// GatewayIPAddress contains optional Gateway IP Address. When not specified, Gateway IP of Org
	// vDC network will be used.
	GatewayIPAddress string `json:"gatewayIpAddress,omitempty"`
	// HostName to assign to the host.
	HostName string `json:"hostName,omitempty"`
}

DhcpV4BindingConfig describes additional configuration for IPv6 DHCP Binding of an Org VDC Network.

type DhcpV6BindingConfig added in v2.20.0

type DhcpV6BindingConfig struct {
	// DomainNames to be assigned to client host.
	DomainNames []string `json:"domainNames,omitempty"`

	// SntpServers contains IP addresses of SNTP servers
	SntpServers []string `json:"sntpServers,omitempty"`
}

DhcpV6BindingConfig describes additional configuration for IPv6 DHCP Binding of an Org VDC Network.

type Disk

type Disk struct {
	XMLName      xml.Name `xml:"Disk"`
	Xmlns        string   `xml:"xmlns,attr,omitempty"`
	HREF         string   `xml:"href,attr,omitempty"`
	Type         string   `xml:"type,attr,omitempty"`
	Id           string   `xml:"id,attr,omitempty"`
	OperationKey string   `xml:"operationKey,attr,omitempty"`
	Name         string   `xml:"name,attr"`
	Status       int      `xml:"status,attr,omitempty"`
	// Size of the disk in bytes. No longer supported in API V33.0+.
	// Size            int64            `xml:"size,attr"`
	// SizeMb is the size of disk in MB. It has replaced Size (in bytes) field as of API V33.0
	SizeMb          int64            `xml:"sizeMb,attr,omitempty"`
	Iops            *int             `xml:"iops,attr,omitempty"`
	BusType         string           `xml:"busType,attr,omitempty"`
	BusSubType      string           `xml:"busSubType,attr,omitempty"`
	Encrypted       bool             `xml:"encrypted,attr,omitempty"`
	Shareable       bool             `xml:"shareable,attr,omitempty"`
	SharingType     string           `xml:"sharingType,attr,omitempty"`
	UUID            string           `xml:"uuid,attr,omitempty"`
	Description     string           `xml:"Description,omitempty"`
	Files           *FilesList       `xml:"Files,omitempty"`
	Link            []*Link          `xml:"Link,omitempty"`
	StorageProfile  *Reference       `xml:"StorageProfile,omitempty"`
	Owner           *Owner           `xml:"Owner,omitempty"`
	Tasks           *TasksInProgress `xml:"Tasks,omitempty"`
	VCloudExtension *VCloudExtension `xml:"VCloudExtension,omitempty"`
}

Represents an independent disk Reference: vCloud API 30.0 - DiskType https://code.vmware.com/apis/287/vcloud?h=Director#/doc/doc/types/DiskType.html

type DiskAttachOrDetachParams

type DiskAttachOrDetachParams struct {
	XMLName         xml.Name         `xml:"DiskAttachOrDetachParams"`
	Xmlns           string           `xml:"xmlns,attr,omitempty"`
	Disk            *Reference       `xml:"Disk"`
	BusNumber       *int             `xml:"BusNumber,omitempty"`
	UnitNumber      *int             `xml:"UnitNumber,omitempty"`
	VCloudExtension *VCloudExtension `xml:"VCloudExtension,omitempty"`
}

Parameters for attaching or detaching an independent disk Reference: vCloud API 30.0 - DiskAttachOrDetachParamsType https://code.vmware.com/apis/287/vcloud?h=Director#/doc/doc/types/DiskAttachOrDetachParamsType.html

type DiskCreateParams

type DiskCreateParams struct {
	XMLName         xml.Name         `xml:"DiskCreateParams"`
	Xmlns           string           `xml:"xmlns,attr,omitempty"`
	Disk            *Disk            `xml:"Disk"`
	Locality        *Reference       `xml:"Locality,omitempty"`
	VCloudExtension *VCloudExtension `xml:"VCloudExtension,omitempty"`
}

DiskCreateParams element for create independent disk Reference: vCloud API 30.0 - DiskCreateParamsType https://code.vmware.com/apis/287/vcloud?h=Director#/doc/doc/types/DiskCreateParamsType.html

type DiskRecordType

type DiskRecordType struct {
	Xmlns              string    `xml:"xmlns,attr,omitempty"`
	HREF               string    `xml:"href,attr,omitempty"`
	Id                 string    `xml:"id,attr,omitempty"`
	Type               string    `xml:"type,attr,omitempty"`
	Name               string    `xml:"name,attr,omitempty"`
	Vdc                string    `xml:"vdc,attr,omitempty"`
	SizeMb             int64     `xml:"sizeMb,attr,omitempty"`
	Iops               int64     `xml:"iops,attr,omitempty"`
	Encrypted          bool      `xml:"encrypted,attr,omitempty"`
	UUID               string    `xml:"uuid,attr,omitempty"`
	DataStore          string    `xml:"dataStore,attr,omitempty"`
	DataStoreName      string    `xml:"datastoreName,attr,omitempty"`
	OwnerName          string    `xml:"ownerName,attr,omitempty"`
	VdcName            string    `xml:"vdcName,attr,omitempty"`
	Task               string    `xml:"task,attr,omitempty"`
	StorageProfile     string    `xml:"storageProfile,attr,omitempty"`
	StorageProfileName string    `xml:"storageProfileName,attr,omitempty"`
	Status             string    `xml:"status,attr,omitempty"`
	BusType            string    `xml:"busType,attr,omitempty"`
	BusSubType         string    `xml:"busSubType,attr,omitempty"`
	BusTypeDesc        string    `xml:"busTypeDesc,attr,omitempty"`
	AttachedVmCount    int32     `xml:"attachedVmCount,attr,omitempty"`
	SharingType        string    `xml:"sharingType,attr,omitempty"`
	IsAttached         bool      `xml:"isAttached,attr,omitempty"`
	IsShareable        bool      `xml:"isShareable,attr,omitempty"`
	Description        string    `xml:"description,attr,omitempty"`
	Link               []*Link   `xml:"Link,omitempty"`
	Metadata           *Metadata `xml:"Metadata,omitempty"`
}

Represents an independent disk record Reference: vCloud API 27.0 - DiskType https://code.vmware.com/apis/287/vcloud#/doc/doc/types/QueryResultDiskRecordType.html

type DiskSection added in v2.6.0

type DiskSection struct {
	DiskSettings []*DiskSettings `xml:"DiskSettings"`
}

DiskSection from Vm/VmSpecSection struct

type DiskSettings added in v2.6.0

type DiskSettings struct {
	DiskId              string        `xml:"DiskId,omitempty"`              // Specifies a unique identifier for this disk in the scope of the corresponding VM. This element is optional when creating a VM, but if it is provided it should be unique. This element is mandatory when updating an existing disk.
	SizeMb              int64         `xml:"SizeMb"`                        // The size of the disk in MB.
	UnitNumber          int           `xml:"UnitNumber"`                    // The device number on the SCSI or IDE controller of the disk.
	BusNumber           int           `xml:"BusNumber"`                     //	The number of the SCSI or IDE controller itself.
	AdapterType         string        `xml:"AdapterType"`                   // The type of disk controller, e.g. IDE vs SCSI and if SCSI bus-logic vs LSI logic.
	ThinProvisioned     *bool         `xml:"ThinProvisioned,omitempty"`     // Specifies whether the disk storage is pre-allocated or allocated on demand.
	Disk                *Reference    `xml:"Disk,omitempty"`                // Specifies reference to a named disk.
	StorageProfile      *Reference    `xml:"StorageProfile,omitempty"`      // Specifies reference to a storage profile to be associated with the disk.
	OverrideVmDefault   bool          `xml:"overrideVmDefault"`             // Specifies that the disk storage profile overrides the VM's default storage profile.
	IopsAllocation      *IopsResource `xml:"IopsAllocation"`                // IOPS definition for the disk - added in 10.4 in replacement of 'iops'
	VirtualQuantity     *int64        `xml:"VirtualQuantity,omitempty"`     // The actual size of the disk.
	VirtualQuantityUnit string        `xml:"VirtualQuantityUnit,omitempty"` // The units in which VirtualQuantity is measured.
}

DiskSettings from Vm/VmSpecSection/DiskSection struct

type DistributedFirewallRule added in v2.15.0

type DistributedFirewallRule struct {
	ID   string `json:"id,omitempty"`
	Name string `json:"name"`

	// Action field. Deprecated in favor of ActionValue in VCD 10.2.2+ (API V35.2)
	Action string `json:"action,omitempty"`

	// Description field is not shown in UI. 'Comments' field was introduced in 10.3.2 and is shown
	// in UI.
	Description string `json:"description,omitempty"`

	// ApplicationPortProfiles contains a list of references to Application Port Profiles. Empty
	// list means 'Any'
	ApplicationPortProfiles []OpenApiReference `json:"applicationPortProfiles,omitempty"`

	// SourceFirewallGroups contains a list of references to Firewall Groups. Empty list means 'Any'
	SourceFirewallGroups []OpenApiReference `json:"sourceFirewallGroups,omitempty"`
	// DestinationFirewallGroups contains a list of references to Firewall Groups. Empty list means
	// 'Any'
	DestinationFirewallGroups []OpenApiReference `json:"destinationFirewallGroups,omitempty"`

	// Direction 'IN_OUT', 'OUT', 'IN'
	Direction string `json:"direction"`
	Enabled   bool   `json:"enabled"`

	// IpProtocol 'IPV4', 'IPV6', 'IPV4_IPV6'
	IpProtocol string `json:"ipProtocol"`

	Logging bool `json:"logging"`

	// NetworkContextProfiles sets  list of layer 7 network context profiles where this firewall
	// rule is applicable. Null value or an empty list will be treated as 'ANY' which means rule
	// applies to all applications and domains.
	NetworkContextProfiles []OpenApiReference `json:"networkContextProfiles,omitempty"`

	// Version describes the current version of the entity. To prevent clients from overwriting each
	// other's changes, update operations must include the version which can be obtained by issuing
	// a GET operation. If the version number on an update call is missing, the operation will be
	// rejected. This is only needed on update calls.
	Version *DistributedFirewallRuleVersion `json:"version,omitempty"`

	// ActionValue replaces deprecated field Action and defines action to be applied to all the
	// traffic that meets the firewall rule criteria. It determines if the rule permits or blocks
	// traffic. Property is required if action is not set. Below are valid values:
	// * ALLOW permits traffic to go through the firewall.
	// * DROP blocks the traffic at the firewall. No response is sent back to the source.
	// * REJECT blocks the traffic at the firewall. A response is sent back to the source.
	ActionValue string `json:"actionValue,omitempty"`

	// Comments permits setting text for user entered comments on the firewall rule. Length cannot
	// exceed 2048 characters. Comments are shown in UI for 10.3.2+.
	Comments string `json:"comments,omitempty"`

	// SourceGroupsExcluded reverses the list specified in SourceFirewallGroups and the rule gets
	// applied on all the groups that are NOT part of the SourceFirewallGroups. If false, the rule
	// applies to the all the groups including the source groups.
	SourceGroupsExcluded *bool `json:"sourceGroupsExcluded,omitempty"`

	// DestinationGroupsExcluded reverses the list specified in DestinationFirewallGroups and the
	// rule gets applied on all the groups that are NOT part of the DestinationFirewallGroups. If
	// false, the rule applies to the all the groups in DestinationFirewallGroups.
	DestinationGroupsExcluded *bool `json:"destinationGroupsExcluded,omitempty"`
}

DistributedFirewallRule represents a single Distributed Firewall rule

type DistributedFirewallRuleVersion added in v2.15.0

type DistributedFirewallRuleVersion struct {
	Version int `json:"version"`
}

type DistributedFirewallRules added in v2.15.0

type DistributedFirewallRules struct {
	Values []*DistributedFirewallRule `json:"values"`
}

type EdgeBgpConfig added in v2.16.0

type EdgeBgpConfig struct {
	// A flag indicating whether BGP configuration is enabled or not.
	Enabled bool `json:"enabled"`

	// Ecmp A flag indicating whether ECMP is enabled or not.
	Ecmp bool `json:"ecmp"`

	// BGP AS (Autonomous system) number to advertise to BGP peers. BGP AS number can be specified
	// in either ASPLAIN or ASDOT formats, like ASPLAIN format :- '65546', ASDOT format :- '1.10'.
	//
	// Read only if using a VRF-Lite backed external network.
	LocalASNumber string `json:"localASNumber,omitempty"`

	// BGP Graceful Restart configuration. Not specifying a value results in default bahavior.
	//
	// Read only if using a VRF-Lite backed external network.
	GracefulRestart *EdgeBgpGracefulRestartConfig `json:"gracefulRestart,omitempty"`

	// This property describes the current version of the entity. To prevent clients from
	// overwriting each other's changes, update operations must include the version which can be
	// obtained by issuing a GET operation. If the version number on an update call is missing, the
	// operation will be rejected. This is only needed on update calls.
	Version EdgeBgpConfigVersion `json:"version"`
}

EdgeBgpConfig defines BGP configuration on NSX-T Edge Gateways (Tier1 NSX-T Gateways)

type EdgeBgpConfigPrefixListPrefixes added in v2.16.0

type EdgeBgpConfigPrefixListPrefixes struct {
	// Network is the network address of the prefix
	Network string `json:"network,omitempty"`

	// Action is the action to be taken on the prefix. Can be 'PERMIT' or 'DENY'
	Action string `json:"action,omitempty"`

	// GreateerThan is the the value which the prefix length must be greater than or equal to. Must
	// be less than or equal to 'LessThanEqualTo'
	GreaterThanEqualTo int `json:"greaterThanEqualTo,omitempty"`

	// The value which the prefix length must be less than or equal to. Must be greater than or
	// equal to 'GreaterThanEqualTo'
	LessThanEqualTo int `json:"lessThanEqualTo,omitempty"`
}

EdgeBgpConfigPrefixListPrefixes is a list of prefixes that will be advertised so that the Edge Gateway can route out to the connected external network.

type EdgeBgpConfigVersion added in v2.16.0

type EdgeBgpConfigVersion struct {
	Version int `json:"version"`
}

EdgeBgpConfigVersion is part of EdgeBgpConfig type and describes current version of the entity being modified

type EdgeBgpGracefulRestartConfig added in v2.16.0

type EdgeBgpGracefulRestartConfig struct {
	// Mode describes Graceful Restart configuration Modes for BGP configuration on an edge gateway.
	// HELPER_ONLY mode is the ability for a BGP speaker to indicate its ability to preserve
	// forwarding state during BGP restart. GRACEFUL_RESTART mode is the ability of a BGP speaker to
	// advertise its restart to its peers.
	//
	// DISABLE - Both graceful restart and helper modes are disabled.
	// HELPER_ONLY - Only helper mode is enabled.
	// GRACEFUL_AND_HELPER - Both graceful restart and helper modes are enabled.
	//
	// Possible values are: DISABLE , HELPER_ONLY , GRACEFUL_AND_HELPER
	Mode string `json:"mode"`

	// RestartTimer specifies maximum time taken (in seconds) for a BGP session to be established
	// after a restart. If the session is not re-established within this timer, the receiving
	// speaker will delete all the stale routes from that peer.
	RestartTimer int `json:"restartTimer"`

	// StaleRouteTimer defines maximum time (in seconds) before stale routes are removed when BGP
	// restarts.
	StaleRouteTimer int `json:"staleRouteTimer"`
}

EdgeBgpGracefulRestartConfig describes current graceful restart configuration mode and timer for BGP configuration on an edge gateway.

type EdgeBgpIpPrefixList added in v2.16.0

type EdgeBgpIpPrefixList struct {
	// ID is the unique identifier of the entity in URN format.
	ID string `json:"id,omitempty"`

	// Name of the entity
	Name string `json:"name"`

	// Description of the entity
	Description string `json:"description,omitempty"`

	// Prefixes is the list of prefixes that will be advertised so that the Edge Gateway can route out to the
	// connected external network.
	Prefixes []EdgeBgpConfigPrefixListPrefixes `json:"prefixes,omitempty"`
}

type EdgeBgpNeighbor added in v2.16.0

type EdgeBgpNeighbor struct {
	ID string `json:"id,omitempty"`

	// NeighborAddress holds IP address of the BGP neighbor. Both IPv4 and IPv6 formats are supported.
	//
	// Note. Uniqueness is enforced by NeighborAddress
	NeighborAddress string `json:"neighborAddress"`

	// RemoteASNumber specified Autonomous System (AS) number of a BGP neighbor in ASPLAIN format.
	RemoteASNumber string `json:"remoteASNumber"`

	// KeepAliveTimer specifies the time interval (in seconds) between keep alive messages sent to
	// peer.
	KeepAliveTimer int `json:"keepAliveTimer,omitempty"`

	// HoldDownTimer specifies the time interval (in seconds) before declaring a peer dead.
	HoldDownTimer int `json:"holdDownTimer,omitempty"`

	// NeighborPassword for BGP neighbor authentication. Empty string ("") clears existing password.
	// Not specifying a value will be treated as "no password".
	NeighborPassword string `json:"neighborPassword"`

	// AllowASIn is a flag indicating whether BGP neighbors can receive routes with same AS.
	AllowASIn bool `json:"allowASIn,omitempty"`

	// GracefulRestartMode Describes Graceful Restart configuration Modes for BGP configuration on
	// an Edge Gateway.
	//
	// Possible values are: DISABLE , HELPER_ONLY , GRACEFUL_AND_HELPER
	// * DISABLE - Both graceful restart and helper modes are disabled.
	// * HELPER_ONLY - Only helper mode is enabled. (ability for a BGP speaker to indicate its ability to preserve
	//   forwarding state during BGP restart
	// * GRACEFUL_AND_HELPER - Both graceful restart and helper modes are enabled.  Ability of a BGP
	//	 speaker to advertise its restart to its peers.
	GracefulRestartMode string `json:"gracefulRestartMode,omitempty"`

	// IpAddressTypeFiltering specifies IP address type based filtering in each direction. Setting
	// the value to "DISABLED" will disable address family based filtering.
	//
	// Possible values are: IPV4 , IPV6 , DISABLED
	IpAddressTypeFiltering string `json:"ipAddressTypeFiltering,omitempty"`

	// InRoutesFilterRef specifies route filtering configuration for the BGP neighbor in 'IN'
	// direction. It is the reference to the prefix list, indicating which routes to filter for IN
	// direction. Not specifying a value will be treated as "no IN route filters".
	InRoutesFilterRef *OpenApiReference `json:"inRoutesFilterRef,omitempty"`

	// OutRoutesFilterRef specifies route filtering configuration for the BGP neighbor in 'OUT'
	// direction. It is the reference to the prefix list, indicating which routes to filter for OUT
	// direction. Not specifying a value will be treated as "no OUT route filters".
	OutRoutesFilterRef *OpenApiReference `json:"outRoutesFilterRef,omitempty"`

	// Specifies the BFD (Bidirectional Forwarding Detection) configuration for failure detection. Not specifying a value
	// results in default behavior.
	Bfd *EdgeBgpNeighborBfd `json:"bfd,omitempty"`
}

EdgeBgpNeighbor represents a BGP neighbor on the NSX-T Edge Gateway

type EdgeBgpNeighborBfd added in v2.16.0

type EdgeBgpNeighborBfd struct {
	// A flag indicating whether BFD configuration is enabled or not.
	Enabled bool `json:"enabled"`

	// BfdInterval specifies the time interval (in milliseconds) between heartbeat packets.
	BfdInterval int `json:"bfdInterval,omitempty"`

	// DeclareDeadMultiple specifies number of times heartbeat packet is missed before BFD declares
	// that the neighbor is down.
	DeclareDeadMultiple int `json:"declareDeadMultiple,omitempty"`
}

EdgeBgpNeighborBfd describes BFD (Bidirectional Forwarding Detection) configuration for failure detection.

type EdgeDhcpLease added in v2.6.0

type EdgeDhcpLease struct {
	XMLName        xml.Name             `xml:"dhcpLeaseInfo"`
	DhcpLeaseInfos []*EdgeDhcpLeaseInfo `xml:"leaseInfo"`
}

EdgeDhcpLease holds a list of EdgeDhcpLeaseInfo

type EdgeDhcpLeaseInfo added in v2.6.0

type EdgeDhcpLeaseInfo struct {
	// Uid statement records the client identifier used by the client to acquire the lease. Clients
	// are not required to send client identifiers, and this statement only appears if the client
	// did in fact send one.
	Uid string `xml:"uid"`
	// MacAddress holds hardware (MAC) address of requester (e.g. "00:50:56:01:29:c8")
	MacAddress string `xml:"macAddress"`
	// IpAddress holds the IP address assigned to a particular MAC address (e.g. "10.10.10.100")
	IpAddress string `xml:"ipAddress"`
	// ClientHostname Most DHCP clients will send their hostname in the host-name option. If a
	// client sends its hostname in this way, the hostname is recorded on the lease with a
	// client-hostname statement. This is not required by the protocol, however, so many specialized
	// DHCP clients do not send a host-name option.
	ClientHostname string `xml:"clientHostname"`
	// BindingState declares the lease’s binding state. When the DHCP server is not configured to
	// use the failover protocol, a lease’s binding state may be active, free or abandoned. The
	// failover protocol adds some additional transitional states, as well as the backup state,
	// which indicates that the lease is available for allocation by the failover secondary
	BindingState string `xml:"bindingState"`
	// NextBindingState statement indicates what state the lease will move to when the current state
	// expires. The time when the current state expires is specified in the ends statement.
	NextBindingState string `xml:"nextBindingState"`
	// Cltt holds value of clients last transaction time (format is "weekday year/month/day
	// hour:minute:second", e.g. "2 2019/12/17 06:12:03")
	Cltt string `xml:"cltt"`
	// Starts holds the start time of a lease (format is "weekday year/month/day
	// hour:minute:second", e.g. "2 2019/12/17 06:12:03")
	Starts string `xml:"starts"`
	// Ends holds the end time of a lease (format is "weekday year/month/day hour:minute:second",
	// e.g. "3 2019/12/18 06:12:03")
	Ends string `xml:"ends"`
	// HardwareType holds type of hardware, usually "ethernet"
	HardwareType string `xml:"hardwareType"`
}

EdgeDhcpLeaseInfo contains information about DHCP leases provided by NSX-V edge gateway

type EdgeDhcpRelay added in v2.5.0

type EdgeDhcpRelay struct {
	XMLName xml.Name `xml:"relay"`
	// RelayServer specifies external relay server(s) to which DHCP messages are to be relayed to.
	// The relay server can be an IP set, IP address block, domain, or a combination of all of
	// these. Messages are relayed to each listed DHCP server.
	RelayServer *EdgeDhcpRelayServer `xml:"relayServer"`
	// EdgeDhcRelayAgents  specifies a list of edge gateway interfaces (vNics) from which DHCP
	// messages are to be relayed to the external DHCP relay server(s) with optional gateway
	// interface addresses.
	RelayAgents *EdgeDhcpRelayAgents `xml:"relayAgents"`
}

EdgeDhcpRelay - Dynamic Host Configuration Protocol (DHCP) relay enables you to leverage your existing DHCP infrastructure from within NSX without any interruption to the IP address management in your environment. DHCP messages are relayed from virtual machine(s) to the designated DHCP server(s) in the physical world. This enables IP addresses within NSX to continue to be in sync with IP addresses in other environments.

type EdgeDhcpRelayAgent added in v2.5.0

type EdgeDhcpRelayAgent struct {
	// VnicIndex must specify vNic adapter index on the edge gateway
	VnicIndex *int `xml:"vnicIndex"`
	// GatewayInterfaceAddress holds a gateway interface address. Optional, defaults to the vNic
	// primary address.
	GatewayInterfaceAddress string `xml:"giAddress,omitempty"`
}

EdgeDhcpRelayAgent specifies which edge gateway interface (vNic) from which DHCP messages are to be relayed to the external DHCP relay server(s) with an optional gateway interface address.

type EdgeDhcpRelayAgents added in v2.5.0

type EdgeDhcpRelayAgents struct {
	Agents []EdgeDhcpRelayAgent `xml:"relayAgent"`
}

EdgeDhcpRelayAgents holds a slice of EdgeDhcpRelayAgent

type EdgeDhcpRelayServer added in v2.5.0

type EdgeDhcpRelayServer struct {
	// GroupingObjectIds is a general concept in NSX which allows to pass in many types of objects
	// (like VM IDs, IP set IDs, org networks, security groups) howether in this case it accepts
	// only IP sets which have IDs specified as 'f9daf2da-b4f9-4921-a2f4-d77a943a381c:ipset-2' where
	// first part is vDC ID and the second part is unique IP set ID
	GroupingObjectId []string `xml:"groupingObjectId,omitempty"`
	// IpAddresses holds a list of IP addresses for DHCP servers
	IpAddress []string `xml:"ipAddress,omitempty"`
	// Fqdn holds a list of FQDNs (fully qualified domain names)
	Fqdns []string `xml:"fqdn,omitempty"`
}

type EdgeFirewallApplication added in v2.4.0

type EdgeFirewallApplication struct {
	ID       string                           `xml:"applicationId,omitempty"`
	Services []EdgeFirewallApplicationService `xml:"service,omitempty"`
}

EdgeFirewallApplication Wraps []EdgeFirewallApplicationService for multiple protocol/port specification

type EdgeFirewallApplicationService added in v2.4.0

type EdgeFirewallApplicationService struct {
	Protocol   string `xml:"protocol,omitempty"`
	Port       string `xml:"port,omitempty"`
	SourcePort string `xml:"sourcePort,omitempty"`
}

EdgeFirewallApplicationService defines port/protocol details for one service in EdgeFirewallRule

type EdgeFirewallEndpoint added in v2.4.0

type EdgeFirewallEndpoint struct {
	Exclude           bool     `xml:"exclude"`
	VnicGroupIds      []string `xml:"vnicGroupId,omitempty"`
	GroupingObjectIds []string `xml:"groupingObjectId,omitempty"`
	IpAddresses       []string `xml:"ipAddress,omitempty"`
}

EdgeFirewallEndpoint can contains slices of objects for source or destination in EdgeFirewall

type EdgeFirewallRule added in v2.4.0

type EdgeFirewallRule struct {
	XMLName         xml.Name                `xml:"firewallRule" `
	ID              string                  `xml:"id,omitempty"`
	Name            string                  `xml:"name,omitempty"`
	RuleType        string                  `xml:"ruleType,omitempty"`
	RuleTag         string                  `xml:"ruleTag,omitempty"`
	Source          EdgeFirewallEndpoint    `xml:"source" `
	Destination     EdgeFirewallEndpoint    `xml:"destination"`
	Application     EdgeFirewallApplication `xml:"application"`
	MatchTranslated *bool                   `xml:"matchTranslated,omitempty"`
	Direction       string                  `xml:"direction,omitempty"`
	Action          string                  `xml:"action,omitempty"`
	Enabled         bool                    `xml:"enabled"`
	LoggingEnabled  bool                    `xml:"loggingEnabled"`
}

EdgeFirewall holds data for creating firewall rule using proxied NSX-V API https://code.vmware.com/docs/6900/vcloud-director-api-for-nsx-programming-guide

type EdgeGateway

type EdgeGateway struct {
	// Attributes
	Xmlns        string `xml:"xmlns,attr,omitempty"`
	HREF         string `xml:"href,attr,omitempty"`         // The URI of the entity.
	Type         string `xml:"type,attr,omitempty"`         // The MIME type of the entity.
	ID           string `xml:"id,attr,omitempty"`           // The entity identifier, expressed in URN format. The value of this attribute uniquely identifies the entity, persists for the life of the entity, and is never reused
	OperationKey string `xml:"operationKey,attr,omitempty"` // Optional unique identifier to support idempotent semantics for create and delete operations.
	Name         string `xml:"name,attr"`                   // The name of the entity.
	Status       int    `xml:"status,attr,omitempty"`       // Creation status of the gateway. One of: 0 (The gateway is still being created) 1 (The gateway is ready) -1 (There was an error while creating the gateway).
	// Elements
	Link          LinkList              `xml:"Link,omitempty"`        // A link to an operation on this section.
	Description   string                `xml:"Description,omitempty"` // Optional description.
	Tasks         *TasksInProgress      `xml:"Tasks,omitempty"`       //	A list of queued, running, or recently completed tasks associated with this entity.
	Configuration *GatewayConfiguration `xml:"Configuration"`         // Gateway configuration.
}

EdgeGateway represents a gateway. Element: EdgeGateway Type: GatewayType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a gateway. Since: 5.1

type EdgeGatewayInterfaces added in v2.5.0

type EdgeGatewayInterfaces struct {
	XMLName       xml.Name `xml:"edgeInterfaces"`
	EdgeInterface []struct {
		Name             string `xml:"name"`
		Type             string `xml:"type"`
		Index            *int   `xml:"index"`
		NetworkReference struct {
			ID   string `xml:"id"`
			Name string `xml:"name"`
			Type string `xml:"type"`
		} `xml:"networkReference"`
		AddressGroups struct {
			AddressGroup struct {
				PrimaryAddress     string `xml:"primaryAddress"`
				SubnetMask         string `xml:"subnetMask"`
				SubnetPrefixLength string `xml:"subnetPrefixLength"`
				SecondaryAddresses struct {
					IpAddress []string `xml:"ipAddress"`
				} `xml:"secondaryAddresses"`
			} `xml:"addressGroup"`
		} `xml:"addressGroups"`
		PortgroupId   string `xml:"portgroupId"`
		PortgroupName string `xml:"portgroupName"`
		IsConnected   string `xml:"isConnected"`
		TunnelId      string `xml:"tunnelId"`
	} `xml:"edgeInterface"`
}

EdgeGatewayInterfaces is a data structure holding information of vNic configuration in NSX-V edge gateway using "/network/edges/edge_id/vdcNetworks" endpoint

type EdgeGatewayServiceConfiguration

type EdgeGatewayServiceConfiguration struct {
	XMLName                xml.Name                `xml:"EdgeGatewayServiceConfiguration"`
	Xmlns                  string                  `xml:"xmlns,attr,omitempty"`
	GatewayDhcpService     *GatewayDhcpService     `xml:"GatewayDhcpService,omitempty"`
	FirewallService        *FirewallService        `xml:"FirewallService,omitempty"`
	NatService             *NatService             `xml:"NatService,omitempty"`
	GatewayIpsecVpnService *GatewayIpsecVpnService `xml:"GatewayIpsecVpnService,omitempty"` // Substitute for NetworkService. Gateway Ipsec VPN service settings
}
type EdgeGatewayUplinks struct {
	// UplinkID contains ID of external network
	UplinkID string `json:"uplinkId,omitempty"`
	// UplinkID contains Name of external network
	UplinkName string `json:"uplinkName,omitempty"`
	// Subnets contain subnets to be used on edge gateway
	Subnets   OpenAPIEdgeGatewaySubnets `json:"subnets,omitempty"`
	Connected bool                      `json:"connected,omitempty"`
	// QuickAddAllocatedIPCount allows users to allocate additional IPs during update
	QuickAddAllocatedIPCount int `json:"quickAddAllocatedIpCount,omitempty"`
	// Dedicated defines if the external network is dedicated. Dedicating the External Network will enable Route
	// Advertisement for this Edge Gateway
	Dedicated bool `json:"dedicated,omitempty"`

	// BackingType of uplink. Exactly one of these will be present:
	// * types.ExternalNetworkBackingTypeNsxtTier0Router (NSXT_TIER0)
	// * types.ExternalNetworkBackingTypeNsxtVrfTier0Router (NSXT_VRF_TIER0)
	// Additional External network uplinks
	// * types.ExternalNetworkBackingTypeNsxtSegment (IMPORTED_T_LOGICAL_SWITCH) - External Network uplinks (External Networks backed by NSX-T Segment)
	//
	// Note. VCD 10.4.1+. Not mandatory to set it - can be used as a read only value
	BackingType *string `json:"backingType,omitempty"`

	// UsingIpSpace is a boolean flag showing if the uplink uses IP Space
	UsingIpSpace *bool `json:"usingIpSpace,omitempty"`
}

EdgeGatewayUplink defines uplink connections for the edge gateway.

type EdgeGatewayVnics added in v2.4.0

type EdgeGatewayVnics struct {
	XMLName xml.Name `xml:"vnics"`
	Vnic    []struct {
		Label         string `xml:"label"`
		Name          string `xml:"name"`
		AddressGroups struct {
			AddressGroup struct {
				PrimaryAddress     string `xml:"primaryAddress,omitempty"`
				SecondaryAddresses struct {
					IpAddress []string `xml:"ipAddress,omitempty"`
				} `xml:"secondaryAddresses,omitempty"`
				SubnetMask         string `xml:"subnetMask,omitempty"`
				SubnetPrefixLength string `xml:"subnetPrefixLength,omitempty"`
			} `xml:"addressGroup,omitempty"`
		} `xml:"addressGroups,omitempty"`
		Mtu                 string `xml:"mtu,omitempty"`
		Type                string `xml:"type,omitempty"`
		IsConnected         string `xml:"isConnected,omitempty"`
		Index               *int   `xml:"index"`
		PortgroupId         string `xml:"portgroupId,omitempty"`
		PortgroupName       string `xml:"portgroupName,omitempty"`
		EnableProxyArp      string `xml:"enableProxyArp,omitempty"`
		EnableSendRedirects string `xml:"enableSendRedirects,omitempty"`
		SubInterfaces       struct {
			SubInterface []struct {
				IsConnected         string `xml:"isConnected,omitempty"`
				Label               string `xml:"label,omitempty"`
				Name                string `xml:"name,omitempty"`
				Index               *int   `xml:"index,omitempty"`
				TunnelId            string `xml:"tunnelId,omitempty"`
				LogicalSwitchId     string `xml:"logicalSwitchId,omitempty"`
				LogicalSwitchName   string `xml:"logicalSwitchName,omitempty"`
				EnableSendRedirects string `xml:"enableSendRedirects,omitempty"`
				Mtu                 string `xml:"mtu,omitempty"`
				AddressGroups       struct {
					AddressGroup struct {
						PrimaryAddress     string `xml:"primaryAddress,omitempty"`
						SubnetMask         string `xml:"subnetMask,omitempty"`
						SubnetPrefixLength string `xml:"subnetPrefixLength,omitempty"`
					} `xml:"addressGroup,omitempty"`
				} `xml:"addressGroups,omitempty"`
			} `xml:"subInterface,omitempty"`
		} `xml:"subInterfaces,omitempty"`
	} `xml:"vnic,omitempty"`
}

EdgeGatewayVnics is a data structure holding information of vNic configuration in NSX-V edge gateway using "/network/edges/edge_id/vnics" endpoint

type EdgeIpSet added in v2.5.0

type EdgeIpSet struct {
	XMLName xml.Name `xml:"ipset"`
	// ID holds composite ID of IP set which is formatted as
	// 'f9daf2da-b4f9-4921-a2f4-d77a943a381c:ipset-4' where the first segment before colon is vDC id
	// and the second one is IP set ID
	ID string `xml:"objectId,omitempty"`
	// Name is mandatory and must be unique
	Name string `xml:"name"`
	// Description - optional
	Description string `xml:"description,omitempty"`
	// IPAddresses is a mandatory field with comma separated values. The API is known to re-order
	// data after submiting and may shuffle components even if re-submitted as it was return from
	// API itself
	// (eg: "192.168.200.1,192.168.200.1/24,192.168.200.1-192.168.200.24")
	IPAddresses string `xml:"value"`
	// InheritanceAllowed defines visibility at underlying scopes
	InheritanceAllowed *bool `xml:"inheritanceAllowed"`
	// Revision is a "version" of IP set configuration. During read current revision is being
	// returned and when update is performed this latest version must be sent as it validates if no
	// updates ocurred in between. When not the latest version is being sent during update one can
	// expect similar error response from API: "The object ipset-27 used in this operation has an
	// older version 0 than the current system version 1. Refresh UI or fetch the latest copy of the
	// object and retry operation."
	Revision *int `xml:"revision,omitempty"`
}

EdgeIpSet defines a group of IP addresses that you can add as the source or destination in a firewall rule or in DHCP relay configuration. The object itself has more fields in API response, however vCD UI only uses the below mentioned. It looks as if the other fields are used in NSX internally and are simply proxied back.

Note. Only advanced edge gateways support IP sets

type EdgeIpSets added in v2.5.0

type EdgeIpSets []*EdgeIpSet

EdgeIpSets is a slice of pointers to EdgeIpSet

type EdgeL2VpnStretchedNetwork added in v2.22.0

type EdgeL2VpnStretchedNetwork struct {
	NetworkRef OpenApiReference `json:"networkRef"`
	TunnelID   int              `json:"tunnelId"`
}

EdgeL2VpnStretchedNetwork specifies the Org vDC network that is stretched through the given L2 VPN Tunnel.

type EdgeL2VpnTunnelStatistics added in v2.22.0

type EdgeL2VpnTunnelStatistics struct {
	BumBytesIn          int    `json:"bumBytesIn"`
	BumBytesOut         int    `json:"bumBytesOut"`
	BumPacketsIn        int    `json:"bumPacketsIn"`
	BumPacketsOut       int    `json:"bumPacketsOut"`
	BytesIn             int    `json:"bytesIn"`
	BytesOut            int    `json:"bytesOut"`
	PacketsIn           int    `json:"packetsIn"`
	PacketsOut          int    `json:"packetsOut"`
	PacketsReceiveError int    `json:"packetsReceiveError"`
	PacketsSentError    int    `json:"packetsSentError"`
	SegmentPath         string `json:"segmentPath"`
}

EdgeL2VpnTunnelStatistics specifies the statistics for the given L2 VPN Tunnel.

type EdgeL2VpnTunnelStatus added in v2.22.0

type EdgeL2VpnTunnelStatus struct {
	FailureReason string `json:"failureReason"`
	RuntimeStatus string `json:"runtimeStatus"`
}

EdgeL2VpnTunnelStatus includes the L2 VPN tunnel status such as whether the tunnel is up or down and the IKE Session status

type EdgeNatRule added in v2.4.0

type EdgeNatRule struct {
	XMLName           xml.Name `xml:"natRule"`
	ID                string   `xml:"ruleId,omitempty"`
	RuleType          string   `xml:"ruleType,omitempty"`
	RuleTag           string   `xml:"ruleTag,omitempty"`
	Action            string   `xml:"action"`
	Vnic              *int     `xml:"vnic,omitempty"`
	OriginalAddress   string   `xml:"originalAddress"`
	TranslatedAddress string   `xml:"translatedAddress"`
	LoggingEnabled    bool     `xml:"loggingEnabled"`
	Enabled           bool     `xml:"enabled"`
	Description       string   `xml:"description,omitempty"`
	Protocol          string   `xml:"protocol,omitempty"`
	OriginalPort      string   `xml:"originalPort,omitempty"`
	TranslatedPort    string   `xml:"translatedPort,omitempty"`
	IcmpType          string   `xml:"icmpType,omitempty"`
}

EdgeNatRule contains shared structure for SNAT and DNAT rule configuration using NSX-V proxied edge gateway endpoint https://code.vmware.com/docs/6900/vcloud-director-api-for-nsx-programming-guide

type Element added in v2.20.0

type Element struct {
	ApplicationProtocol *string `xml:"applicationProtocol"`
	Value               *string `xml:"value"`
	SourcePort          *string `xml:"sourcePort"`
	AppGuidName         *string `xml:"appGuidName"`
}

type EnableStorageProfile added in v2.21.0

type EnableStorageProfile struct {
	Enabled bool `json:"enabled"`
}

type Entity

type Entity struct {
	HREF         string           `xml:"href,attr,omitempty"`
	Type         string           `xml:"type,attr,omitempty"`
	ID           string           `xml:"id,attr,omitempty"`
	OperationKey string           `xml:"operationKey,attr,omitempty"`
	Name         string           `xml:"name,attr"`
	Description  string           `xml:"Description,omitempty"`
	Link         LinkList         `xml:"Link,omitempty"`
	Tasks        *TasksInProgress `xml:"Tasks,omitempty"`
}

Entity is a basic entity type in the vCloud object model. Includes a name, an optional description, and an optional list of links. Type: EntityType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Basic entity type in the vCloud object model. Includes a name, an optional description, and an optional list of links. Since: 0.9

type EntitySecurityTags added in v2.16.0

type EntitySecurityTags struct {
	// Tags is the list of tags. The value is case-agnostic and will be converted to lower-case.
	Tags []string `json:"tags"`
}

EntitySecurityTags is a list of a tags assigned to a specific entity

type Error

type Error struct {
	Message                 string `xml:"message,attr" json:"message,omitempty"`
	MajorErrorCode          int    `xml:"majorErrorCode,attr" json:"majorErrorCode,omitempty"`
	MinorErrorCode          string `xml:"minorErrorCode,attr" json:"minorErrorCode,omitempty"`
	VendorSpecificErrorCode string `xml:"vendorSpecificErrorCode,attr,omitempty" json:"vendorSpecificErrorCode,omitempty"`
	StackTrace              string `xml:"stackTrace,attr,omitempty" json:"stackTrace,omitempty"`
}

Error is the standard error message type used in the vCloud REST API. Type: ErrorType Namespace: http://www.vmware.com/vcloud/v1.5 Description: The standard error message type used in the vCloud REST API. Since: 0.9

func (Error) Error added in v2.3.0

func (err Error) Error() string

type EthernetAdapterSection added in v2.20.0

type EthernetAdapterSection struct {
	XMLName  xml.Name   `xml:"EthernetAdapterSection"`
	Adapters []*Adapter `xml:"Adapter,omitempty"`
}

Contains adapters info and virtual networks attached

type Extension

type Extension struct {
	Link LinkList `xml:"Link,omitempty"` // A reference to an entity or operation associated with this object.
}

Namespace: http://www.vmware.com/vcloud/v1.5 Retrieve a list of extension objects and operations. Since: 1.0

type ExternalCatalogSubscription

type ExternalCatalogSubscription struct {
	XMLName                  xml.Name `xml:"ExternalCatalogSubscriptionParams"`
	Xmlns                    string   `xml:"xmlns,attr,omitempty"`
	ExpectedSslThumbprint    string   `xml:"ExpectedSslThumbprint,omitempty"`
	SubscribeToExternalFeeds bool     `xml:"SubscribeToExternalFeeds,omitempty"`
	Location                 string   `xml:"Location,omitempty"`
	Password                 string   `xml:"Password,omitempty"`
	LocalCopy                bool     `xml:"LocalCopy,omitempty"`
}

ExternalCatalogSubscription represents the configuration parameters for a catalog that has an external subscription Type: ExternalCatalogSubscriptionParamsType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents the configuration parameters for a catalog that has an external subscription. Since: 5.5

type ExternalNetwork added in v2.2.0

type ExternalNetwork struct {
	XMLName          xml.Name              `xml:"VMWExternalNetwork"`
	HREF             string                `xml:"href,attr,omitempty"`
	Type             string                `xml:"type,attr,omitempty"`
	ID               string                `xml:"id,attr,omitempty"`
	OperationKey     string                `xml:"operationKey,attr,omitempty"`
	Name             string                `xml:"name,attr"`
	Link             []*Link               `xml:"Link,omitempty"`
	Description      string                `xml:"Description,omitempty"`
	Tasks            *TasksInProgress      `xml:"Tasks,omitempty"`
	Configuration    *NetworkConfiguration `xml:"Configuration,omitempty"`
	VimPortGroupRef  *VimObjectRef         `xml:"VimPortGroupRef,omitempty"`
	VimPortGroupRefs *VimObjectRefs        `xml:"VimPortGroupRefs,omitempty"`
	VCloudExtension  *VCloudExtension      `xml:"VCloudExtension,omitempty"`
}

Type: VMWExternalNetworkType Namespace: http://www.vmware.com/vcloud/extension/v1.5 https://vdc-repo.vmware.com/vmwb-repository/dcr-public/7a028e78-bd37-4a6a-8298-9c26c7eeb9aa/09142237-dd46-4dee-8326-e07212fb63a8/doc/doc/types/VMWExternalNetworkType.html Description: External network type. Since: 1.0

type ExternalNetworkReference

type ExternalNetworkReference struct {
	HREF string `xml:"href,attr"`
	Type string `xml:"type,attr,omitempty"`
	Name string `xml:"name,attr,omitempty"`
}

type ExternalNetworkReferences

type ExternalNetworkReferences struct {
	ExternalNetworkReference []*ExternalNetworkReference `xml:"ExternalNetworkReference,omitempty"` // A reference to an entity or operation associated with this object.
}

type ExternalNetworkV2 added in v2.9.0

type ExternalNetworkV2 struct {
	// ID is unique for the network. This field is read-only.
	ID string `json:"id,omitempty"`
	// Name of the network.
	Name string `json:"name"`
	// Description of the network
	Description string `json:"description"`
	// Subnets define one or more subnets and IP allocation pools in edge gateway
	Subnets ExternalNetworkV2Subnets `json:"subnets,omitempty"`
	// NetworkBackings for this external network. Describes if this external network is backed by
	// port groups, vCenter standard switch or an NSX-T Tier-0 router.
	NetworkBackings ExternalNetworkV2Backings `json:"networkBackings"`

	// UsingIpSpace indicates whether the external network is using IP Spaces or not. This field is
	// applicable only to the external networks backed by NSX-T Tier-0 router.
	// This field is only available in VCD 10.4.1+
	UsingIpSpace *bool `json:"usingIpSpace,omitempty"`

	// DedicatedEdgeGateway contains reference to the Edge Gateway that this external network is
	// dedicated to. This is null if this is not a dedicated external network. This field is unset
	// if external network is using IP Spaces.
	DedicatedEdgeGateway *OpenApiReference `json:"dedicatedEdgeGateway,omitempty"`

	// DedicatedOrg specifies the Organization that this external network belongs to. This is unset
	// for the external networks which are available to more than one organization.
	//
	// If this external network is dedicated to an Edge Gateway, this field is read-only and will be
	// set to the Organization of the Edge Gateway.
	//
	// If this external network is using IP Spaces, this field can
	// be used to dedicate this external network to the specified Organization.
	DedicatedOrg *OpenApiReference `json:"dedicatedOrg,omitempty"`

	// TotalIpCount contains the number of IP addresses defined by the static ip pools. If the
	// network contains any IPv6 subnets, the total ip count will be null.
	TotalIpCount *int `json:"totalIpCount,omitempty"`

	// UsedIpCount holds the number of IP address used from the static ip pools.
	UsedIpCount *int `json:"usedIpCount,omitempty"`
}

ExternalNetworkV2 defines a struct for OpenAPI endpoint which is capable of creating NSX-V or NSX-T external network based on provided NetworkBackings.

type ExternalNetworkV2Backing added in v2.9.0

type ExternalNetworkV2Backing struct {
	// BackingID must contain either Tier-0 router ID for NSX-T or PortGroup ID for NSX-V
	BackingID string `json:"backingId"`
	Name      string `json:"name,omitempty"`
	// BackingType can be either ExternalNetworkBackingTypeNsxtTier0Router in case of NSX-T or one
	// of ExternalNetworkBackingTypeNetwork or ExternalNetworkBackingDvPortgroup in case of NSX-V
	// Deprecated in favor of BackingTypeValue in API V35.0
	BackingType string `json:"backingType,omitempty"`

	// BackingTypeValue replaces BackingType in API V35.0 and adds support for additional network backing type
	// ExternalNetworkBackingTypeNsxtSegment
	BackingTypeValue string `json:"backingTypeValue,omitempty"`
	// NetworkProvider defines backing network manager
	NetworkProvider NetworkProvider `json:"networkProvider"`
}

ExternalNetworkV2Backing defines which networking subsystem is used for external network (NSX-T or NSX-V)

type ExternalNetworkV2Backings added in v2.9.0

type ExternalNetworkV2Backings struct {
	Values []ExternalNetworkV2Backing `json:"values"`
}

type ExternalNetworkV2IPRange added in v2.9.0

type ExternalNetworkV2IPRange = OpenApiIPRangeValues

ExternalNetworkV2IPRange is a type alias to reuse the same definitions with appropriate names

type ExternalNetworkV2IPRanges added in v2.9.0

type ExternalNetworkV2IPRanges = OpenApiIPRanges

ExternalNetworkV2IPRanges is a type alias to reuse the same definitions with appropriate names

type ExternalNetworkV2Subnet added in v2.9.0

type ExternalNetworkV2Subnet struct {
	// Gateway for the subnet
	Gateway string `json:"gateway"`
	// PrefixLength holds prefix length of the subnet
	PrefixLength int `json:"prefixLength"`
	// DNSSuffix is the DNS suffix that VMs attached to this network will use (NSX-V only)
	DNSSuffix string `json:"dnsSuffix"`
	// DNSServer1 - first DNS server that VMs attached to this network will use (NSX-V only)
	DNSServer1 string `json:"dnsServer1"`
	// DNSServer2 - second DNS server that VMs attached to this network will use (NSX-V only)
	DNSServer2 string `json:"dnsServer2"`
	// Enabled indicates whether the external network subnet is currently enabled
	Enabled bool `json:"enabled"`
	// UsedIPCount shows number of IP addresses defined by the static IP ranges
	UsedIPCount int `json:"usedIpCount,omitempty"`
	// TotalIPCount shows number of IP address used from the static IP ranges
	TotalIPCount int `json:"totalIpCount,omitempty"`
	// IPRanges define allocated static IP pools allocated from a defined subnet
	IPRanges ExternalNetworkV2IPRanges `json:"ipRanges"`
}

ExternalNetworkV2Subnet defines one subnet for external network with assigned static IP ranges

type ExternalNetworkV2Subnets added in v2.9.0

type ExternalNetworkV2Subnets struct {
	Values []ExternalNetworkV2Subnet `json:"values"`
}

ExternalNetworkV2Subnets contains slice of ExternalNetworkV2Subnet

type ExternalSubject added in v2.9.0

type ExternalSubject struct {
	IdpType   string `xml:"IdpType"`   // The type of identity provider for example: OAUTH, SAML, LDAP etc for this SubjectID.
	IsUser    bool   `xml:"IsUser"`    // If true, SubjectID is a reference to a user defined by this organization's identity provider. If false or empty, SubjectID is a reference to a group defined by this organization's identity provider.
	SubjectId string `xml:"SubjectId"` // The primary key that your identity provider uses to uniquely identify the user or group referenced in SubjectId.
}

ExternalSubjectType is a reference to a user or group managed by an identity provider configured for use in this organization.

type File

type File struct {
	HREF             string           `xml:"href,attr,omitempty"`
	Type             string           `xml:"type,attr,omitempty"`
	ID               string           `xml:"id,attr,omitempty"`
	OperationKey     string           `xml:"operationKey,attr,omitempty"`
	Name             string           `xml:"name,attr"`
	Size             int64            `xml:"size,attr,omitempty"`
	BytesTransferred int64            `xml:"bytesTransferred,attr,omitempty"`
	Checksum         string           `xml:"checksum,attr,omitempty"`
	Description      string           `xml:"Description,omitempty"`
	Link             LinkList         `xml:"Link,omitempty"`
	Tasks            *TasksInProgress `xml:"Tasks,omitempty"`
}

File represents a file to be transferred (uploaded or downloaded). Type: FileType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a file to be transferred (uploaded or downloaded). Since: 0.9

type FilesList

type FilesList struct {
	File []*File `xml:"File"`
}

FilesList represents a list of files to be transferred (uploaded or downloaded). Type: FilesListType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a list of files to be transferred (uploaded or downloaded). Since: 0.9

type FirewallConfigWithXml added in v2.4.0

type FirewallConfigWithXml struct {
	XMLName       xml.Name              `xml:"firewall"`
	Enabled       bool                  `xml:"enabled"`
	DefaultPolicy FirewallDefaultPolicy `xml:"defaultPolicy"`

	// Each configuration change has a version number
	Version string `xml:"version,omitempty"`

	// The below field has `innerxml` tag so that it is not processed but instead
	// sent verbatim
	FirewallRules InnerXML `xml:"firewallRules,omitempty"`
	GlobalConfig  InnerXML `xml:"globalConfig,omitempty"`
}

FirewallConfigWithXml allows to enable/disable firewall on a specific edge gateway Reference: VMware Cloud Director API for NSX Programming Guide https://code.vmware.com/docs/6900/vcloud-director-api-for-nsx-programming-guide

Warning. It nests all firewall rules because Edge Gateway API is done so that if this data is not sent while enabling it would wipe all firewall rules. InnerXML type field is used with struct tag `innerxml` to prevent any manipulation of configuration and sending it verbatim

type FirewallConfiguration added in v2.20.0

type FirewallConfiguration struct {
	ContextID      string          `xml:"contextId"`
	Layer3Sections *Layer3Sections `xml:"layer3Sections"`
	Layer2Sections *Layer2Sections `xml:"layer2Sections"`
}

type FirewallDefaultPolicy added in v2.4.0

type FirewallDefaultPolicy struct {
	LoggingEnabled bool   `xml:"loggingEnabled"`
	Action         string `xml:"action"`
}

FirewallDefaultPolicy represent default rule

type FirewallRule

type FirewallRule struct {
	ID                   string                 `xml:"Id,omitempty"`                   // Firewall rule identifier.
	IsEnabled            bool                   `xml:"IsEnabled"`                      // Used to enable or disable the firewall rule. Default value is true.
	MatchOnTranslate     bool                   `xml:"MatchOnTranslate"`               // For DNATed traffic, match the firewall rules only after the destination IP is translated.
	Description          string                 `xml:"Description,omitempty"`          // A description of the rule.
	Policy               string                 `xml:"Policy,omitempty"`               // One of: drop (drop packets that match the rule), allow (allow packets that match the rule to pass through the firewall)
	Protocols            *FirewallRuleProtocols `xml:"Protocols,omitempty"`            // Specify the protocols to which the rule should be applied.
	IcmpSubType          string                 `xml:"IcmpSubType,omitempty"`          // ICMP subtype. One of: address-mask-request, address-mask-reply, destination-unreachable, echo-request, echo-reply, parameter-problem, redirect, router-advertisement, router-solicitation, source-quench, time-exceeded, timestamp-request, timestamp-reply, any.
	Port                 int                    `xml:"Port,omitempty"`                 // The port to which this rule applies. A value of -1 matches any port.
	DestinationPortRange string                 `xml:"DestinationPortRange,omitempty"` // Destination port range to which this rule applies.
	DestinationIP        string                 `xml:"DestinationIp,omitempty"`        // Destination IP address to which the rule applies. A value of Any matches any IP address.
	DestinationVM        *VMSelection           `xml:"DestinationVm,omitempty"`        // Details of the destination VM
	SourcePort           int                    `xml:"SourcePort,omitempty"`           // Destination port to which this rule applies. A value of -1 matches any port.
	SourcePortRange      string                 `xml:"SourcePortRange,omitempty"`      // Source port range to which this rule applies.
	SourceIP             string                 `xml:"SourceIp,omitempty"`             // Source IP address to which the rule applies. A value of Any matches any IP address.
	SourceVM             *VMSelection           `xml:"SourceVm,omitempty"`             // Details of the source VM
	Direction            string                 `xml:"Direction,omitempty"`            // Direction of traffic to which rule applies. One of: in (rule applies to incoming traffic. This is the default value), out (rule applies to outgoing traffic).
	EnableLogging        bool                   `xml:"EnableLogging"`                  // Used to enable or disable firewall rule logging. Default value is false.
}

FirewallRule represents a firewall rule Type: FirewallRuleType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a firewall rule. Since: 0.9

type FirewallRuleProtocols

type FirewallRuleProtocols struct {
	ICMP bool `xml:"Icmp,omitempty"` // True if the rule applies to the ICMP protocol.
	Any  bool `xml:"Any,omitempty"`  // True if the rule applies to any protocol.
	TCP  bool `xml:"Tcp,omitempty"`  // True if the rule applies to the TCP protocol.
	UDP  bool `xml:"Udp,omitempty"`  // True if the rule applies to the UDP protocol.

}

FirewallRuleProtocols flags for a network protocol in a firewall rule Type: FirewallRuleType/Protocols Namespace: http://www.vmware.com/vcloud/v1.5 Description: Since:

type FirewallSection added in v2.20.0

type FirewallSection struct {
	XMLName          xml.Name                      `xml:"section"`
	GenerationNumber string                        `xml:"generationNumber,attr"`
	ID               *int                          `xml:"id,attr"`
	Name             string                        `xml:"name,attr"`
	Stateless        bool                          `xml:"stateless,attr"`
	TcpStrict        bool                          `xml:"tcpStrict,attr"`
	Timestamp        int                           `xml:"timestamp,attr"`
	Type             string                        `xml:"type,attr"`
	UseSid           bool                          `xml:"useSid,attr"`
	Rule             []NsxvDistributedFirewallRule `xml:"rule"`
}

type FirewallService

type FirewallService struct {
	IsEnabled        bool            `xml:"IsEnabled"`               // Enable or disable the service using this flag
	DefaultAction    string          `xml:"DefaultAction,omitempty"` // Default action of the firewall. One of: drop (Default. Drop packets that match the rule.), allow (Allow packets that match the rule to pass through the firewall)
	LogDefaultAction bool            `xml:"LogDefaultAction"`        // Flag to enable logging for default action. Default value is false.
	FirewallRule     []*FirewallRule `xml:"FirewallRule,omitempty"`  //	A firewall rule.
}

FirewallService represent a network firewall service. Type: FirewallServiceType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a network firewall service. Since:

type FloatingIPs added in v2.21.0

type FloatingIPs struct {
	// TotalCount holds the number of IP addresses or IP Prefixes defined by the IP Space. If user
	// does not own this IP Space, this is the quota that the user's organization is granted. A '-1'
	// value means that the user's organization has no cap on the quota (for this case,
	// allocatedPercentage is unset)
	TotalCount string `json:"totalCount,omitempty"`
	// AllocatedCount holds the number of allocated IP addresses or IP Prefixes.
	AllocatedCount string `json:"allocatedCount,omitempty"`
	// UsedCount holds the number of used IP addresses or IP Prefixes. An allocated IP address or IP
	// Prefix is considered used if it is being used in network services such as NAT rule or in Org
	// VDC network definition.
	UsedCount string `json:"usedCount,omitempty"`
	// UnusedCount holds the number of unused IP addresses or IP Prefixes. An IP address or an IP
	// Prefix is considered unused if it is allocated but not being used by any network service or
	// any Org vDC network definition.
	UnusedCount string `json:"unusedCount,omitempty"`
	// AllocatedPercentage specifies the percentage of allocated IP addresses or IP Prefixes out of
	// all defined IP addresses or IP Prefixes.
	AllocatedPercentage float32 `json:"allocatedPercentage,omitempty"`
	// UsedPercentage specifies the percentage of used IP addresses or IP Prefixes out of total
	// allocated IP addresses or IP Prefixes.
	UsedPercentage float32 `json:"usedPercentage,omitempty"`
}

type GatewayConfiguration

type GatewayConfiguration struct {
	Xmlns string `xml:"xmlns,attr,omitempty"`
	// BackwardCompatibilityMode. Default is false. If set to true, will allow users to write firewall
	// rules in the old 1.5 format. The new format does not require to use direction in firewall
	// rules. Also, for firewall rules to allow NAT traffic the filter is applied on the original IP
	// addresses. Once set to true cannot be reverted back to false.
	BackwardCompatibilityMode bool `xml:"BackwardCompatibilityMode,omitempty"`
	// GatewayBackingConfig defines configuration of the vShield edge VM for this gateway. One of:
	// compact, full.
	GatewayBackingConfig string `xml:"GatewayBackingConfig"`
	// GatewayInterfaces holds configuration for edge gateway interfaces, ip allocations, traffic
	// rate limits and ip sub-allocations
	GatewayInterfaces *GatewayInterfaces `xml:"GatewayInterfaces"`
	// EdgeGatewayServiceConfiguration represents Gateway Features.
	EdgeGatewayServiceConfiguration *GatewayFeatures `xml:"EdgeGatewayServiceConfiguration,omitempty"`
	// True if this gateway is highly available. (Requires two vShield edge VMs.)
	HaEnabled *bool `xml:"HaEnabled,omitempty"`
	// UseDefaultRouteForDNSRelay defines if the default gateway on the external network selected
	// for default route should be used as the DNS relay.
	UseDefaultRouteForDNSRelay *bool `xml:"UseDefaultRouteForDnsRelay,omitempty"`
	// AdvancedNetworkingEnabled allows to use NSX capabilities such dynamic routing (BGP, OSPF),
	// zero trust networking (DLR), enchanced VPN support (IPsec VPN, SSL VPN-Plus).
	AdvancedNetworkingEnabled *bool `xml:"AdvancedNetworkingEnabled,omitempty"`
	// DistributedRoutingEnabled enables distributed routing on the gateway to allow creation of
	// many more organization VDC networks. Traffic in those networks is optimized for VM-to-VM
	// communication.
	DistributedRoutingEnabled *bool `xml:"DistributedRoutingEnabled,omitempty"`
	// FipsModeEnabled allows any secure communication to or from the NSX Edge uses cryptographic
	// algorithms or protocols that are allowed by United States Federal Information Processing
	// Standards (FIPS). FIPS mode turns on the cipher suites that comply with FIPS.
	FipsModeEnabled *bool `xml:"FipsModeEnabled,omitempty"`
}

GatewayConfiguration is the gateway configuration Type: GatewayConfigurationType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Gateway Configuration. Since: 5.1

type GatewayDhcpService

type GatewayDhcpService struct {
	IsEnabled bool               `xml:"IsEnabled,omitempty"` // Enable or disable the service using this flag
	Pool      []*DhcpPoolService `xml:"Pool,omitempty"`      // A DHCP pool.
}

GatewayDhcpService represents Gateway DHCP service. Type: GatewayDhcpServiceType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents Gateway DHCP service. Since: 5.1

type GatewayFeatures

type GatewayFeatures struct {
	XMLName                xml.Name
	Xmlns                  string                  `xml:"xmlns,attr,omitempty"`
	FirewallService        *FirewallService        `xml:"FirewallService,omitempty"`        // Substitute for NetworkService. Firewall service settings
	NatService             *NatService             `xml:"NatService,omitempty"`             // Substitute for NetworkService. NAT service settings
	GatewayDhcpService     *GatewayDhcpService     `xml:"GatewayDhcpService,omitempty"`     // Substitute for NetworkService. Gateway DHCP service settings
	GatewayIpsecVpnService *GatewayIpsecVpnService `xml:"GatewayIpsecVpnService,omitempty"` // Substitute for NetworkService. Gateway Ipsec VPN service settings
	StaticRoutingService   *StaticRoutingService   `xml:"StaticRoutingService,omitempty"`   // Substitute for NetworkService. Static Routing service settings
}

GatewayFeatures represents edge gateway services. Element: EdgeGatewayServiceConfiguration Type: GatewayFeaturesType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents edge gateway services. Since: 5.1

type GatewayInterface

type GatewayInterface struct {
	Name                string                 `xml:"Name,omitempty"`                // Internally generated name for the Gateway Interface.
	DisplayName         string                 `xml:"DisplayName,omitempty"`         // Gateway Interface display name.
	Network             *Reference             `xml:"Network"`                       // A reference to the network connected to the gateway interface.
	InterfaceType       string                 `xml:"InterfaceType"`                 // The type of interface: One of: Uplink, Internal
	SubnetParticipation []*SubnetParticipation `xml:"SubnetParticipation,omitempty"` // Slice of subnets for IP allocations.
	ApplyRateLimit      bool                   `xml:"ApplyRateLimit,omitempty"`      // True if rate limiting is applied on this interface.
	InRateLimit         float64                `xml:"InRateLimit,omitempty"`         // Incoming rate limit expressed as Gbps.
	OutRateLimit        float64                `xml:"OutRateLimit,omitempty"`        // Outgoing rate limit expressed as Gbps.
	UseForDefaultRoute  bool                   `xml:"UseForDefaultRoute,omitempty"`  // True if this network is default route for the gateway.
}

GatewayInterface is a gateway interface configuration. Type: GatewayInterfaceType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Gateway Interface configuration. Since: 5.1

func (*GatewayInterface) SortBySubnetParticipationGateway added in v2.5.0

func (g *GatewayInterface) SortBySubnetParticipationGateway()

SortBySubnetParticipationGateway allows to sort SubnetParticipation property slice by gateway address

type GatewayInterfaces

type GatewayInterfaces struct {
	GatewayInterface []*GatewayInterface `xml:"GatewayInterface"` // Gateway Interface.
}

GatewayInterfaces is a list of Gateway Interfaces. Type: GatewayInterfacesType Namespace: http://www.vmware.com/vcloud/v1.5 Description: A list of Gateway Interfaces. Since: 5.1

type GatewayIpsecVpnEndpoint

type GatewayIpsecVpnEndpoint struct {
	Network  *Reference `xml:"Network"`            // External network reference.
	PublicIP string     `xml:"PublicIp,omitempty"` // Public IP for IPsec endpoint.
}

GatewayIpsecVpnEndpoint represents an IPsec VPN endpoint. Type: GatewayIpsecVpnEndpointType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents an IPsec VPN endpoint. Since: 5.1

type GatewayIpsecVpnService

type GatewayIpsecVpnService struct {
	IsEnabled bool                     `xml:"IsEnabled"`          // Enable or disable the service using this flag
	Endpoint  *GatewayIpsecVpnEndpoint `xml:"Endpoint,omitempty"` // List of IPsec VPN Service Endpoints.
	Tunnel    []*GatewayIpsecVpnTunnel `xml:"Tunnel"`             // List of IPsec VPN tunnels.
}

GatewayIpsecVpnService represents gateway IPsec VPN service. Type: GatewayIpsecVpnServiceType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents gateway IPsec VPN service. Since: 5.1

type GatewayIpsecVpnTunnel

type GatewayIpsecVpnTunnel struct {
	Name        string `xml:"Name"`                  // The name of the tunnel.
	Description string `xml:"Description,omitempty"` // A description of the tunnel.
	// TODO: Fix this in a better way
	IpsecVpnThirdPartyPeer *IpsecVpnThirdPartyPeer `xml:"IpsecVpnThirdPartyPeer,omitempty"` // Details about the peer network.
	IpsecVpnLocalPeer      *IpsecVpnLocalPeer      `xml:"IpsecVpnLocalPeer"`                // Details about the local peer network.
	PeerIPAddress          string                  `xml:"PeerIpAddress"`                    // IP address of the peer endpoint.
	PeerID                 string                  `xml:"PeerId"`                           // Id for the peer end point
	LocalIPAddress         string                  `xml:"LocalIpAddress"`                   // Address of the local network.
	LocalID                string                  `xml:"LocalId"`                          // Id for local end point
	LocalSubnet            []*IpsecVpnSubnet       `xml:"LocalSubnet"`                      // List of local subnets in the tunnel.
	PeerSubnet             []*IpsecVpnSubnet       `xml:"PeerSubnet"`                       // List of peer subnets in the tunnel.
	SharedSecret           string                  `xml:"SharedSecret"`                     // Shared secret used for authentication.
	SharedSecretEncrypted  bool                    `xml:"SharedSecretEncrypted,omitempty"`  // True if shared secret is encrypted.
	EncryptionProtocol     string                  `xml:"EncryptionProtocol"`               // Encryption protocol to be used. One of: AES, AES256, TRIPLEDES
	Mtu                    int                     `xml:"Mtu"`                              // MTU for the tunnel.
	IsEnabled              bool                    `xml:"IsEnabled,omitempty"`              // True if the tunnel is enabled.
	IsOperational          bool                    `xml:"IsOperational,omitempty"`          // True if the tunnel is operational.
	ErrorDetails           string                  `xml:"ErrorDetails,omitempty"`           // Error details of the tunnel.
}

GatewayIpsecVpnTunnel represents an IPsec VPN tunnel. Type: GatewayIpsecVpnTunnelType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents an IPsec VPN tunnel. Since: 5.1

type GatewayNatRule

type GatewayNatRule struct {
	Xmlns string `xml:"xmlns,attr,omitempty"`
	// Elements
	Interface      *Reference `xml:"Interface,omitempty"`      // Interface to which rule is applied.
	OriginalIP     string     `xml:"OriginalIp"`               // Original IP for rule.
	OriginalPort   string     `xml:"OriginalPort,omitempty"`   // Original port for rule.
	TranslatedIP   string     `xml:"TranslatedIp"`             // Translated IP for rule.
	TranslatedPort string     `xml:"TranslatedPort,omitempty"` // Translated port for rule.
	Protocol       string     `xml:"Protocol,omitempty"`       // Protocol for rule.
	IcmpSubType    string     `xml:"IcmpSubType,omitempty"`    // ICMP subtype. One of: address-mask-request, address-mask-reply, destination-unreachable, echo-request, echo-reply, parameter-problem, redirect, router-advertisement, router-solicitation, source-quench, time-exceeded, timestamp-request, timestamp-reply, any.
}

GatewayNatRule represents the SNAT and DNAT rules. Type: GatewayNatRuleType represents the SNAT and DNAT rules. Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents the SNAT and DNAT rules. Since: 5.1

type GatewayUsedIpAddress added in v2.20.0

type GatewayUsedIpAddress struct {
	Category   string           `json:"category"`
	IPAddress  string           `json:"ipAddress"`
	NetworkRef OpenApiReference `json:"networkRef"`
}

GatewayUsedIpAddress defines used IP address on edge gateway

type GlobalRole added in v2.12.0

type GlobalRole struct {
	Name        string `json:"name"`
	Id          string `json:"id"`
	Description string `json:"description,omitempty"`
	BundleKey   string `json:"bundleKey,omitempty"` // key used for internationalization
	ReadOnly    bool   `json:"readOnly"`
	PublishAll  *bool  `json:"publishAll"`
}

GlobalRole is a Role definition implemented in the provider that is passed on to tenants (=organizations) Modifying an existing global role has immediate effect on the corresponding roles in the tenants (no need to re-publish) while creating a new GlobalRole is only passed to the tenants if it is published.

type Group added in v2.8.0

type Group struct {
	XMLName xml.Name `xml:"Group"`
	Xmlns   string   `xml:"xmlns,attr"`
	// Id holds ID in format urn:vcloud:group:252fe08e-ae1b-409c-9dda-a531bb1ed69a
	ID string `xml:"id,attr,omitempty"`
	// Href holds reference to group object
	Href string `xml:"href,attr,omitempty"`
	// Type holds mime type for group
	Type string `xml:"type,attr"`
	// Description sets description for group
	Description string `xml:"Description"`
	// Name of the group. Cannot be updated.
	Name string `xml:"name,attr"`
	// ProviderType - 'SAML', 'INTEGRATED'
	ProviderType string `xml:"ProviderType"`
	// Role - reference to existing role
	Role *Reference `xml:"Role,omitempty"`
	// UsersList - references to existing users of type User
	UsersList *UsersList `xml:"UsersList,omitempty"`
}

Group represents Org group definition

type GroupReference added in v2.3.0

type GroupReference struct {
	GroupReference []*Reference `xml:"GroupReference,omitempty"`
}

type GuestCustomizationSection

type GuestCustomizationSection struct {
	// Extends OVF Section_Type
	// Attributes
	Ovf   string `xml:"xmlns:ovf,attr,omitempty"`
	Xsi   string `xml:"xmlns:xsi,attr,omitempty"`
	Xmlns string `xml:"xmlns,attr,omitempty"`

	HREF string `xml:"href,attr,omitempty"` // A reference to the section in URL format.
	Type string `xml:"type,attr,omitempty"` // The MIME type of the section.
	// FIXME: Fix the OVF section
	Info string `xml:"ovf:Info"`
	// Elements
	Enabled               *bool    `xml:"Enabled,omitempty"`               // True if guest customization is enabled.
	ChangeSid             *bool    `xml:"ChangeSid,omitempty"`             // True if customization can change the Windows SID of this virtual machine.
	VirtualMachineID      string   `xml:"VirtualMachineId,omitempty"`      // Virtual machine ID to apply.
	JoinDomainEnabled     *bool    `xml:"JoinDomainEnabled,omitempty"`     // True if this virtual machine can join a Windows Domain.
	UseOrgSettings        *bool    `xml:"UseOrgSettings,omitempty"`        // True if customization should use organization settings (OrgGuestPersonalizationSettings) when joining a Windows Domain.
	DomainName            string   `xml:"DomainName,omitempty"`            // The name of the Windows Domain to join.
	DomainUserName        string   `xml:"DomainUserName,omitempty"`        // User name to specify when joining a Windows Domain.
	DomainUserPassword    string   `xml:"DomainUserPassword,omitempty"`    // Password to use with DomainUserName.
	MachineObjectOU       string   `xml:"MachineObjectOU,omitempty"`       // The name of the Windows Domain Organizational Unit (OU) in which the computer account for this virtual machine will be created.
	AdminPasswordEnabled  *bool    `xml:"AdminPasswordEnabled,omitempty"`  // True if guest customization can modify administrator password settings for this virtual machine.
	AdminPasswordAuto     *bool    `xml:"AdminPasswordAuto,omitempty"`     // True if the administrator password for this virtual machine should be automatically generated.
	AdminPassword         string   `xml:"AdminPassword,omitempty"`         // True if the administrator password for this virtual machine should be set to this string. (AdminPasswordAuto must be false.)
	AdminAutoLogonEnabled *bool    `xml:"AdminAutoLogonEnabled,omitempty"` // True if guest administrator should automatically log into this virtual machine.
	AdminAutoLogonCount   int      `xml:"AdminAutoLogonCount,omitempty"`   // Number of times administrator can automatically log into this virtual machine. In case AdminAutoLogon is set to True, this value should be between 1 and 100. Otherwise, it should be 0.
	ResetPasswordRequired *bool    `xml:"ResetPasswordRequired,omitempty"` // True if the administrator password for this virtual machine must be reset after first use.
	CustomizationScript   string   `xml:"CustomizationScript,omitempty"`   // Script to run on guest customization. The entire script must appear in this element. Use the XML entity &#13; to represent a newline. Unicode characters can be represented in the form &#xxxx; where xxxx is the character number.
	ComputerName          string   `xml:"ComputerName,omitempty"`          // Computer name to assign to this virtual machine.
	Link                  LinkList `xml:"Link,omitempty"`                  // A link to an operation on this section.
}

GuestCustomizationSection represents guest customization settings Type: GuestCustomizationSectionType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a guest customization settings. Since: 1.0

type GuestCustomizationStatusSection added in v2.4.0

type GuestCustomizationStatusSection struct {
	XMLName xml.Name `xml:"GuestCustomizationStatusSection"`
	Xmlns   string   `xml:"xmlns,attr"`

	GuestCustStatus string `xml:"GuestCustStatus"`
}

GuestCustomizationStatusSection holds information about guest customization status https://vdc-repo.vmware.com/vmwb-repository/dcr-public/76f491b4-679c-4e1e-8428-f813d668297a/a2555a1b-22f1-4cca-b481-2a98ab874022/doc/doc/operations/GET-GuestCustStatus.html

type HardDiskAdapter added in v2.22.0

type HardDiskAdapter struct {
	Id                string `xml:"id,attr"`
	LegacyId          int    `xml:"legacyId,attr"`
	Name              string `xml:"name,attr"`
	MaximumDiskSizeGb int    `xml:"maximumDiskSizeGb,attr"`

	BusNumberRanges struct {
		Begin int `xml:"begin,attr"`
		End   int `xml:"end,attr"`
	} `xml:"BusNumberRanges>Range"`
	UnitNumberRanges struct {
		Begin int `xml:"begin,attr"`
		End   int `xml:"end,attr"`
	} `xml:"UnitNumberRanges>Range"`

	ReservedBusUnitNumber struct {
		BusNumber  int `xml:"busNumber,attr"`
		UnitNumber int `xml:"unitNumber,attr"`
	} `xml:"ReservedBusUnitNumber"`
}

HardDiskAdapter describes a hard disk controller type

type HardwareVersion added in v2.6.0

type HardwareVersion struct {
	HREF  string `xml:"href,attr"`
	Type  string `xml:"type,attr,omitempty"`
	Value string `xml:",chardata"`
}

HardwareVersion from Vm/VmSpecSection struct

type IPAddresses

type IPAddresses struct {
	IPAddress []string `xml:"IpAddress,omitempty"` // A list of IP addresses.
}

IPAddresses a list of IP addresses Type: IpAddressesType Namespace: http://www.vmware.com/vcloud/v1.5 Description: A list of IP addresses. Since: 0.9

type IPPrefixSequence added in v2.21.0

type IPPrefixSequence struct {
	ID string `json:"id,omitempty"`
	// Starting IP address for the IP prefix. Note that if the IP is a host IP and not the network
	// definition IP for the specific prefix length, VCD will automatically modify starting IP to
	// the network definition's IP for the specified host IP. An example is that for prefix length
	// 30, the starting IP of 192.169.0.2 will be automatically modified to 192.169.0.0. 192.169.0.6
	// will be modified to 192.169.0.4. 192.169.0.0/30 and 192.169.0.4/30 are network definition
	// CIDRs for host IPs 192.169.0.2 and 192.169.0.6, respectively.
	StartingPrefixIPAddress string `json:"startingPrefixIpAddress"`
	// The prefix length.
	PrefixLength int `json:"prefixLength"`
	// The number of prefix blocks defined by this IP prefix.
	TotalPrefixCount int `json:"totalPrefixCount"`
	// The number of allocated IP prefix blocks.
	AllocatedPrefixCount int `json:"allocatedPrefixCount,omitempty"`
	// Specifies the percentage of allocated IP prefix blocks out of total specified IP prefix blocks.
	AllocatedPrefixPercentage float32 `json:"allocatedPrefixPercentage,omitempty"`
}

type IPPrefixes added in v2.21.0

type IPPrefixes struct {
	// TotalCount holds the number of IP addresses or IP Prefixes defined by the IP Space. If user
	// does not own this IP Space, this is the quota that the user's organization is granted. A '-1'
	// value means that the user's organization has no cap on the quota; for this case,
	// allocatedPercentage is unset.
	TotalCount string `json:"totalCount,omitempty"`
	// TAllocatedCount holds the number of allocated IP addresses or IP Prefixes.
	AllocatedCount string `json:"allocatedCount,omitempty"`
	// UsedCount holds the number of used IP addresses or IP Prefixes. An allocated IP address or IP
	// Prefix is considered used if it is being used in network services such as NAT rule or in Org
	// VDC network definition.
	UsedCount string `json:"usedCount,omitempty"`
	// UnusedCount holds the number of unused IP addresses or IP Prefixes. An IP address or an IP
	// Prefix is considered unused if it is allocated but not being used by any network service or
	// any Org vDC network definition.
	UnusedCount string `json:"unusedCount,omitempty"`
	// AllocatedPercentage specifies the percentage of allocated IP addresses or IP Prefixes out of
	// all defined IP addresses or IP Prefixes.
	AllocatedPercentage float32 `json:"allocatedPercentage,omitempty"`
	// UsedPercentage specifies the percentage of used IP addresses or IP Prefixes out of total
	// allocated IP addresses or IP Prefixes.
	UsedPercentage float32 `json:"usedPercentage,omitempty"`
	// PrefixLengthUtilizations contains utilization summary grouped by IP Prefix's prefix length.
	// This information will only be returned for an individual IP Prefix.
	PrefixLengthUtilizations []PrefixLengthUtilizations `json:"prefixLengthUtilizations,omitempty"`
}

type IPRange

type IPRange struct {
	StartAddress string `xml:"StartAddress"` // Start address of the IP range.
	EndAddress   string `xml:"EndAddress"`   // End address of the IP range.
}

IPRange represents a range of IP addresses, start and end inclusive. Type: IpRangeType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a range of IP addresses, start and end inclusive. Since: 0.9

type IPRanges

type IPRanges struct {
	IPRange []*IPRange `xml:"IpRange,omitempty"` // IP range.
}

IPRanges represents a list of IP ranges. Type: IpRangesType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a list of IP ranges. Since: 0.9

type IPScope

type IPScope struct {
	IsInherited          bool            `xml:"IsInherited"`                    // True if the IP scope is inherit from parent network.
	Gateway              string          `xml:"Gateway,omitempty"`              // Gateway of the network.
	Netmask              string          `xml:"Netmask,omitempty"`              // Network mask.
	SubnetPrefixLength   string          `xml:"SubnetPrefixLength,omitempty"`   // Prefix length.
	DNS1                 string          `xml:"Dns1,omitempty"`                 // Primary DNS server.
	DNS2                 string          `xml:"Dns2,omitempty"`                 // Secondary DNS server.
	DNSSuffix            string          `xml:"DnsSuffix,omitempty"`            // DNS suffix.
	IsEnabled            bool            `xml:"IsEnabled,omitempty"`            // Indicates if subnet is enabled or not. Default value is True.
	IPRanges             *IPRanges       `xml:"IpRanges,omitempty"`             // IP ranges used for static pool allocation in the network.
	AllocatedIPAddresses *IPAddresses    `xml:"AllocatedIpAddresses,omitempty"` // Read-only list of allocated IP addresses in the network.
	SubAllocations       *SubAllocations `xml:"SubAllocations,omitempty"`       // Read-only list of IP addresses that are sub allocated to edge gateways.
}

IPScope specifies network settings like gateway, network mask, DNS servers IP ranges etc Type: IpScopeType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Specify network settings like gateway, network mask, DNS servers, IP ranges, etc. Since: 0.9

type IPScopes

type IPScopes struct {
	IPScope []*IPScope `xml:"IpScope"` // IP scope.
}

IPScopes represents a list of IP scopes. Type: IpScopesType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a list of IP scopes. Since: 5.1

type IPSpacePrefixes added in v2.21.0

type IPSpacePrefixes struct {
	// IPPrefixSequence A sequence of IP prefixes with same prefix length. All the IP Prefix
	// sequences with the same prefix length are treated as one logical unit for allocation purpose.
	IPPrefixSequence []IPPrefixSequence `json:"ipPrefixSequence"`

	// This specifies the number of prefixes from the specified sequence which can be consumed by
	// each organization using this IP Space. All the IP Prefix sequences with the same prefix
	// length are treated as one logical unit for allocation purpose. This is typically set for IP
	// Spaces with type PUBLIC or SHARED_SERVICES. A Quota of -1 means there is no cap to the number
	// of IP Prefixes that can be allocated. A Quota of 0 means that the IP Prefixes cannot be
	// allocated. If not specified, all PUBLIC or SHARED_SERVICES IP Spaces have a default quota of
	// 0 for IP Prefixes and all PRIVATE IP Spaces have a default quota of -1 for IP Prefixes.
	DefaultQuotaForPrefixLength int `json:"defaultQuotaForPrefixLength"`
}

type IPSpaceRanges added in v2.21.0

type IPSpaceRanges struct {
	IPRanges []IpSpaceRangeValues `json:"ipRanges"`
	// This specifies the default number of IPs from the specified ranges which can be consumed by
	// each organization using this IP Space. This is typically set for IP Spaces with type PUBLIC
	// or SHARED_SERVICES. A Quota of -1 means there is no cap to the number of IP addresses that
	// can be allocated. A Quota of 0 means that the IP addresses cannot be allocated. If not
	// specified, all PUBLIC or SHARED_SERVICES IP Spaces have a default quota of 1 for Floating IP
	// addresses and all PRIVATE IP Spaces have a default quota of -1 for Floating IP addresses.
	DefaultFloatingIPQuota int `json:"defaultFloatingIpQuota"`
}

type InnerXML added in v2.3.0

type InnerXML struct {
	Text string `xml:",innerxml"`
}

InnerXML is meant to be used when unmarshaling a field into text rather than struct It helps to avoid missing out any fields which may not have been specified in the struct.

type InstantiateVAppTemplateParams

type InstantiateVAppTemplateParams struct {
	XMLName xml.Name `xml:"InstantiateVAppTemplateParams"`
	Ovf     string   `xml:"xmlns:ovf,attr"`
	Xsi     string   `xml:"xmlns:xsi,attr,omitempty"`
	Xmlns   string   `xml:"xmlns,attr"`
	// Attributes
	Name        string `xml:"name,attr,omitempty"`        // Typically used to name or identify the subject of the request. For example, the name of the object being created or modified.
	Deploy      bool   `xml:"deploy,attr"`                // True if the vApp should be deployed at instantiation. Defaults to true.
	PowerOn     bool   `xml:"powerOn,attr"`               // True if the vApp should be powered-on at instantiation. Defaults to true.
	LinkedClone bool   `xml:"linkedClone,attr,omitempty"` // Reserved. Unimplemented.
	// Elements
	Description         string                       `xml:"Description,omitempty"`         // Optional description.
	VAppParent          *Reference                   `xml:"VAppParent,omitempty"`          // Reserved. Unimplemented.
	InstantiationParams *InstantiationParams         `xml:"InstantiationParams,omitempty"` // Instantiation parameters for the composed vApp.
	Source              *Reference                   `xml:"Source"`                        // A reference to a source object such as a vApp or vApp template.
	IsSourceDelete      bool                         `xml:"IsSourceDelete,omitempty"`      // Set to true to delete the source object after the operation completes.
	SourcedItem         *SourcedCompositionItemParam `xml:"SourcedItem,omitempty"`         // Composition item. One of: vApp vAppTemplate VM.
	AllEULAsAccepted    bool                         `xml:"AllEULAsAccepted,omitempty"`    // True confirms acceptance of all EULAs in a vApp template. Instantiation fails if this element is missing, empty, or set to false and one or more EulaSection elements are present.
}

InstantiateVAppTemplateParams represents vApp template instantiation parameters. Type: InstantiateVAppTemplateParamsType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents vApp template instantiation parameters. Since: 0.9

type InstantiateVmTemplateParams added in v2.11.0

type InstantiateVmTemplateParams struct {
	XMLName               xml.Name                 `xml:"InstantiateVmTemplateParams"`
	XmlnsOvf              string                   `xml:"xmlns:ovf,attr"`
	Xmlns                 string                   `xml:"xmlns,attr,omitempty"`
	Name                  string                   `xml:"name,attr,omitempty"`             // Typically used to name or identify the subject of the request. For example, the name of the object being created or modified.
	PowerOn               bool                     `xml:"powerOn,attr,omitempty"`          // True if the VM should be powered-on after creation. Defaults to false.
	Description           string                   `xml:"Description,omitempty"`           // Optional description
	SourcedVmTemplateItem *SourcedVmTemplateParams `xml:"SourcedVmTemplateItem,omitempty"` // Represents virtual machine instantiation parameters.
	AllEULAsAccepted      bool                     `xml:"AllEULAsAccepted,omitempty"`      // True confirms acceptance of all EULAs in a vApp template. Instantiation fails if this element is missing, empty, or set to false and one or more EulaSection elements are present.
	ComputePolicy         *ComputePolicy           `xml:"ComputePolicy,omitempty"`         // A reference to a vdc compute policy. This contains VM's actual vdc compute policy reference and also optionally an add-on policy which always defines VM's sizing.
}

InstantiateVmTemplateParams is used to create a standalone VM with a template

type InstantiationParams

type InstantiationParams struct {
	CustomizationSection         *CustomizationSection         `xml:"CustomizationSection,omitempty"`
	DefaultStorageProfileSection *DefaultStorageProfileSection `xml:"DefaultStorageProfileSection,omitempty"`
	GuestCustomizationSection    *GuestCustomizationSection    `xml:"GuestCustomizationSection,omitempty"`
	LeaseSettingsSection         *LeaseSettingsSection         `xml:"LeaseSettingsSection,omitempty"`
	NetworkConfigSection         *NetworkConfigSection         `xml:"NetworkConfigSection,omitempty"`
	NetworkConnectionSection     *NetworkConnectionSection     `xml:"NetworkConnectionSection,omitempty"`
	ProductSection               *ProductSection               `xml:"ProductSection,omitempty"`
}

InstantiationParams is a container for ovf:Section_Type elements that specify vApp configuration on instantiate, compose, or recompose. Type: InstantiationParamsType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Container for ovf:Section_Type elements that specify vApp configuration on instantiate, compose, or recompose. Since: 0.9

type IopsResource added in v2.22.0

type IopsResource struct {
	Reservation int64  `xml:"Reservation"` // The amount of reservation of IOPS on the underlying virtualization infrastructure. This is a read-only.
	Limit       int64  `xml:"Limit"`       // The limit for how much of IOPS can be consumed on the underlying virtualization infrastructure. This is only valid when the resource allocation is not unlimited.
	SharesLevel string `xml:"SharesLevel"` // LOW - NORMAL - HIGH - CUSTOM
	Shares      int64  `xml:"Shares"`      // Custom priority for IOPS. This is a read-only.
}

type IpSpace added in v2.21.0

type IpSpace struct {
	ID          string `json:"id,omitempty"`
	Name        string `json:"name"`
	Description string `json:"description,omitempty"`

	// Type is The type of the IP Space. Possible values are:
	// * PUBLIC - These can be consumed by multiple organizations. These are created by System
	// Administrators only, for managing public IPs. The IP addresses and IP Prefixes from this IP
	// space are allocated to specific organizations for consumption.
	// * PRIVATE - These can be consumed by only a single organization. All the IPs within this IP
	// Space are allocated to the particular organization.
	// * SHARED_SERVICES - These are for internal use only. The IP addresses and IP Prefixes from
	// this IP space can be consumed by multiple organizations but those IP addresses and IP
	// Prefixes will not be not visible to the individual users within the organization. These are
	// created by System Administrators only, typically for a service or for management networks.
	//
	// Note. This project contains convenience constants for defining IP Space
	// types`types.IpSpaceShared`, `types.IpSpacePublic`, `types.IpSpacePrivate`
	//
	// Only SHARED_SERVICES type can be changed to PUBLIC type. No other type changes are allowed.
	Type string `json:"type"`

	// The organization this IP Space belongs to. This property is only applicable and is required
	// for IP Spaces with type PRIVATE.
	OrgRef *OpenApiReference `json:"orgRef,omitempty"`

	// Utilization summary for this IP space.
	Utilization IpSpaceUtilization `json:"utilization,omitempty"`

	// List of IP Prefixes.
	IPSpacePrefixes []IPSpacePrefixes `json:"ipSpacePrefixes"`

	// List of IP Ranges. These are logically treated as a single block of IPs for allocation purpose.
	IPSpaceRanges IPSpaceRanges `json:"ipSpaceRanges"`

	// This defines the exact span of IP addresses in a CIDR format within which all IP Ranges and
	// IP Prefixes of this IP Space must be contained. This typically defines the span of IP
	// addresses used within this Data Center.
	IPSpaceInternalScope []string `json:"ipSpaceInternalScope"`

	// This defines the total span of IP addresses in a CIDR format within which all IP Ranges and
	// IP Prefixes of this IP Space must be contained. This is used by the system for creation of
	// NAT rules and BGP prefixes. This typically defines the span of IP addresses outside the
	// bounds of this Data Center. For the internet this may be 0.0.0.0/0. For a WAN, this could be
	// 10.0.0.0/8.
	IPSpaceExternalScope string `json:"ipSpaceExternalScope,omitempty"`

	// Whether the route advertisement is enabled for this IP Space or not. If true, the routed Org
	// VDC networks which are configured from this IP Space will be advertised from the connected
	// Edge Gateway to the Provider Gateway. Route advertisement must be enabled on a particular
	// network for it to be advertised. Networks from the PRIVATE IP Spaces will only be advertised
	// if the associated Provider Gateway is owned by the Organization.
	RouteAdvertisementEnabled bool `json:"routeAdvertisementEnabled"`

	// DefaultGatewayServiceConfig specifies default gateway services configurations such as NAT and
	// Firewall rules that a user can apply on either the Provider Gateway or Edge Gateway depending
	// on the network topology. Note that re-applying the default services on the Provider Gateway
	// or Edge Gateway may delete/update/create services that are managed/created by VCD.
	//
	// Requires VCD 10.5.0+ (API v38.0+)
	DefaultGatewayServiceConfig *IpSpaceDefaultGatewayServiceConfig `json:"defaultGatewayServiceConfig,omitempty"`

	// Status is one of `PENDING`,   `CONFIGURING`,   `REALIZED`,   `REALIZATION_FAILED`,   `UNKNOWN`
	Status string `json:"status,omitempty"`
}

IpSpace provides structured approach to allocating public and private IP addresses by preventing the use of overlapping IP addresses across organizations and organization VDCs.

An IP space consists of a set of defined non-overlapping IP ranges and small CIDR blocks that are reserved and used during the consumption aspect of the IP space life cycle. An IP space can be either IPv4 or IPv6, but not both.

Every IP space has an internal scope and an external scope. The internal scope of an IP space is a list of CIDR notations that defines the exact span of IP addresses in which all ranges and blocks must be contained in. The external scope defines the total span of IP addresses to which the IP space has access, for example the internet or a WAN.

type IpSpaceDefaultGatewayServiceConfig added in v2.22.0

type IpSpaceDefaultGatewayServiceConfig struct {
	// If true, the user can choose to later apply the default firewall rules on either the Provider
	// Gateway or Edge Gateway. These firewall rules are created only if the corresponding
	// associated default No SNAT and NAT rules are configured. False means that the default
	// firewall rules will not be created.
	// For the associated default SNAT rule, the source is ANY and the destination is the IP Space's
	// external scope.
	// For the associated default No SNAT rule, the source is the IP Space's internal scopes and the
	// destination is the IP Space's external scope.
	EnableDefaultFirewallRuleCreation bool `json:"enableDefaultFirewallRuleCreation,omitempty"`
	// If true, the user can choose to later apply the default No SNAT rules on either the Provider
	// Gateway or Edge Gateway.
	// False means that the default No SNAT rule will not be created.
	// An example of a default No NAT rule is that the source CIDR is the IP Space's internal scope
	// and the destination CIDR is the IP Space's external scope. This allows traffic to and from
	// the IP Space's internal and external scope to not be affected by any NAT rule. An example of
	// such traffic is that an Organization VDC Network within IP Space's internal scope will be
	// able to route out to the internet. This means that this configuration can allow both
	// fully-routed topology and also NAT-routed topology.
	EnableDefaultNoSnatRuleCreation bool `json:"enableDefaultNoSnatRuleCreation,omitempty"`
	// If true, the user can choose to later apply the default SNAT rules on either the Provider
	// Gateway or Edge Gateway.
	// False means that the default SNAT rule will not be created.
	// An example of a default NAT rule is that the source CIDR is ANY, the destination CIDR is the
	// IP Space's external scope. This allows all traffic such as from a private network to be able
	// to access the external destination IPs specified by the IP Space's external scope such as the
	// internet. Note that the translated external IP will be allocated from this IP Space if there
	// are no free ones to be used for the SNAT rules.
	EnableDefaultSnatRuleCreation bool `json:"enableDefaultSnatRuleCreation,omitempty"`
}

IpSpaceDefaultGatewayServiceConfig specified the default gateway services configurations such as NAT and Firewall rules that a user can apply on either the Provider Gateway or Edge Gateway depending on the network topology. Below is an example of the ordering of NAT rule: * If IP Space's external scope maps to any network such as "0.0.0.0/0", the NO SNAT rules priority is 1001 and the default SNAT rules will have priority 1000 * All other default SNAT rules has priority 100 * All other default NO SNAT rules has priority 0 * User-created NAT rules has default priority 50

Requires VCD 10.5.0+ (API v38.0+)

type IpSpaceFloatingIpSuggestion added in v2.23.0

type IpSpaceFloatingIpSuggestion struct {
	IPSpaceRef OpenApiReference `json:"ipSpaceRef"`
	// UnusedValues lists unused IP Addresses or IP Prefixes from the referenced IP Space
	UnusedValues []string `json:"unusedValues"`
}

IpSpaceFloatingIpSuggestion provides a list of unused IP Addresses in an IP Space

type IpSpaceIpAllocation added in v2.21.0

type IpSpaceIpAllocation struct {
	ID string `json:"id,omitempty"`

	// Description about usage of an IP if the usageState is USED_MANUAL.
	Description string `json:"description"`
	// Reference to the organization where the IP is allocated.
	OrgRef *OpenApiReference `json:"orgRef,omitempty"`
	// Type contains type of the IP allocation. Possible values are:
	// * FLOATING_IP - For allocation of floating IP addresses from defined IP Space ranges.
	// * IP_PREFIX - For allocation of IP prefix sequences from defined IP Space prefixes.
	Type string `json:"type"`
	// UsageCategories
	// The list of service categories where the IP address is being used. Typically this can be one
	// of: SNAT, DNAT, LOAD_BALANCER, IPSEC_VPN, SSL_VPN or L2_VPN. This property is read-only.
	UsageCategories []string `json:"usageCategories,omitempty"`

	// Specifies current usage state of an allocated IP. Possible values are:
	// * UNUSED - the allocated IP is current not being used in the system.
	// * USED - the allocated IP is currently in use in the system. An allocated IP address or IP Prefix is considered used if it is being used in network services such as NAT rule or in Org VDC network definition.
	// * USED_MANUAL - the allocated IP is marked for manual usage. Allocation description can be referenced to get information about the manual usage.
	UsageState string `json:"usageState"`

	// An individual IP Address or an IP Prefix which is allocated.
	Value string `json:"value"`

	// Reference to the entity using the IP, such as an Edge Gateway Reference if the Floating IP is used for NAT or Org VDC network reference if IP Prefix is used for network definition. This property is read-only.
	UsedByRef *OpenApiReference `json:"usedByRef"`

	// Date when the IP address or IP prefix is allocated. This property is read-only.
	AllocationDate string `json:"allocationDate"`
}

IpSpaceIpAllocation is a structure that is used for managing IP Space IP Allocation after submitting a request using `IpSpaceIpAllocationRequest` and processing the response in IpSpaceIpAllocationRequestResult

type IpSpaceIpAllocationRequest added in v2.21.0

type IpSpaceIpAllocationRequest struct {
	// The prefix length of an IP Prefix to allocate. This is required if type is IP_PREFIX. This
	// field is only required if the request is for a specific quantity of IP Prefixes and not
	// needed if request value is specified.
	PrefixLength *int `json:"prefixLength,omitempty"`
	// The number of IP addresses or IP Prefix blocks to allocate. Specifying quantity will allocate
	// the given number of any free IP addresses or IP Prefixes within the IP Space. To use a
	// specific IP address or IP Prefix, please use the value field to request a specific value.
	Quantity *int `json:"quantity,omitempty"`
	// Type The type of the IP allocation requested. Possible values are:
	// * FLOATING_IP - For allocation of floating IP addresses from defined IP Space ranges.
	// * IP_PREFIX - For allocation of IP prefix sequences from defined IP Space prefixes.
	Type string `json:"type"`
	// The specific IP address or IP Prefix to allocate. If an IP address or IP Prefix is specified,
	// the quantity value should not be set.
	// Note - only available in VCD 10.4.2+
	Value string `json:"value,omitempty"`
}

IpSpaceIpAllocationRequest is an IP Space IP Allocation request object. An IP Space IP allocation request can either request a specific IP address/IP prefix or request a specific number of any free IP Addresses/IP Prefixes within an IP Space. To allocate a specific IP Address or IP Prefix, the value field should be used and the IP Address or Prefix should be specified. Use the quantity field to specify the amount. The value and quantity fields should not be set simultaneously.

type IpSpaceIpAllocationRequestResult added in v2.21.0

type IpSpaceIpAllocationRequestResult struct {
	ID             string `json:"id"`
	Value          string `json:"value"`
	SuggestedValue string `json:"suggestedValue"`
}

IpSpaceIpAllocationRequestResult is the result that gets returned in a task.Task.Result.ResultContent.Text field after submitting an IpSpaceIpAllocationRequest

type IpSpaceOrgAssignment added in v2.21.0

type IpSpaceOrgAssignment struct {
	ID string `json:"id,omitempty"`
	// IPSpaceRef is mandatory
	IPSpaceRef *OpenApiReference `json:"ipSpaceRef"`
	// OrgRef is mandatory
	OrgRef      *OpenApiReference `json:"orgRef"`
	IPSpaceType string            `json:"ipSpaceType,omitempty"`
	// DefaultQuotas contains read-only default quotas which are controlled in IP Space itself
	DefaultQuotas *IpSpaceOrgAssignmentQuotas `json:"defaultQuotas,omitempty"`
	// CustomQuotas are the quotas that can be overriden for that particular Organization
	CustomQuotas *IpSpaceOrgAssignmentQuotas `json:"customQuotas"`
}

IpSpaceOrgAssignment is used to override default quotas for specific Orgs

type IpSpaceOrgAssignmentIPPrefixQuotas added in v2.21.0

type IpSpaceOrgAssignmentIPPrefixQuotas struct {
	PrefixLength *int `json:"prefixLength"`
	Quota        *int `json:"quota"`
}

IpSpaceOrgAssignmentIPPrefixQuotas defines a single IP Prefix quota

type IpSpaceOrgAssignmentQuotas added in v2.21.0

type IpSpaceOrgAssignmentQuotas struct {
	// FloatingIPQuota specifies the default number of IPs from the specified ranges which can be
	// consumed by each organization using this IP Space. This is typically set for IP Spaces with
	// type PUBLIC or SHARED_SERVICES. A Quota of -1 means there is no cap to the number of IP
	// addresses that can be allocated. A Quota of 0 means that the IP addresses cannot be
	// allocated. If not specified, all PUBLIC or SHARED_SERVICES IP Spaces have a default quota of
	// 1 for Floating IP addresses and all PRIVATE IP Spaces have a default quota of -1 for Floating
	// IP addresses.
	FloatingIPQuota *int `json:"floatingIpQuota"`
	// IPPrefixQuotas contains a slice of elements that define IP Prefix Quotas
	IPPrefixQuotas []IpSpaceOrgAssignmentIPPrefixQuotas `json:"ipPrefixQuotas"`
}

type IpSpaceRangeValues added in v2.21.0

type IpSpaceRangeValues struct {
	ID string `json:"id,omitempty"`
	// Starting IP address in the range.
	StartIPAddress string `json:"startIpAddress"`
	// endIpAddress
	EndIPAddress string `json:"endIpAddress"`

	// The number of IP addresses defined by the IP range.
	TotalIPCount string `json:"totalIpCount,omitempty"`
	// The number of allocated IP addresses.
	AllocatedIPCount string `json:"allocatedIpCount,omitempty"`
	// allocatedIpPercentage
	AllocatedIPPercentage float32 `json:"allocatedIpPercentage,omitempty"`
}
type IpSpaceUplink struct {
	ID          string `json:"id,omitempty"`
	Name        string `json:"name"`
	Description string `json:"description,omitempty"`
	// ExternalNetworkRef contains information
	ExternalNetworkRef *OpenApiReference `json:"externalNetworkRef"`
	IPSpaceRef         *OpenApiReference `json:"ipSpaceRef"`
	// The type of the IP Space associated with this uplink. Possible values are: PUBLIC, PRIVATE,
	// SHARED_SERVICES. This property is read-only.
	IPSpaceType string `json:"ipSpaceType,omitempty"`
	Status      string `json:"status,omitempty"`
}

IpSpaceUplink specifies the IP Space Uplink configuration for Provider Gateway (External network with T0 or T0 VRF backing)

type IpSpaceUtilization added in v2.21.0

type IpSpaceUtilization struct {
	// FloatingIPs holds utilization summary for floating IPs within the IP space.
	FloatingIPs FloatingIPs `json:"floatingIPs,omitempty"`
	// IPPrefixes holds Utilization summary for IP prefixes within the IP space.
	IPPrefixes IPPrefixes `json:"ipPrefixes,omitempty"`
}

type IpsecVpnLocalPeer

type IpsecVpnLocalPeer struct {
	ID   string `xml:"Id"`   // Id for the peer end point
	Name string `xml:"Name"` // Name for the peer
}

IpsecVpnThirdPartyPeer represents details about a peer network

type IpsecVpnSubnet

type IpsecVpnSubnet struct {
	Name    string `xml:"Name"`    // Gateway Name.
	Gateway string `xml:"Gateway"` // Subnet Gateway.
	Netmask string `xml:"Netmask"` // Subnet Netmask.
}

IpsecVpnSubnet represents subnet details. Type: IpsecVpnSubnetType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents subnet details. Since: 5.1

type IpsecVpnThirdPartyPeer

type IpsecVpnThirdPartyPeer struct {
	PeerID string `xml:"PeerId,omitempty"` // Id for the peer end point
}

IpsecVpnThirdPartyPeer represents details about a peer network

type Layer2Sections added in v2.20.0

type Layer2Sections struct {
	Section *FirewallSection `xml:"section"`
}

type Layer3Sections added in v2.20.0

type Layer3Sections struct {
	Section *FirewallSection `xml:"section"`
}

type LbAppProfile added in v2.3.0

type LbAppProfile struct {
	XMLName                       xml.Name                  `xml:"applicationProfile"`
	ID                            string                    `xml:"applicationProfileId,omitempty"`
	Name                          string                    `xml:"name,omitempty"`
	SslPassthrough                bool                      `xml:"sslPassthrough"`
	Template                      string                    `xml:"template,omitempty"`
	HttpRedirect                  *LbAppProfileHttpRedirect `xml:"httpRedirect,omitempty"`
	Persistence                   *LbAppProfilePersistence  `xml:"persistence,omitempty"`
	InsertXForwardedForHttpHeader bool                      `xml:"insertXForwardedFor"`
	ServerSslEnabled              bool                      `xml:"serverSslEnabled"`
}

LbAppProfile represents a load balancer application profile as per "VMware Cloud Director API for NSX Programming Guide" https://code.vmware.com/docs/6900/vcloud-director-api-for-nsx-programming-guide

type LbAppProfileHttpRedirect added in v2.3.0

type LbAppProfileHttpRedirect struct {
	XMLName xml.Name `xml:"httpRedirect"`
	To      string   `xml:"to,omitempty"`
}

LbAppProfileHttpRedirect defines http redirect settings in LbAppProfile

type LbAppProfilePersistence added in v2.3.0

type LbAppProfilePersistence struct {
	XMLName    xml.Name `xml:"persistence"`
	Method     string   `xml:"method,omitempty"`
	CookieName string   `xml:"cookieName,omitempty"`
	CookieMode string   `xml:"cookieMode,omitempty"`
	Expire     int      `xml:"expire,omitempty"`
}

LbAppProfilePersistence defines persistence profile settings in LbAppProfile

type LbAppProfiles added in v2.3.0

type LbAppProfiles []LbAppProfile

type LbAppRule added in v2.3.0

type LbAppRule struct {
	XMLName xml.Name `xml:"applicationRule"`
	ID      string   `xml:"applicationRuleId,omitempty"`
	Name    string   `xml:"name,omitempty"`
	Script  string   `xml:"script,omitempty"`
}

LbAppRule represents a load balancer application rule as per "VMware Cloud Director API for NSX Programming Guide" https://code.vmware.com/docs/6900/vcloud-director-api-for-nsx-programming-guide

type LbAppRules added in v2.3.0

type LbAppRules []LbAppRule

type LbGeneralParamsWithXml added in v2.3.0

type LbGeneralParamsWithXml struct {
	XMLName             xml.Name   `xml:"loadBalancer"`
	Enabled             bool       `xml:"enabled"`
	AccelerationEnabled bool       `xml:"accelerationEnabled"`
	Logging             *LbLogging `xml:"logging"`

	// This field is not used anywhere but needs to be passed through
	EnableServiceInsertion bool `xml:"enableServiceInsertion"`
	// Each configuration change has a version number
	Version string `xml:"version,omitempty"`

	// The below fields have `innerxml` tag so that they are not processed but instead
	// sent verbatim
	VirtualServers []InnerXML `xml:"virtualServer,omitempty"`
	Pools          []InnerXML `xml:"pool,omitempty"`
	AppProfiles    []InnerXML `xml:"applicationProfile,omitempty"`
	Monitors       []InnerXML `xml:"monitor,omitempty"`
	AppRules       []InnerXML `xml:"applicationRule,omitempty"`
}

LbGeneralParamsWithXml allows to enable/disable load balancing capabilities on specific edge gateway Reference: VMware Cloud Director API for NSX Programming Guide https://code.vmware.com/docs/6900/vcloud-director-api-for-nsx-programming-guide

Warning. It nests all components (LbMonitor, LbPool, LbAppProfile, LbAppRule, LbVirtualServer) because Edge Gateway API is done so that if this data is not sent while enabling it would wipe all load balancer configurations. InnerXML type fields are used with struct tag `innerxml` to prevent any manipulation of configuration and sending it verbatim

type LbLogging added in v2.3.0

type LbLogging struct {
	Enable   bool   `xml:"enable"`
	LogLevel string `xml:"logLevel"`
}

LbLogging represents logging configuration for load balancer

type LbMonitor added in v2.3.0

type LbMonitor struct {
	XMLName    xml.Name `xml:"monitor"`
	ID         string   `xml:"monitorId,omitempty"`
	Type       string   `xml:"type"`
	Interval   int      `xml:"interval,omitempty"`
	Timeout    int      `xml:"timeout,omitempty"`
	MaxRetries int      `xml:"maxRetries,omitempty"`
	Method     string   `xml:"method,omitempty"`
	URL        string   `xml:"url,omitempty"`
	Expected   string   `xml:"expected,omitempty"`
	Name       string   `xml:"name,omitempty"`
	Send       string   `xml:"send,omitempty"`
	Receive    string   `xml:"receive,omitempty"`
	Extension  string   `xml:"extension,omitempty"`
}

LbMonitor defines health check parameters for a particular type of network traffic Reference: VMware Cloud Director API for NSX Programming Guide https://code.vmware.com/docs/6900/vcloud-director-api-for-nsx-programming-guide

type LbMonitors added in v2.3.0

type LbMonitors []LbMonitor

type LbPool added in v2.3.0

type LbPool struct {
	XMLName             xml.Name      `xml:"pool"`
	ID                  string        `xml:"poolId,omitempty"`
	Name                string        `xml:"name"`
	Description         string        `xml:"description,omitempty"`
	Algorithm           string        `xml:"algorithm"`
	AlgorithmParameters string        `xml:"algorithmParameters,omitempty"`
	Transparent         bool          `xml:"transparent"`
	MonitorId           string        `xml:"monitorId,omitempty"`
	Members             LbPoolMembers `xml:"member,omitempty"`
}

LbPool represents a load balancer server pool as per "VMware Cloud Director API for NSX Programming Guide" Type: LBPoolHealthCheckType https://code.vmware.com/docs/6900/vcloud-director-api-for-nsx-programming-guide

type LbPoolMember added in v2.3.0

type LbPoolMember struct {
	ID          string `xml:"memberId,omitempty"`
	Name        string `xml:"name"`
	IpAddress   string `xml:"ipAddress"`
	Weight      int    `xml:"weight,omitempty"`
	MonitorPort int    `xml:"monitorPort,omitempty"`
	Port        int    `xml:"port"`
	MaxConn     int    `xml:"maxConn,omitempty"`
	MinConn     int    `xml:"minConn,omitempty"`
	Condition   string `xml:"condition,omitempty"`
}

LbPoolMember represents a single member inside LbPool

type LbPoolMembers added in v2.3.0

type LbPoolMembers []LbPoolMember

type LbPools added in v2.3.0

type LbPools []LbPool

type LbVirtualServer added in v2.3.0

type LbVirtualServer struct {
	XMLName              xml.Name `xml:"virtualServer"`
	ID                   string   `xml:"virtualServerId,omitempty"`
	Name                 string   `xml:"name,omitempty"`
	Description          string   `xml:"description,omitempty"`
	Enabled              bool     `xml:"enabled"`
	IpAddress            string   `xml:"ipAddress"`
	Protocol             string   `xml:"protocol"`
	Port                 int      `xml:"port"`
	AccelerationEnabled  bool     `xml:"accelerationEnabled"`
	ConnectionLimit      int      `xml:"connectionLimit,omitempty"`
	ConnectionRateLimit  int      `xml:"connectionRateLimit,omitempty"`
	ApplicationProfileId string   `xml:"applicationProfileId,omitempty"`
	DefaultPoolId        string   `xml:"defaultPoolId,omitempty"`
	ApplicationRuleIds   []string `xml:"applicationRuleId,omitempty"`
}

LbVirtualServer represents a load balancer virtual server as per "VMware Cloud Director API for NSX Programming Guide" https://code.vmware.com/docs/6900/vcloud-director-api-for-nsx-programming-guide

type LeaseSettingsSection

type LeaseSettingsSection struct {
	HREF                      string `xml:"href,attr,omitempty"`
	Type                      string `xml:"type,attr,omitempty"`
	DeploymentLeaseExpiration string `xml:"DeploymentLeaseExpiration,omitempty"`
	DeploymentLeaseInSeconds  int    `xml:"DeploymentLeaseInSeconds,omitempty"`
	Link                      *Link  `xml:"Link,omitempty"`
	StorageLeaseExpiration    string `xml:"StorageLeaseExpiration,omitempty"`
	StorageLeaseInSeconds     int    `xml:"StorageLeaseInSeconds,omitempty"`
}

LeaseSettingsSection represents vApp lease settings. Type: LeaseSettingsSectionType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents vApp lease settings. Since: 0.9

type Link struct {
	HREF string `xml:"href,attr" json:"href,omitempty"`
	ID   string `xml:"id,attr,omitempty" json:"id,omitempty"`
	Type string `xml:"type,attr,omitempty" json:"type,omitempty"`
	Name string `xml:"name,attr,omitempty" json:"name,omitempty"`
	Rel  string `xml:"rel,attr" json:"rel,omitempty"`
}

Link extends reference type by adding relation attribute. Defines a hyper-link with a relationship, hyper-link reference, and an optional MIME type. Type: LinkType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Extends reference type by adding relation attribute. Defines a hyper-link with a relationship, hyper-link reference, and an optional MIME type. Since: 0.9

type LinkList []*Link

LinkList represents a list of links

func (LinkList) Find

func (l LinkList) Find(predicate LinkPredicate) *Link

Find the first occurrence that matches the predicate

func (LinkList) ForName

func (l LinkList) ForName(name, tpe, rel string) *Link

ForName finds a link for a given name and type

func (LinkList) ForType

func (l LinkList) ForType(tpe, rel string) *Link

ForType finds a link for a given type

type LinkPredicate

type LinkPredicate func(*Link) bool

LinkPredicate is a predicate for finding links in a link list

type LocalSubject added in v2.9.0

type LocalSubject struct {
	HREF string `xml:"href,attr"` // Required - The URL with the full identification of the subject
	Name string `xml:"name,attr"` // The name of the subject. Not needed in input, but it is returned on reading
	Type string `xml:"type,attr"` // Required - The MIME type of the subject. So far, we are using users, groups, and organizations
}

LocalSubject is the user, group, or organization to which control access settings apply.

type LocalityParams

type LocalityParams struct {
	// Elements
	ResourceEntity *Reference `xml:"ResourceEntity,omitempty"` // Reference to a Disk, or a VM.
}

LocalityParams represents locality parameters. Locality parameters provide a hint that may help the placement engine optimize placement of a VM with respect to another VM or an independent disk. Type: LocalityParamsType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents locality parameters. Locality parameters provide a hint that may help the placement engine optimize placement of a VM with respect to another VM or an independent disk. Since: 5.1

type LogicalVmGroup added in v2.17.0

type LogicalVmGroup struct {
	Name                   string            `json:"name,omitempty"` // Display name
	Description            string            `json:"description,omitempty"`
	ID                     string            `json:"id,omitempty"`                     // UUID for LogicalVmGroup. This is immutable
	NamedVmGroupReferences OpenApiReferences `json:"namedVmGroupReferences,omitempty"` // List of named VM Groups associated with LogicalVmGroup.
	PvdcID                 string            `json:"pvdcId,omitempty"`                 // URN for Provider VDC
}

LogicalVmGroup is used to create VM Placement Policies in VCD.

type Media

type Media struct {
	HREF         string           `xml:"href,attr,omitempty"`
	Type         string           `xml:"type,attr,omitempty"`
	ID           string           `xml:"id,attr,omitempty"`
	OperationKey string           `xml:"operationKey,attr,omitempty"`
	Name         string           `xml:"name,attr"`
	Status       int64            `xml:"status,attr,omitempty"`
	ImageType    string           `xml:"imageType,attr,omitempty"`
	Size         int64            `xml:"size,attr,omitempty"`
	Description  string           `xml:"Description,omitempty"`
	Files        *FilesList       `xml:"Files,omitempty"`
	Link         LinkList         `xml:"Link,omitempty"`
	Tasks        *TasksInProgress `xml:"Tasks,omitempty"`
	Owner        *Reference       `xml:"Owner,omitempty"`
	Entity       *Entity          `xml:"Entity"`
}

Type: MediaType Namespace: http://www.vmware.com/vcloud/v1.5 https://vdc-repo.vmware.com/vmwb-repository/dcr-public/ca48e1bb-282b-4fdc-b827-649b819249ed/55142cf1-5bb8-4ab1-8d09-b84f717af5ec/doc/doc/types/MediaType.html Description: Represents Media image Since: 0.9

type MediaInsertOrEjectParams

type MediaInsertOrEjectParams struct {
	XMLName         xml.Name         `xml:"MediaInsertOrEjectParams"`
	Xmlns           string           `xml:"xmlns,attr,omitempty"`
	Media           *Reference       `xml:"Media"`
	VCloudExtension *VCloudExtension `xml:"VCloudExtension,omitempty"`
}

Parameters for inserting and ejecting virtual media for VM as CD/DVD Reference: vCloud API 30.0 - MediaInsertOrEjectParamsType https://code.vmware.com/apis/287/vcloud#/doc/doc/types/MediaInsertOrEjectParamsType.html

type MediaRecordType

type MediaRecordType struct {
	HREF               string    `xml:"href,attr,omitempty"`
	ID                 string    `xml:"id,attr,omitempty"`
	Type               string    `xml:"type,attr,omitempty"`
	OwnerName          string    `xml:"ownerName,attr,omitempty"`
	CatalogName        string    `xml:"catalogName,attr,omitempty"`
	IsPublished        bool      `xml:"isPublished,attr,omitempty"`
	Name               string    `xml:"name,attr"`
	Vdc                string    `xml:"vdc,attr,omitempty"`
	VdcName            string    `xml:"vdcName,attr,omitempty"`
	Org                string    `xml:"org,attr,omitempty"`
	CreationDate       string    `xml:"creationDate,attr,omitempty"`
	IsBusy             bool      `xml:"isBusy,attr,omitempty"`
	StorageB           int64     `xml:"storageB,attr,omitempty"`
	Owner              string    `xml:"owner,attr,omitempty"`
	Catalog            string    `xml:"catalog,attr,omitempty"`
	CatalogItem        string    `xml:"catalogItem,attr,omitempty"`
	Status             string    `xml:"status,attr,omitempty"`
	StorageProfileName string    `xml:"storageProfileName,attr,omitempty"`
	Version            int64     `xml:"version,attr,omitempty"`
	LastSuccessfulSync string    `xml:"lastSuccessfulSync,attr,omitempty"`
	TaskStatusName     string    `xml:"taskStatusName,attr,omitempty"`
	IsInCatalog        bool      `xml:"isInCatalog,attr,omitempty"`
	Task               string    `xml:"task,attr,omitempty"`
	IsIso              bool      `xml:"isIso,attr,omitempty"`
	IsVdcEnabled       bool      `xml:"isVdcEnabled,attr,omitempty"`
	TaskStatus         string    `xml:"taskStatus,attr,omitempty"`
	TaskDetails        string    `xml:"taskDetails,attr,omitempty"`
	Link               *Link     `xml:"Link,omitempty"`
	Metadata           *Metadata `xml:"Metadata,omitempty"`
}

Type: MediaRecord Namespace: http://www.vmware.com/vcloud/v1.5 https://code.vmware.com/apis/287/vcloud#/doc/doc/operations/GET-MediasFromQuery.html Issue that description partly matches with what is returned Description: Represents Media record Since: 1.5

type MediaSection added in v2.6.0

type MediaSection struct {
	MediaSettings []*MediaSettings `xml:"MediaSettings"`
}

MediaSection from Vm/VmSpecSection struct

type MediaSettings added in v2.6.0

type MediaSettings struct {
	DeviceId    string     `xml:"DeviceId,omitempty"`    // Describes the media device whose media mount is being specified here. This deviceId must match the RASD.InstanceID attribute in the VirtualHardwareSection of the vApp's OVF description.
	MediaImage  *Reference `xml:"MediaImage,omitempty"`  // The media image that is mounted onto the device. This property can be 'null' which represents that no media is mounted on the device.
	MediaType   string     `xml:"MediaType,omitempty"`   // Specified the type of media that is mounted onto the device.
	MediaState  string     `xml:"MediaState,omitempty"`  // Specifies the state of the media device.
	UnitNumber  int        `xml:"UnitNumber"`            // Specified the type of media that is mounted onto the device.
	BusNumber   int        `xml:"BusNumber"`             //	The bus number of the media device controller.
	AdapterType string     `xml:"AdapterType,omitempty"` // The type of controller, e.g. IDE vs SCSI and if SCSI bus-logic vs LSI logic
}

MediaSettings from Vm/VmSpecSection/MediaSection struct

type Member added in v2.20.0

type Member struct {
	ObjectID           string          `xml:"objectId"`
	ObjectTypeName     string          `xml:"objectTypeName"`
	VsmUuid            string          `xml:"vsmUuid"`
	NodeID             string          `xml:"nodeId"`
	Revision           string          `xml:"revision"`
	Type               ApplicationType `xml:"type"`
	Name               string          `xml:"name"`
	Scope              Scope           `xml:"scope"`
	ClientHandle       struct{}        `xml:"clientHandle"`
	ExtendedAttributes struct{}        `xml:"extendedAttributes"`
	IsUniversal        bool            `xml:"isUniversal"`
	UniversalRevision  bool            `xml:"universalRevision"`
	IsTemporal         bool            `xml:"isTemporal"`
}

type MemoryResourceMb added in v2.6.0

type MemoryResourceMb struct {
	Configured  int64  `xml:"Configured"`            // The amount of resource configured on the virtual machine.
	Reservation *int64 `xml:"Reservation,omitempty"` // The amount of reservation of this resource on the underlying virtualization infrastructure.
	Limit       *int64 `xml:"Limit,omitempty"`       // The limit for how much of this resource can be consumed on the underlying virtualization infrastructure. This is only valid when the resource allocation is not unlimited.
	SharesLevel string `xml:"SharesLevel,omitempty"` //	Pre-determined relative priorities according to which the non-reserved portion of this resource is made available to the virtualized workload.
	Shares      *int   `xml:"Shares,omitempty"`      // Custom priority for the resource. This is a read-only, unless the share level is CUSTOM.
}

MemoryResourceMb from Vm/VmSpecSection struct

type Metadata added in v2.2.0

type Metadata struct {
	XMLName       xml.Name         `xml:"Metadata"`
	Xmlns         string           `xml:"xmlns,attr"`
	HREF          string           `xml:"href,attr"`
	Type          string           `xml:"type,attr,omitempty"` // The MIME type of the entity.
	Xsi           string           `xml:"xmlns:xsi,attr"`
	Link          []*Link          `xml:"Link,omitempty"`
	MetadataEntry []*MetadataEntry `xml:"MetadataEntry,omitempty"`
}

Metadata is the user-defined metadata associated with an object. Type: MetadataType Namespace: http://www.vmware.com/vcloud/v1.5 Description: User-defined metadata associated with an object. Since: 1.5

type MetadataDomainTag added in v2.17.0

type MetadataDomainTag struct {
	Visibility string `xml:"visibility,attr"` // One of: PRIVATE (hidden), READONLY, READWRITE (read/write)
	Domain     string `xml:",chardata"`
}

MetadataDomainTag contains both the visibility and the domain of the metadata. Type: MetadataDomainTagType Namespace: http://www.vmware.com/vcloud/v1.5 Description: A value of SYSTEM places this MetadataEntry in the SYSTEM domain. Omit or leave empty to place this MetadataEntry in the GENERAL domain. Since: 5.1

type MetadataEntry added in v2.2.0

type MetadataEntry struct {
	Xmlns      string              `xml:"xmlns,attr"`
	HREF       string              `xml:"href,attr"`
	Type       string              `xml:"type,attr,omitempty"` // The MIME type of the entity
	Xsi        string              `xml:"xmlns:xsi,attr"`
	Domain     *MetadataDomainTag  `xml:"Domain,omitempty"`
	Key        string              `xml:"Key"`            // An arbitrary key name. Length cannot exceed 256 UTF-8 characters.
	Link       []*Link             `xml:"Link,omitempty"` // A reference to an entity or operation associated with this object.
	TypedValue *MetadataTypedValue `xml:"TypedValue"`
}

MetadataEntry is a single metadata entry. Type: MetadataEntryType Namespace: http://www.vmware.com/vcloud/v1.5

type MetadataTypedValue added in v2.17.0

type MetadataTypedValue struct {
	XsiType string `xml:"http://www.w3.org/2001/XMLSchema-instance type,attr"`
	Value   string `xml:"Value"`
}

MetadataTypedValue is the content of a metadata entry. Type: MetadataTypedValue Namespace: http://www.vmware.com/vcloud/v1.5 Description: One of: MetadataStringValue, MetadataNumberValue, MetadataBooleanValue, MetadataDateTimeValue Since: 5.1

type MetadataValue

type MetadataValue struct {
	XMLName    xml.Name            `xml:"MetadataValue"`
	Xsi        string              `xml:"xmlns:xsi,attr"`
	Xmlns      string              `xml:"xmlns,attr"`
	Domain     *MetadataDomainTag  `xml:"Domain,omitempty"`
	TypedValue *MetadataTypedValue `xml:"TypedValue"`
}

MetadataValue is the type returned when querying a unique entry of metadata. Type: MetadataValueType Namespace: http://www.vmware.com/vcloud/v1.5

type NSXError added in v2.3.0

type NSXError struct {
	XMLName    xml.Name `xml:"error"`
	ErrorCode  string   `xml:"errorCode"`
	Details    string   `xml:"details"`
	ModuleName string   `xml:"moduleName"`
}

NSXError is the standard error message type used in the NSX API which is proxied by vCD. It has attached method `Error() string` and implements Go's default `type error` interface.

func (NSXError) Error added in v2.3.0

func (nsxErr NSXError) Error() string

Error method implements Go's default `error` interface for NSXError and formats NSX error output for human readable output.

type NatOneToOneBasicRule

type NatOneToOneBasicRule struct {
	Xmlns string `xml:"xmlns,attr,omitempty"`
	// Elements
	MappingMode       string `xml:"MappingMode"`       // One of: automatic (map IP addresses automatically), manual (map IP addresses manually using ExternalIpAddress and InternalIpAddress)
	ExternalIPAddress string `xml:"ExternalIpAddress"` // External IP address to map.
	InternalIPAddress string `xml:"InternalIpAddress"` // Internal IP address to map.
}

NatOneToOneBasicRule represents the NAT basic rule for one to one mapping of internal and external IP addresses from a network. Type: NatOneToOneBasicRuleType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents the NAT basic rule for one to one mapping of internal and external IP addresses from a network. Since: 0.9

type NatOneToOneVMRule

type NatOneToOneVMRule struct {
	Xmlns string `xml:"xmlns,attr,omitempty"`
	// Elements
	MappingMode       string  `xml:"MappingMode"`       // Mapping mode.
	ExternalIPAddress *string `xml:"ExternalIpAddress"` // External IP address to map.
	VAppScopedVMID    string  `xml:"VAppScopedVmId"`    // VAppScopedVmId of VM to which this rule applies.
	VMNicID           int     `xml:"VmNicId"`           // VM NIC ID to which this rule applies.
}

NatOneToOneVMRule represents the NAT rule for one to one mapping of VM NIC and external IP addresses from a network. Type: NatOneToOneVmRuleType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents the NAT rule for one to one mapping of VM NIC and external IP addresses from a network. Since: 0.9

type NatPortForwardingRule

type NatPortForwardingRule struct {
	ExternalIPAddress string `xml:"ExternalIpAddress"`  // External IP address to map.
	ExternalPort      int    `xml:"ExternalPort"`       // External port to forward to.
	InternalIPAddress string `xml:"InternalIpAddress"`  // Internal IP address to map.
	InternalPort      int    `xml:"InternalPort"`       // Internal port to forward to.
	Protocol          string `xml:"Protocol,omitempty"` // Protocol to forward. One of: TCP (forward TCP packets), UDP (forward UDP packets), TCP_UDP (forward TCP and UDP packets).
}

NatPortForwardingRule represents the NAT rule for port forwarding between internal IP/port and external IP/port. Type: NatPortForwardingRuleType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents the NAT rule for port forwarding between internal IP/port and external IP/port. Since: 0.9

type NatRule

type NatRule struct {
	Xmlns string `xml:"xmlns,attr,omitempty"`
	// Elements
	Description        string                 `xml:"Description,omitempty"`        // A description of the rule.
	RuleType           string                 `xml:"RuleType,omitempty"`           // Type of NAT rule. One of: SNAT (source NAT), DNAT (destination NAT)
	IsEnabled          *bool                  `xml:"IsEnabled"`                    // Used to enable or disable the firewall rule.
	ID                 string                 `xml:"Id,omitempty"`                 // Firewall rule identifier.
	GatewayNatRule     *GatewayNatRule        `xml:"GatewayNatRule,omitempty"`     // Defines SNAT and DNAT types.
	OneToOneBasicRule  *NatOneToOneBasicRule  `xml:"OneToOneBasicRule,omitempty"`  // Maps one internal IP address to one external IP address.
	OneToOneVMRule     *NatOneToOneVMRule     `xml:"OneToOneVmRule,omitempty"`     // Maps one VM NIC to one external IP addresses.
	PortForwardingRule *NatPortForwardingRule `xml:"PortForwardingRule,omitempty"` // Port forwarding internal to external IP addresses.
	VMRule             *NatVMRule             `xml:"VmRule,omitempty"`             // Port forwarding VM NIC to external IP addresses.
}

NatRule represents a NAT rule. Type: NatRuleType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a NAT rule. Since: 0.9

type NatService

type NatService struct {
	Xmlns string `xml:"xmlns,attr,omitempty"`

	IsEnabled  bool       `xml:"IsEnabled"`            // Enable or disable the service using this flag
	NatType    string     `xml:"NatType,omitempty"`    // One of: ipTranslation (use IP translation), portForwarding (use port forwarding)
	Policy     string     `xml:"Policy,omitempty"`     // One of: allowTraffic (Allow all traffic), allowTrafficIn (Allow inbound traffic only)
	NatRule    []*NatRule `xml:"NatRule,omitempty"`    // A NAT rule.
	ExternalIP string     `xml:"ExternalIp,omitempty"` // External IP address for rule.
}

NatService represents a NAT network service. Type: NatServiceType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a NAT network service. Since:

type NatVMRule

type NatVMRule struct {
	ExternalIPAddress string `xml:"ExternalIpAddress,omitempty"` // External IP address to map.
	ExternalPort      int    `xml:"ExternalPort"`                // External port to forward to.
	VAppScopedVMID    string `xml:"VAppScopedVmId"`              // VAppScopedVmId of VM to which this rule applies.
	VMNicID           int    `xml:"VmNicId"`                     // VM NIC ID to which this rule applies.
	InternalPort      int    `xml:"InternalPort"`                // Internal port to forward to.
	Protocol          string `xml:"Protocol,omitempty"`          // Protocol to forward. One of: TCP (forward TCP packets), UDP (forward UDP packets), TCP_UDP (forward TCP and UDP packets).
}

NatVMRule represents the NAT rule for port forwarding between VM NIC/port and external IP/port. Type: NatVmRuleType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents the NAT rule for port forwarding between VM NIC/port and external IP/port. Since: 0.9

type NetworkAssignment

type NetworkAssignment struct {
	// Attributes
	InnerNetwork     string `xml:"innerNetwork,attr"`     // Name of the network as specified in the VM.
	ContainerNetwork string `xml:"containerNetwork,attr"` // Name of the vApp network to map to.
}

NetworkAssignment maps a network name specified in a VM to the network name of a vApp network defined in the VApp that contains the VM Type: NetworkAssignmentType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Maps a network name specified in a VM to the network name of a vApp network defined in the VApp that contains the VM Since: 0.9

type NetworkConfigSection

type NetworkConfigSection struct {
	// Extends OVF Section_Type
	// FIXME: Fix the OVF section
	XMLName xml.Name `xml:"NetworkConfigSection"`
	Xmlns   string   `xml:"xmlns,attr,omitempty"`
	Ovf     string   `xml:"xmlns:ovf,attr,omitempty"`

	Info string `xml:"ovf:Info"`
	//
	HREF          string                     `xml:"href,attr,omitempty"`
	Type          string                     `xml:"type,attr,omitempty"`
	Link          *Link                      `xml:"Link,omitempty"`
	NetworkConfig []VAppNetworkConfiguration `xml:"NetworkConfig,omitempty"`
}

NetworkConfigSection is container for vApp networks. Type: NetworkConfigSectionType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Container for vApp networks. Since: 0.9

func (NetworkConfigSection) NetworkNames added in v2.2.0

func (n NetworkConfigSection) NetworkNames() []string

NetworkNames allows to extract network names

type NetworkConfiguration

type NetworkConfiguration struct {
	Xmlns                          string           `xml:"xmlns,attr,omitempty"`
	BackwardCompatibilityMode      bool             `xml:"BackwardCompatibilityMode"`
	IPScopes                       *IPScopes        `xml:"IpScopes,omitempty"`
	ParentNetwork                  *Reference       `xml:"ParentNetwork,omitempty"`
	FenceMode                      string           `xml:"FenceMode"`
	RetainNetInfoAcrossDeployments *bool            `xml:"RetainNetInfoAcrossDeployments,omitempty"`
	Features                       *NetworkFeatures `xml:"Features,omitempty"`

	// SubInterface and DistributedInterface are mutually exclusive
	// When they are both nil, it means the "internal" interface (the default) will be used.
	// When one of them is set, the corresponding interface will be used.
	// They cannot be both set (we'll get an API error if we do).
	SubInterface         *bool `xml:"SubInterface,omitempty"`
	DistributedInterface *bool `xml:"DistributedInterface,omitempty"`
	GuestVlanAllowed     *bool `xml:"GuestVlanAllowed,omitempty"`
}

NetworkConfiguration is the configuration applied to a network. This is an abstract base type. The concrete types include those for vApp and Organization wide networks. Type: NetworkConfigurationType Namespace: http://www.vmware.com/vcloud/v1.5 Description: The configurations applied to a network. This is an abstract base type. The concrete types include those for vApp and Organization wide networks. Since: 0.9

type NetworkConnection

type NetworkConnection struct {
	Network                 string `xml:"network,attr"`                      // Name of the network to which this NIC is connected.
	NeedsCustomization      bool   `xml:"needsCustomization,attr,omitempty"` // True if this NIC needs customization.
	NetworkConnectionIndex  int    `xml:"NetworkConnectionIndex"`            // Virtual slot number associated with this NIC. First slot number is 0.
	IPAddress               string `xml:"IpAddress,omitempty"`               // IP address assigned to this NIC.
	ExternalIPAddress       string `xml:"ExternalIpAddress,omitempty"`       // If the network to which this NIC connects provides NAT services, the external address assigned to this NIC appears here.
	IsConnected             bool   `xml:"IsConnected"`                       // If the virtual machine is undeployed, this value specifies whether the NIC should be connected upon deployment. If the virtual machine is deployed, this value reports the current status of this NIC's connection, and can be updated to change that connection status.
	MACAddress              string `xml:"MACAddress,omitempty"`              // MAC address associated with the NIC.
	IPAddressAllocationMode string `xml:"IpAddressAllocationMode"`           // IP address allocation mode for this connection. One of: POOL (A static IP address is allocated automatically from a pool of addresses.) DHCP (The IP address is obtained from a DHCP service.) MANUAL (The IP address is assigned manually in the IpAddress element.) NONE (No IP addressing mode specified.)
	NetworkAdapterType      string `xml:"NetworkAdapterType,omitempty"`
}

NetworkConnection represents a network connection in the virtual machine. Type: NetworkConnectionType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a network connection in the virtual machine. Since: 0.9

type NetworkConnectionSection

type NetworkConnectionSection struct {
	// Extends OVF Section_Type
	// FIXME: Fix the OVF section
	XMLName xml.Name `xml:"NetworkConnectionSection"`
	Xmlns   string   `xml:"xmlns,attr,omitempty"`
	Ovf     string   `xml:"xmlns:ovf,attr,omitempty"`

	Info string `xml:"ovf:Info"`
	//
	HREF                          string               `xml:"href,attr,omitempty"`
	Type                          string               `xml:"type,attr,omitempty"`
	PrimaryNetworkConnectionIndex int                  `xml:"PrimaryNetworkConnectionIndex"`
	NetworkConnection             []*NetworkConnection `xml:"NetworkConnection,omitempty"`
	Link                          *Link                `xml:"Link,omitempty"`
}

NetworkConnectionSection the container for the network connections of this virtual machine. Type: NetworkConnectionSectionType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Container for the network connections of this virtual machine. Since: 0.9

type NetworkFeatures

type NetworkFeatures struct {
	DhcpService          *DhcpService          `xml:"DhcpService,omitempty"`          // Substitute for NetworkService. DHCP service settings
	FirewallService      *FirewallService      `xml:"FirewallService,omitempty"`      // Substitute for NetworkService. Firewall service settings
	NatService           *NatService           `xml:"NatService,omitempty"`           // Substitute for NetworkService. NAT service settings
	StaticRoutingService *StaticRoutingService `xml:"StaticRoutingService,omitempty"` // Substitute for NetworkService. Static Routing service settings

}

NetworkFeatures represents features of a network. Type: NetworkFeaturesType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents features of a network. Since:

type NetworkPool added in v2.21.0

type NetworkPool struct {
	Status             string             `json:"status,omitempty"`
	Id                 string             `json:"id,omitempty"`
	Name               string             `json:"name"`
	Description        string             `json:"description"`
	PoolType           string             `json:"poolType"`
	PromiscuousMode    bool               `json:"promiscuousMode,omitempty"`
	TotalBackingsCount int                `json:"totalBackingsCount,omitempty"`
	UsedBackingsCount  int                `json:"usedBackingsCount,omitempty"`
	ManagingOwnerRef   OpenApiReference   `json:"managingOwnerRef"`
	Backing            NetworkPoolBacking `json:"backing"`
}

NetworkPool is the full data retrieved for a provider network pool

type NetworkPoolBacking added in v2.21.0

type NetworkPoolBacking struct {
	VlanIdRanges     VlanIdRanges       `json:"vlanIdRanges,omitempty"`
	VdsRefs          []OpenApiReference `json:"vdsRefs,omitempty"`
	PortGroupRefs    []OpenApiReference `json:"portGroupRefs,omitempty"`
	TransportZoneRef OpenApiReference   `json:"transportZoneRef,omitempty"`
	ProviderRef      OpenApiReference   `json:"providerRef"`
}

NetworkPoolBacking is the definition of the objects supporting the network pool

type NetworkPoolReferences added in v2.17.0

type NetworkPoolReferences struct {
	NetworkPoolReference []*Reference `xml:"NetworkPoolReference" json:"networkPoolReference"`
}

NetworkPoolReferences is a container for references to network pools in this vDC. Type: NetworkPoolReferencesType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Container for references to network pools in this vDC. Since: 0.9

type NetworkProvider added in v2.9.0

type NetworkProvider struct {
	Name string `json:"name,omitempty"`
	ID   string `json:"id"`
}

NetworkProvider can be NSX-T manager or vCenter. ID is sufficient for creation purpose.

type NetworksList

type NetworksList struct {
	Networks []*Reference `xml:"Network,omitempty"`
}

NetworksListType contains a list of references to Org Networks Type: NetworksListType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a list of organization Networks. Since: 0.9

type NsxtAlbCloud added in v2.13.0

type NsxtAlbCloud struct {
	// ID (e.g. 'urn:vcloud:loadBalancerCloud:947ea2ba-e448-4249-91f7-1432b3d2fcbf')
	ID     string `json:"id,omitempty"`
	Status string `json:"status,omitempty"`
	// Name of NSX-T ALB Cloud
	Name string `json:"name"`
	// Description of NSX-T ALB Cloud
	Description string `json:"description,omitempty"`
	// LoadBalancerCloudBacking uniquely identifies a Load Balancer Cloud configured within a Load Balancer Controller. At
	// the present, VCD only supports NSX-T Clouds configured within an NSX-ALB Controller deployment.
	LoadBalancerCloudBacking NsxtAlbCloudBacking `json:"loadBalancerCloudBacking"`
	// NetworkPoolRef for the Network Pool associated with this Cloud
	NetworkPoolRef *OpenApiReference `json:"networkPoolRef"`
	// HealthStatus contains status of the Load Balancer Cloud. Possible values are:
	// UP - The cloud is healthy and ready to enable Load Balancer for an Edge Gateway.
	// DOWN - The cloud is in a failure state. Enabling Load balancer on an Edge Gateway may not be possible.
	// RUNNING - The cloud is currently processing. An example is if it's enabling a Load Balancer for an Edge Gateway.
	// UNAVAILABLE - The cloud is unavailable.
	// UNKNOWN - The cloud state is unknown.
	HealthStatus string `json:"healthStatus,omitempty"`
	// DetailedHealthMessage contains detailed message on the health of the Cloud.
	DetailedHealthMessage string `json:"detailedHealthMessage,omitempty"`
}

NsxtAlbCloud helps to use the virtual infrastructure provided by NSX Advanced Load Balancer, register NSX-T Cloud instances with VMware Cloud Director by consuming NsxtAlbImportableCloud.

type NsxtAlbCloudBacking added in v2.13.0

type NsxtAlbCloudBacking struct {
	// BackingId is the ID of NsxtAlbImportableCloud
	BackingId string `json:"backingId"`
	// BackingType contains type of ALB (The only supported now is 'NSXALB_NSXT')
	BackingType string `json:"backingType,omitempty"`
	// LoadBalancerControllerRef contains reference to NSX-T ALB Controller
	LoadBalancerControllerRef OpenApiReference `json:"loadBalancerControllerRef"`
}

NsxtAlbCloudBacking is embedded into NsxtAlbCloud

type NsxtAlbConfig added in v2.14.0

type NsxtAlbConfig struct {
	// Enabled is a mandatory flag indicating whether Load Balancer Service is enabled or not
	Enabled bool `json:"enabled"`
	// LicenseType of the backing Load Balancer Cloud.
	// * BASIC - Basic edition of the NSX Advanced Load Balancer.
	// * ENTERPRISE - Full featured edition of the NSX Advanced Load Balancer.
	// This field was removed since VCD 10.4.0 (v37.0) in favor of NsxtAlbConfig.SupportedFeatureSet
	LicenseType string `json:"licenseType,omitempty"`
	// SupportedFeatureSet was added in VCD 10.4.0 (v37.0) as substitute of NsxtAlbConfig.LicenseType.
	// Possible values are: "STANDARD", "PREMIUM".
	SupportedFeatureSet string `json:"supportedFeatureSet,omitempty"`
	// LoadBalancerCloudRef
	LoadBalancerCloudRef *OpenApiReference `json:"loadBalancerCloudRef,omitempty"`
	// ServiceNetworkDefinition in Gateway CIDR format which will be used by Load Balancer service. All the load balancer
	// service engines associated with the Service Engine Group will be attached to this network. The subnet prefix length
	// must be 25. If nothing is set, the default is 192.168.255.1/25. Default CIDR can be configured. This field cannot
	// be updated.
	ServiceNetworkDefinition string `json:"serviceNetworkDefinition,omitempty"`

	// The IPv6 network definition in Gateway CIDR format which will be used by Load Balancer
	// service on Edge. All the load balancer service engines associated with the Service Engine
	// Group will be attached to this network.
	// Once set, this field cannot be updated. The default
	// IPv4 service network will be used if both the serviceNetworkDefinition and
	// ipv6ServiceNetworkDefinition properties are unset. If both are set, it will still be one
	// service network with a dual IPv4 and IPv6 stack.
	// This field is only available for VCD 10.4.0+ (v37.0+)
	Ipv6ServiceNetworkDefinition string `json:"ipv6ServiceNetworkDefinition,omitempty"`

	// TransparentModeEnabled allows to configure Preserve Client IP on a Virtual Service
	// This field is only available for VCD 10.4.1+ (v37.1+)
	TransparentModeEnabled *bool `json:"transparentModeEnabled,omitempty"`
}

NsxtAlbConfig describes Load Balancer Service configuration on an NSX-T Edge Gateway

type NsxtAlbController added in v2.13.0

type NsxtAlbController struct {
	// ID holds URN for load balancer controller (e.g. urn:vcloud:loadBalancerController:aa23ef66-ba32-48b2-892f-7acdffe4587e)
	ID string `json:"id,omitempty"`
	// Name as shown in VCD
	Name string `json:"name"`
	// Description as shown in VCD
	Description string `json:"description,omitempty"`
	// Url of ALB controller
	Url string `json:"url"`
	// Username of user
	Username string `json:"username"`
	// Password (will not be returned on read)
	Password string `json:"password,omitempty"`
	// LicenseType By enabling this feature, the provider acknowledges that they have independently licensed the
	// enterprise version of the NSX AVI LB.
	// Possible options: 'BASIC', 'ENTERPRISE'
	// This field was removed since VCD 10.4.0 (v37.0) in favor of NsxtAlbServiceEngineGroup.SupportedFeatureSet
	LicenseType string `json:"licenseType,omitempty"`
	// Version of ALB (e.g. 20.1.3). Read-only
	Version string `json:"version,omitempty"`
}

NsxtAlbController helps to integrate VMware Cloud Director with NSX-T Advanced Load Balancer deployment. Controller instances are registered with VMware Cloud Director instance. Controller instances serve as a central control plane for the load-balancing services provided by NSX-T Advanced Load Balancer. To configure an NSX-T ALB one needs to supply AVI Controller endpoint, credentials and license to be used.

type NsxtAlbImportableCloud added in v2.13.0

type NsxtAlbImportableCloud struct {
	// ID (e.g. 'cloud-43726181-f73e-41f2-bf1d-8a9609502586')
	ID string `json:"id"`

	DisplayName string `json:"displayName"`
	// AlreadyImported shows if this ALB Cloud is already imported
	AlreadyImported bool `json:"alreadyImported"`

	// NetworkPoolRef contains a reference to NSX-T network pool
	NetworkPoolRef OpenApiReference `json:"networkPoolRef"`

	// TransportZoneName contains transport zone name
	TransportZoneName string `json:"transportZoneName"`
}

NsxtAlbImportableCloud allows user to list importable NSX-T ALB Clouds. Each importable cloud can only be imported once. It has a flag AlreadyImported which hints if it is already consumed or not.

type NsxtAlbImportableServiceEngineGroups added in v2.13.0

type NsxtAlbImportableServiceEngineGroups struct {
	// ID (e.g. 'serviceenginegroup-b633f16f-2733-4bf5-b552-3a6c4949caa4')
	ID string `json:"id"`
	// DisplayName is the name of
	DisplayName string `json:"displayName"`
	// HaMode (e.g. 'ELASTIC_N_PLUS_M_BUFFER')
	HaMode string `json:"haMode"`
}

NsxtAlbImportableServiceEngineGroups provides capability to list all Importable Service Engine Groups available in ALB Controller so that they can be consumed by NsxtAlbServiceEngineGroup

Note. The API does not return Importable Service Engine Group once it is consumed.

type NsxtAlbPool added in v2.14.0

type NsxtAlbPool struct {
	ID string `json:"id,omitempty"`
	// Name is mandatory
	Name string `json:"name"`
	// Description is optional
	Description string `json:"description,omitempty"`

	// GatewayRef is mandatory and associates NSX-T Edge Gateway with this Load Balancer Pool.
	GatewayRef OpenApiReference `json:"gatewayRef"`

	// Enabled defines if the Pool is enabled
	Enabled *bool `json:"enabled,omitempty"`

	// Algorithm for choosing a member within the pools list of available members for each new connection.
	// Default value is LEAST_CONNECTIONS
	// Supported algorithms are:
	// * LEAST_CONNECTIONS
	// * ROUND_ROBIN
	// * CONSISTENT_HASH (uses Source IP Address hash)
	// * FASTEST_RESPONSE
	// * LEAST_LOAD
	// * FEWEST_SERVERS
	// * RANDOM
	// * FEWEST_TASKS
	// * CORE_AFFINITY
	Algorithm string `json:"algorithm,omitempty"`

	// DefaultPort defines destination server port used by the traffic sent to the member.
	DefaultPort *int `json:"defaultPort,omitempty"`

	// GracefulTimeoutPeriod sets maximum time (in minutes) to gracefully disable a member. Virtual service waits for the
	// specified time before terminating the existing connections to the pool members that are disabled.
	//
	// Special values: 0 represents Immediate, -1 represents Infinite.
	GracefulTimeoutPeriod *int `json:"gracefulTimeoutPeriod,omitempty"`

	// PassiveMonitoringEnabled sets if client traffic should be used to check if pool member is up or down.
	PassiveMonitoringEnabled *bool `json:"passiveMonitoringEnabled,omitempty"`

	// HealthMonitors check member servers health. It can be monitored by using one or more health monitors. Active
	// monitors generate synthetic traffic and mark a server up or down based on the response.
	HealthMonitors []NsxtAlbPoolHealthMonitor `json:"healthMonitors,omitempty"`

	// Members field defines list of destination servers which are used by the Load Balancer Pool to direct load balanced
	// traffic.
	//
	// Note. Only one of Members or MemberGroupRef can be specified
	Members []NsxtAlbPoolMember `json:"members,omitempty"`

	// MemberGroupRef contains reference to the Edge Firewall Group (`types.NsxtFirewallGroup`)
	// representing destination servers which are used by the Load Balancer Pool to direct load
	// balanced traffic.
	//
	// This field is only available in VCD 10.4.1+ (v37.1+)
	// Note. Only one of Members or MemberGroupRef can be specified
	MemberGroupRef *OpenApiReference `json:"memberGroupRef,omitempty"`

	// CaCertificateRefs point to root certificates to use when validating certificates presented by the pool members.
	CaCertificateRefs []OpenApiReference `json:"caCertificateRefs,omitempty"`

	// CommonNameCheckEnabled specifies whether to check the common name of the certificate presented by the pool member.
	// This cannot be enabled if no caCertificateRefs are specified.
	CommonNameCheckEnabled *bool `json:"commonNameCheckEnabled,omitempty"`

	// DomainNames holds a list of domain names which will be used to verify the common names or subject alternative
	// names presented by the pool member certificates. It is performed only when common name check
	// (CommonNameCheckEnabled) is enabled. If common name check is enabled, but domain names are not specified then the
	// incoming host header will be used to check the certificate.
	DomainNames []string `json:"domainNames,omitempty"`

	// PersistenceProfile of a Load Balancer Pool. Persistence profile will ensure that the same user sticks to the same
	// server for a desired duration of time. If the persistence profile is unmanaged by Cloud Director, updates that
	// leave the values unchanged will continue to use the same unmanaged profile. Any changes made to the persistence
	// profile will cause Cloud Director to switch the pool to a profile managed by Cloud Director.
	PersistenceProfile *NsxtAlbPoolPersistenceProfile `json:"persistenceProfile,omitempty"`

	// MemberCount is a read only value that reports number of members added
	MemberCount int `json:"memberCount,omitempty"`

	// EnabledMemberCount is a read only value that reports number of enabled members
	EnabledMemberCount int `json:"enabledMemberCount,omitempty"`

	// UpMemberCount is a read only value that reports number of members that are serving traffic
	UpMemberCount int `json:"upMemberCount,omitempty"`

	// HealthMessage shows a pool health status (e.g. "The pool is unassigned.")
	HealthMessage string `json:"healthMessage,omitempty"`

	// VirtualServiceRefs holds list of Load Balancer Virtual Services associated with this Load balancer Pool.
	VirtualServiceRefs []OpenApiReference `json:"virtualServiceRefs,omitempty"`

	// SslEnabled is required when CA Certificates are used starting with API V37.0
	SslEnabled *bool `json:"sslEnabled,omitempty"`
}

NsxtAlbPool defines configuration of a single NSX-T ALB Pool. Pools maintain the list of servers assigned to them and perform health monitoring, load balancing, persistence. A pool may only be used or referenced by only one virtual service at a time.

type NsxtAlbPoolHealthMonitor added in v2.14.0

type NsxtAlbPoolHealthMonitor struct {
	Name string `json:"name,omitempty"`
	// SystemDefined is a boolean value
	SystemDefined bool `json:"systemDefined,omitempty"`
	// Type
	// * HTTP - HTTP request/response is used to validate health.
	// * HTTPS - Used against HTTPS encrypted web servers to validate health.
	// * TCP - TCP connection is used to validate health.
	// * UDP - A UDP datagram is used to validate health.
	// * PING - An ICMP ping is used to validate health.
	Type string `json:"type"`
}

NsxtAlbPoolHealthMonitor checks member servers health. Active monitor generates synthetic traffic and mark a server up or down based on the response.

type NsxtAlbPoolMember added in v2.14.0

type NsxtAlbPoolMember struct {
	// Enabled defines if member is enabled (will receive incoming requests) or not
	Enabled bool `json:"enabled"`
	// IpAddress of the Load Balancer Pool member.
	IpAddress string `json:"ipAddress"`

	// Port number of the Load Balancer Pool member. If unset, the port that the client used to connect will be used.
	Port int `json:"port,omitempty"`

	// Ratio of selecting eligible servers in the pool.
	Ratio *int `json:"ratio,omitempty"`

	// MarkedDownBy gives the names of the health monitors that marked the member as down when it is DOWN. If a monitor
	// cannot be determined, the value will be UNKNOWN.
	MarkedDownBy []string `json:"markedDownBy,omitempty"`

	// HealthStatus of the pool member. Possible values are:
	// * UP - The member is operational
	// * DOWN - The member is down
	// * DISABLED - The member is disabled
	// * UNKNOWN - The state is unknown
	HealthStatus string `json:"healthStatus,omitempty"`

	// DetailedHealthMessage contains non-localized detailed message on the health of the pool member.
	DetailedHealthMessage string `json:"detailedHealthMessage,omitempty"`
}

NsxtAlbPoolMember defines a single destination server which is used by the Load Balancer Pool to direct load balanced traffic.

type NsxtAlbPoolPersistenceProfile added in v2.14.0

type NsxtAlbPoolPersistenceProfile struct {
	// Name field is tricky. It remains empty in some case, but if it is sent it can become computed.
	// (e.g. setting 'CUSTOM_HTTP_HEADER' results in value being
	// 'VCD-LoadBalancer-3510eae9-53bb-49f1-b7aa-7aedf5ce3a77-CUSTOM_HTTP_HEADER')
	Name string `json:"name,omitempty"`

	// Type of persistence strategy to use. Supported values are:
	//  * CLIENT_IP - The clients IP is used as the identifier and mapped to the server
	//  * HTTP_COOKIE - Load Balancer inserts a cookie into HTTP responses. Cookie name must be provided as value
	//  * CUSTOM_HTTP_HEADER - Custom, static mappings of header values to specific servers are used. Header name must be
	// provided as value
	//  * APP_COOKIE - Load Balancer reads existing server cookies or URI embedded data such as JSessionID. Cookie name
	// must be provided as value
	//  * TLS - Information is embedded in the client's SSL/TLS ticket ID. This will use default system profile
	// System-Persistence-TLS
	Type string `json:"type,omitempty"`

	// Value of attribute based on selected persistence type.
	// This is required for HTTP_COOKIE, CUSTOM_HTTP_HEADER and APP_COOKIE persistence types.
	//
	// HTTP_COOKIE, APP_COOKIE must have cookie name set as the value and CUSTOM_HTTP_HEADER must have header name set as
	// the value.
	Value string `json:"value,omitempty"`
}

NsxtAlbPoolPersistenceProfile holds Persistence Profile of a Load Balancer Pool. Persistence profile will ensure that the same user sticks to the same server for a desired duration of time. If the persistence profile is unmanaged by Cloud Director, updates that leave the values unchanged will continue to use the same unmanaged profile. Any changes made to the persistence profile will cause Cloud Director to switch the pool to a profile managed by Cloud Director.

type NsxtAlbServiceEngineGroup added in v2.13.0

type NsxtAlbServiceEngineGroup struct {
	// ID of the Service Engine Group
	ID string `json:"id,omitempty"`
	// Name of the Service Engine Group
	Name string `json:"name"`
	// Description of the Service Engine Group
	Description string `json:"description"`
	// ServiceEngineGroupBacking holds backing details that uniquely identifies a Load Balancer Service Engine Group
	// configured within a load balancer cloud.
	ServiceEngineGroupBacking ServiceEngineGroupBacking `json:"serviceEngineGroupBacking"`
	// HaMode defines High Availability Mode for Service Engine Group
	// * ELASTIC_N_PLUS_M_BUFFER - Service Engines will scale out to N active nodes with M nodes as buffer.
	// * ELASTIC_ACTIVE_ACTIVE - Active-Active with scale out.
	// * LEGACY_ACTIVE_STANDBY - Traditional single Active-Standby configuration
	HaMode string `json:"haMode,omitempty"`
	// ReservationType can be `DEDICATED` or `SHARED`
	// * DEDICATED - Dedicated to a single Edge Gateway and can only be assigned to a single Edge Gateway
	// * SHARED - Shared between multiple Edge Gateways. Can be assigned to multiple Edge Gateways
	ReservationType string `json:"reservationType"`
	// MaxVirtualServices holds  maximum number of virtual services supported on the Load Balancer Service Engine Group
	MaxVirtualServices *int `json:"maxVirtualServices,omitempty"`
	// NumDeployedVirtualServices shows number of virtual services currently deployed on the Load Balancer Service Engine
	// Group
	NumDeployedVirtualServices *int `json:"numDeployedVirtualServices,omitempty"`
	// ReservedVirtualServices holds number of virtual services already reserved on the Load Balancer Service Engine Group.
	// This value is the sum of the guaranteed virtual services given to Edge Gateways assigned to the Load Balancer
	// Service Engine Group.
	ReservedVirtualServices *int `json:"reservedVirtualServices,omitempty"`
	// OverAllocated indicates whether the maximum number of virtual services supported on the Load Balancer Service
	// Engine Group has been surpassed by the current number of reserved virtual services.
	OverAllocated *bool `json:"overAllocated,omitempty"`
	// SupportedFeatureSet was added in VCD 10.4.0 (v37.0) as substitute of NsxtAlbController.LicenseType.
	// Possible values are: "STANDARD", "PREMIUM".
	SupportedFeatureSet string `json:"supportedFeatureSet,omitempty"`
}

NsxtAlbServiceEngineGroup provides virtual service management capabilities for tenants. This entity can be created by referencing a backing importable service engine group - NsxtAlbImportableServiceEngineGroups.

A service engine group is an isolation domain that also defines shared service engine properties, such as size, network access, and failover. Resources in a service engine group can be used for different virtual services, depending on your tenant needs. These resources cannot be shared between different service engine groups.

type NsxtAlbServiceEngineGroupAssignment added in v2.14.0

type NsxtAlbServiceEngineGroupAssignment struct {
	ID string `json:"id,omitempty"`
	// GatewayRef contains reference to Edge Gateway
	GatewayRef *OpenApiReference `json:"gatewayRef"`
	// ServiceEngineGroupRef contains a reference to Service Engine Group
	ServiceEngineGroupRef *OpenApiReference `json:"serviceEngineGroupRef"`
	// GatewayOrgRef optional Org reference for gateway
	GatewayOrgRef *OpenApiReference `json:"gatewayOrgRef,omitempty"`
	// GatewayOwnerRef can be a VDC or VDC group
	GatewayOwnerRef    *OpenApiReference `json:"gatewayOwnerRef,omitempty"`
	MaxVirtualServices *int              `json:"maxVirtualServices,omitempty"`
	MinVirtualServices *int              `json:"minVirtualServices,omitempty"`
	// NumDeployedVirtualServices is a read only value
	NumDeployedVirtualServices int `json:"numDeployedVirtualServices,omitempty"`
}

NsxtAlbServiceEngineGroupAssignment configures Service Engine Group assignments to Edge Gateway. The only mandatory fields are `GatewayRef` and `ServiceEngineGroupRef`. `MinVirtualServices` and `MaxVirtualServices` are only available for SHARED Service Engine Groups.

type NsxtAlbVirtualService added in v2.14.0

type NsxtAlbVirtualService struct {
	ID string `json:"id,omitempty"`

	// Name contains meaningful name
	Name string `json:"name,omitempty"`

	// Description is optional
	Description string `json:"description,omitempty"`

	// Enabled defines if the virtual service is enabled to accept traffic
	Enabled *bool `json:"enabled"`

	// ApplicationProfile sets protocol for load balancing by using NsxtAlbVirtualServiceApplicationProfile
	ApplicationProfile NsxtAlbVirtualServiceApplicationProfile `json:"applicationProfile"`

	// GatewayRef contains NSX-T Edge Gateway reference
	GatewayRef OpenApiReference `json:"gatewayRef"`
	//LoadBalancerPoolRef contains Pool reference
	LoadBalancerPoolRef OpenApiReference `json:"loadBalancerPoolRef"`
	// ServiceEngineGroupRef points to service engine group (which must be assigned to NSX-T Edge Gateway)
	ServiceEngineGroupRef OpenApiReference `json:"serviceEngineGroupRef"`

	// CertificateRef contains certificate reference if serving encrypted traffic
	CertificateRef *OpenApiReference `json:"certificateRef,omitempty"`

	// ServicePorts define one or more ports (or port ranges) of the virtual service
	ServicePorts []NsxtAlbVirtualServicePort `json:"servicePorts"`

	// VirtualIpAddress to be used for exposing this virtual service
	VirtualIpAddress string `json:"virtualIpAddress"`

	// IPv6VirtualIpAddress defined IPv6 address to be used for this virtual service
	// This field is only available in VCD 10.4.0 (v37.0+)
	IPv6VirtualIpAddress string `json:"ipv6VirtualIpAddress,omitempty"`

	// TransparentModeEnabled allows to configure Preserve Client IP on a Virtual Service
	// This field is only available for VCD 10.4.1+ (v37.1+)
	// Note. `types.NsxtAlbConfig.TransparentModeEnabled` must be set to `true` for this field to be
	// available.
	TransparentModeEnabled *bool `json:"transparentModeEnabled,omitempty"`

	// HealthStatus contains status of the Load Balancer Cloud. Possible values are:
	// UP - The cloud is healthy and ready to enable Load Balancer for an Edge Gateway.
	// DOWN - The cloud is in a failure state. Enabling Load balancer on an Edge Gateway may not be possible.
	// RUNNING - The cloud is currently processing. An example is if it's enabling a Load Balancer for an Edge Gateway.
	// UNAVAILABLE - The cloud is unavailable.
	// UNKNOWN - The cloud state is unknown.
	HealthStatus string `json:"healthStatus,omitempty"`

	// HealthMessage shows a pool health status (e.g. "The pool is unassigned.")
	HealthMessage string `json:"healthMessage,omitempty"`

	// DetailedHealthMessage containes a more in depth health message
	DetailedHealthMessage string `json:"detailedHealthMessage,omitempty"`
}

NsxtAlbVirtualService combines Load Balancer Pools with Service Engine Groups and exposes a virtual service on defined VIP (virtual IP address) while optionally allowing to use encrypted traffic

type NsxtAlbVirtualServiceApplicationProfile added in v2.14.0

type NsxtAlbVirtualServiceApplicationProfile struct {
	SystemDefined bool `json:"systemDefined,omitempty"`
	// Type defines Traffic
	// * HTTP
	// * HTTPS (certificate reference is mandatory)
	// * L4
	// * L4 TLS (certificate reference is mandatory)
	Type string `json:"type"`
}

NsxtAlbVirtualServiceApplicationProfile sets protocol for load balancing. Type field defines possible options.

type NsxtAlbVirtualServicePort added in v2.14.0

type NsxtAlbVirtualServicePort struct {
	// PortStart is always required
	PortStart *int `json:"portStart"`
	// PortEnd is only required if a port range is specified. For single port cases PortStart is sufficient
	PortEnd *int `json:"portEnd,omitempty"`
	// SslEnabled defines if traffic is served as secure. CertificateRef must be specified in NsxtAlbVirtualService when
	// true
	SslEnabled *bool `json:"sslEnabled,omitempty"`
	// TcpUdpProfile defines
	TcpUdpProfile *NsxtAlbVirtualServicePortTcpUdpProfile `json:"tcpUdpProfile,omitempty"`
}

NsxtAlbVirtualServicePort port (or port ranges) of the virtual service

type NsxtAlbVirtualServicePortTcpUdpProfile added in v2.14.0

type NsxtAlbVirtualServicePortTcpUdpProfile struct {
	SystemDefined bool `json:"systemDefined"`
	// Type defines L4 or L4_TLS profiles:
	// * TCP_PROXY (the only possible type when L4_TLS is used). Enabling TCP Proxy causes ALB to terminate an inbound
	// connection from a client. Any application data from the client that is destined for a server is forwarded to that
	// server over a new TCP connection. Separating (or proxying) the client-to-server connections enables ALB to provide
	// enhanced security, such as TCP protocol sanitization or DoS mitigation. It also provides better client and server
	// performance, such as maximizing client and server TCP MSS or window sizes independently and buffering server
	// responses. One must use a TCP/UDP profile with the type set to Proxy for application profiles such as HTTP.
	//
	// * TCP_FAST_PATH profile does not proxy TCP connections - rather, it directly connects clients to the
	// destination server and translates the client's destination virtual service address with the chosen destination
	// server's IP address. The client's source IP address is still translated to the Service Engine address to ensure
	// that server response traffic returns symmetrically.
	//
	// * UDP_FAST_PATH profile enables a virtual service to support UDP. Avi Vantage translates the client's destination
	// virtual service address to the destination server and rewrites the client's source IP address to the Service
	// Engine's address when forwarding the packet to the server. This ensures that server response traffic traverses
	// symmetrically through the original SE.
	Type string `json:"type"`
}

NsxtAlbVirtualServicePortTcpUdpProfile profile determines the type and settings of the network protocol that a subscribing virtual service will use. It sets a number of parameters, such as whether the virtual service is a TCP proxy versus a pass-through via fast path. A virtual service can have both TCP and UDP enabled, which is useful for protocols such as DNS or syslog.

type NsxtAppPortProfile added in v2.12.0

type NsxtAppPortProfile struct {
	ID string `json:"id,omitempty"`
	// Name must be unique per Scope
	Name        string `json:"name,omitempty"`
	Description string `json:"description,omitempty"`
	// ApplicationPorts contains one or more protocol and port definitions
	ApplicationPorts []NsxtAppPortProfilePort `json:"applicationPorts,omitempty"`
	// OrgRef must contain at least Org ID when SCOPE==TENANT
	OrgRef *OpenApiReference `json:"orgRef,omitempty"`
	// ContextEntityId must contain:
	// * NSX-T Manager URN (when scope==PROVIDER)
	// * VDC or VDC Group ID (when scope==TENANT)
	ContextEntityId string `json:"contextEntityId,omitempty"`
	// Scope can be one of the following:
	// * SYSTEM - Read-only (The ones that are provided by SYSTEM). Constant `types.ApplicationPortProfileScopeSystem`
	// * PROVIDER - Created by Provider on a particular network provider (NSX-T manager). Constant `types.ApplicationPortProfileScopeProvider`
	// * TENANT (Created by Tenant at Org VDC level). Constant `types.ApplicationPortProfileScopeTenant`
	//
	// When scope==PROVIDER:
	//   OrgRef is not required
	//   ContextEntityId must have NSX-T Managers URN
	// When scope==TENANT
	//   OrgRef ID must be specified
	//   ContextEntityId must be set to VDC or VDC group URN
	Scope string `json:"scope,omitempty"`
}

NsxtAppPortProfile allows user to set custom application port definitions so that these can later be used in NSX-T Firewall rules in combination with IP Sets and Security Groups.

type NsxtAppPortProfilePort added in v2.12.0

type NsxtAppPortProfilePort struct {
	// Protocol can be one of the following:
	// * "ICMPv4"
	// * "ICMPv6"
	// * "TCP"
	// * "UDP"
	Protocol string `json:"protocol"`
	// DestinationPorts is optional, but can define list of ports ("1000", "1500") or port ranges ("1200-1400")
	DestinationPorts []string `json:"destinationPorts,omitempty"`
}

NsxtAppPortProfilePort allows user to set protocol and one or more ports

type NsxtDnsForwarderZoneConfig added in v2.22.0

type NsxtDnsForwarderZoneConfig struct {
	// The unique id of the DNS forwarder zone. If value is set,
	// the zone is updated; if not, a new zone is created.
	ID string `json:"id,omitempty"`
	// User friendly name for the zone
	DisplayName string `json:"displayName,omitempty"`
	// DNS servers to which the DNS request needs to be forwarded.
	UpstreamServers []string `json:"upstreamServers,omitempty"`
	// List of domain names on which conditional forwarding is based. This
	// field is required if the DNS Zone is being used for a conditional forwarder.
	// This field will also be used for conditional reverse lookup. This field should
	// not be set if the zone is used as default forwarder zone.
	DnsDomainNames []string `json:"dnsDomainNames,omitempty"`
}

type NsxtEdgeCluster added in v2.10.0

type NsxtEdgeCluster struct {
	// ID contains edge cluster ID (UUID format)
	ID          string `json:"id"`
	Name        string `json:"name"`
	Description string `json:"description"`
	// NodeCount shows number of nodes in the edge cluster
	NodeCount int `json:"nodeCount"`
	// NodeType usually holds "EDGE_NODE"
	NodeType string `json:"nodeType"`
	// DeploymentType (e.g. "VIRTUAL_MACHINE")
	DeploymentType string `json:"deploymentType"`
}

NsxtEdgeCluster is a struct to represent logical grouping of NSX-T Edge virtual machines.

type NsxtEdgeGatewayDhcpForwarder added in v2.21.0

type NsxtEdgeGatewayDhcpForwarder struct {
	Enabled     bool         `json:"enabled"`
	DhcpServers []string     `json:"dhcpServers"`
	Version     VersionField `json:"version,omitempty"`
}

NsxtEdgeGatewayDhcpForwarder provides DHCP forwarding configuration on an Edge Gateway by defining DHCP servers

type NsxtEdgeGatewayDns added in v2.22.0

type NsxtEdgeGatewayDns struct {
	// Status of the DNS forwarder
	Enabled bool `json:"enabled"`
	// The IP on which the DNS forwarder listens. If the Edge Gateway has a dedicated
	// external network, this can be changed.
	ListenerIp string `json:"listenerIp,omitempty"`
	// Whether an SNAT rule exists for the DNS forwarder or not. In NAT
	// routed environments, an SNAT rule is required for the Edge DNS forwarder
	// to send traffic to an upstream server. In fully routed environments,
	// this is not needed if the listener IP is on an advertised subnet.
	SnatRuleEnabled bool `json:"snatRuleEnabled,omitempty"`
	// The external IP address of the SNAT rule. This property only applies if the
	// Edge Gateway is connected to a Provider Gateway using IP Spaces.
	SnatRuleExternalIpAddress string `json:"snatRuleExternalIpAddress,omitempty"`
	// The default forwarder zone to use if there’s no matching domain in the conditional forwarder zone.
	DefaultForwarderZone *NsxtDnsForwarderZoneConfig `json:"defaultForwarderZone,omitempty"`
	// The list of forwarder zones with its matching DNS domains.
	ConditionalForwarderZones []*NsxtDnsForwarderZoneConfig `json:"conditionalForwarderZones,omitempty"`
	Version                   *VersionField                 `json:"version,omitempty"`
}

NsxtEdgeGatewayDns is used for configuring the DNS forwarder for a specific Edge Gateway

type NsxtEdgeGatewayQos added in v2.20.0

type NsxtEdgeGatewayQos struct {
	EgressProfile  *OpenApiReference `json:"egressProfile"`
	IngressProfile *OpenApiReference `json:"ingressProfile"`
}

NsxtEdgeGatewayQos provides Rate Limiting (QoS) configuration on an Edge Gateway by defining QoS profiles in ingress and egress directions.

Note. Sending `null` for either ingressProfile or egressProfile will reset the value to default (unlimited)

type NsxtEdgeGatewayQosProfile added in v2.20.0

type NsxtEdgeGatewayQosProfile struct {
	// ID of the gateway QoS profile.
	ID string `json:"id"`

	DisplayName string `json:"displayName"`
	Description string `json:"description"`

	//BurstSize defines burst size in bytes.
	BurstSize int `json:"burstSize"`

	// CommittedBandwidth defines committed bandwidth in both directions specificd in Mb/s.
	// Bandwidth is limited to line rate when the value configured is greater than line rate.
	CommittedBandwidth int `json:"committedBandwidth"`

	// ExcessAction defines action on traffic exceeding bandwidth.
	ExcessAction string `json:"excessAction"`

	// NsxTManagerRef contains reference to the originating NSX-T manager
	NsxTManagerRef *OpenApiReference `json:"nsxTManagerRef"`
}

NsxtEdgeGatewayQosProfiles defines a Gateway QoS Profile Object (structure comes from NSX-T) This is a read-only entity in VCD

type NsxtEdgeGatewaySlaacProfile added in v2.21.0

type NsxtEdgeGatewaySlaacProfile struct {
	Enabled bool `json:"enabled"`
	// Mode is 'SLAAC' ,'DHCPv6', 'DISABLED'
	Mode string `json:"mode"`
	// DNSConfig provides additional configuration when Mode is set to 'SLAAC'
	DNSConfig NsxtEdgeGatewaySlaacProfileDNSConfig `json:"dnsConfig,omitempty"`
}

NsxtEdgeGatewaySlaacProfile provides configuration for NSX-T Edge Gateway IPv6 configuration

type NsxtEdgeGatewaySlaacProfileDNSConfig added in v2.21.0

type NsxtEdgeGatewaySlaacProfileDNSConfig struct {
	DNSServerIpv6Addresses []string `json:"dnsServerIpv6Addresses,omitempty"`
	DomainNames            []string `json:"domainNames,omitempty"`
}

NsxtEdgeGatewaySlaacProfileDNSConfig contains additional NSX-T Edge Gateway IPv6 configuration when it is configured for 'SLAAC' mode

type NsxtEdgeGatewayStaticRoute added in v2.21.0

type NsxtEdgeGatewayStaticRoute struct {
	// ID of this static route. On updates, the ID is required for the object, while for create a
	// new ID will be generated. This ID is not a VCD URN
	ID   string `json:"id,omitempty"`
	Name string `json:"name"`
	// Description
	Description string `json:"description,omitempty"`
	// NetworkCidr contains network prefix in CIDR format. Both IPv4 and IPv6 formats are supported
	NetworkCidr string `json:"networkCidr"`
	// NextHops contains the list of next hops to use within the static route. List must contain at
	// least one valid next hop
	NextHops []NsxtEdgeGatewayStaticRouteNextHops `json:"nextHops"`

	// SystemOwned contains a read-only flag whether this static route is managed by the system
	SystemOwned *bool `json:"systemOwned,omitempty"`
	// Version property describes the current version of the entity. To prevent clients from
	// overwriting each other's changes, update operations must include the version which can be
	// obtained by issuing a GET operation. If the version number on an update call is missing, the
	// operation will be rejected. This is only needed on update calls.
	Version string `json:"version,omitempty"`
}

NsxtEdgeGatewayStaticRoute provides configuration structure for NSX-T Edge Gateway static route configuration

type NsxtEdgeGatewayStaticRouteNextHopScope added in v2.21.0

type NsxtEdgeGatewayStaticRouteNextHopScope struct {
	// ID of this scoped entity.
	ID string `json:"id"`
	// Name of the scoped entity.
	Name string `json:"name"`
	// ScopeType of this entity. This can be an network or a system-owned entity if the static
	// route is SYSTEM_OWNED. Supported types are:
	// * NETWORK
	// * SYSTEM_OWNED
	ScopeType string `json:"scopeType"`
}

NsxtEdgeGatewayStaticRouteNextHopScope for a single NsxtEdgeGatewayStaticRouteNextHops entry

type NsxtEdgeGatewayStaticRouteNextHops added in v2.21.0

type NsxtEdgeGatewayStaticRouteNextHops struct {
	// AdminDistance for the next hop
	AdminDistance int `json:"adminDistance"`
	// IPAddress for next hop gateway IP Address for the static route.
	IPAddress string `json:"ipAddress"`
	// Scope holds a reference to an entity where the next hop of a static route is reachable. In
	// general, the reference should be an org vDC network or segment backed external network, but
	// scope could also reference a SYSTEM_OWNED entity if the next hop is configured outside of
	// VCD.
	Scope *NsxtEdgeGatewayStaticRouteNextHopScope `json:"scope,omitempty"`
}

NsxtEdgeGatewayStaticRouteNextHops sets one next hop entry for the list

type NsxtFirewallGroup added in v2.12.0

type NsxtFirewallGroup struct {
	// ID contains Firewall Group ID (URN format)
	// e.g. urn:vcloud:firewallGroup:d7f4e0b4-b83f-4a07-9f22-d242c9c0987a
	ID string `json:"id,omitempty"`
	// Name of Firewall Group. Name are unique per 'Type'. There cannot be two SECURITY_GROUP or two
	// IP_SET objects with the same name, but there can be one object of Type SECURITY_GROUP and one
	// of Type IP_SET named the same.
	Name        string `json:"name"`
	Description string `json:"description"`
	// IP Addresses included in the group. This is only applicable for IP_SET Firewall Groups. This
	// can support IPv4 and IPv6 addresses in single, range, and CIDR formats.
	// E.g [
	//     "12.12.12.1",
	//     "10.10.10.0/24",
	//     "11.11.11.1-11.11.11.2",
	//     "2001:db8::/48",
	//	   "2001:db6:0:0:0:0:0:0-2001:db6:0:ffff:ffff:ffff:ffff:ffff",
	// ],
	IpAddresses []string `json:"ipAddresses,omitempty"`

	// Members define list of Org VDC networks belonging to this Firewall Group (only for Security
	// groups )
	Members []OpenApiReference `json:"members,omitempty"`

	// VmCriteria (VCD 10.3+) defines list of dynamic criteria that determines whether a VM belongs
	// to a dynamic firewall group. A VM needs to meet at least one criteria to belong to the
	// firewall group. In other words, the logical AND is used for rules within a single criteria
	// and the logical OR is used in between each criteria. This is only applicable for Dynamic
	// Security Groups (VM_CRITERIA Firewall Groups).
	VmCriteria []NsxtFirewallGroupVmCriteria `json:"vmCriteria,omitempty"`

	// OwnerRef replaces EdgeGatewayRef in API V35.0+ and can accept both - NSX-T Edge Gateway or a
	// VDC group ID
	// Sample VDC Group URN - urn:vcloud:vdcGroup:89a53000-ef41-474d-80dc-82431ff8a020
	// Sample Edge Gateway URN - urn:vcloud:gateway:71df3e4b-6da9-404d-8e44-0865751c1c38
	//
	// Note. Using API V34.0 Firewall Groups can be created for VDC groups, but on a GET operation
	// there will be no VDC group ID returned.
	OwnerRef *OpenApiReference `json:"ownerRef,omitempty"`

	// EdgeGatewayRef is a deprecated field (use OwnerRef) for setting value, but during read the
	// value is only populated in this field (not OwnerRef)
	EdgeGatewayRef *OpenApiReference `json:"edgeGatewayRef,omitempty"`

	// Type is deprecated starting with API 36.0 (VCD 10.3+)
	Type string `json:"type,omitempty"`

	// TypeValue replaces Type starting with API 36.0 (VCD 10.3+) and can be one of:
	// SECURITY_GROUP, IP_SET, VM_CRITERIA(VCD 10.3+ only)
	// Constants `types.FirewallGroupTypeSecurityGroup`, `types.FirewallGroupTypeIpSet`,
	// `types.FirewallGroupTypeVmCriteria` can be used to set the value.
	TypeValue string `json:"typeValue,omitempty"`
}

NsxtFirewallGroup allows users to set either SECURITY_GROUP or IP_SET which is defined by Type field. SECURITY_GROUP (constant types.FirewallGroupTypeSecurityGroup) is a dynamic structure which allows users to add Routed Org VDC networks

IP_SET (constant FirewallGroupTypeIpSet) allows users to enter static IPs and later on firewall rules can be created both of these objects

When the type is SECURITY_GROUP 'Members' field is used to specify Org VDC networks When the type is IP_SET 'IpAddresses' field is used to specify IP addresses or ranges field is used

type NsxtFirewallGroupMemberVms added in v2.12.0

type NsxtFirewallGroupMemberVms struct {
	VmRef *OpenApiReference `json:"vmRef"`
	// VappRef will be empty if it is a standalone VM (although hidden vApp exists)
	VappRef *OpenApiReference `json:"vappRef"`
	VdcRef  *OpenApiReference `json:"vdcRef"`
	OrgRef  *OpenApiReference `json:"orgRef"`
}

NsxtFirewallGroupMemberVms is a structure to read NsxtFirewallGroup associated VMs when its type is SECURITY_GROUP

type NsxtFirewallGroupVmCriteria added in v2.16.0

type NsxtFirewallGroupVmCriteria struct {
	// VmCriteria is a list of rules where each rule represents boolean AND for matching VMs
	VmCriteriaRule []NsxtFirewallGroupVmCriteriaRule `json:"rules,omitempty"`
}

NsxtFirewallGroupVmCriteria defines list of rules where criteria represents boolean OR for matching There can be up to 3 criteria

type NsxtFirewallGroupVmCriteriaRule added in v2.16.0

type NsxtFirewallGroupVmCriteriaRule struct {
	AttributeType  string `json:"attributeType,omitempty"`
	AttributeValue string `json:"attributeValue,omitempty"`
	Operator       string `json:"operator,omitempty"`
}

NsxtFirewallGroupVmCriteriaRule defines a single rule for matching VM There can be up to 4 rules in a single criteria

type NsxtFirewallRule added in v2.12.0

type NsxtFirewallRule struct {
	// ID contains UUID (e.g. d0bf5d51-f83a-489a-9323-1661024874b8)
	ID string `json:"id,omitempty"`
	// Name - API does not enforce uniqueness
	Name string `json:"name"`
	// Action 'ALLOW', 'DROP'
	Action string `json:"action"`
	// Enabled allows to enable or disable the rule
	Enabled bool `json:"enabled"`
	// SourceFirewallGroups contains a list of references to Firewall Groups. Empty list means 'Any'
	SourceFirewallGroups []OpenApiReference `json:"sourceFirewallGroups,omitempty"`
	// DestinationFirewallGroups contains a list of references to Firewall Groups. Empty list means 'Any'
	DestinationFirewallGroups []OpenApiReference `json:"destinationFirewallGroups,omitempty"`
	// ApplicationPortProfiles contains a list of references to Application Port Profiles. Empty list means 'Any'
	ApplicationPortProfiles []OpenApiReference `json:"applicationPortProfiles,omitempty"`
	// IpProtocol 'IPV4', 'IPV6', 'IPV4_IPV6'
	IpProtocol string `json:"ipProtocol"`
	Logging    bool   `json:"logging"`
	// Direction 'IN_OUT', 'OUT', 'IN'
	Direction string `json:"direction"`
	// Version of firewall rule. Must not be set when creating.
	Version *struct {
		// Version is incremented after each update
		Version *int `json:"version,omitempty"`
	} `json:"version,omitempty"`
}

NsxtFirewallRule defines single NSX-T Firewall Rule

type NsxtFirewallRuleContainer added in v2.12.0

type NsxtFirewallRuleContainer struct {
	// SystemRules contain ordered list of system defined edge firewall rules. System rules are applied before user
	// defined rules in the order in which they are returned.
	SystemRules []*NsxtFirewallRule `json:"systemRules"`
	// DefaultRules contain ordered list of user defined edge firewall rules. Users are allowed to add/modify/delete rules
	// only to this list.
	DefaultRules []*NsxtFirewallRule `json:"defaultRules"`
	// UserDefinedRules ordered list of default edge firewall rules. Default rules are applied after the user defined
	// rules in the order in which they are returned.
	UserDefinedRules []*NsxtFirewallRule `json:"userDefinedRules"`
}

NsxtFirewallRuleContainer wraps NsxtFirewallRule for user-defined and default and system Firewall Rules suitable for API. Only UserDefinedRules are writeable. Others are read-only.

type NsxtGlobalDefaultSegmentProfileTemplate added in v2.22.0

type NsxtGlobalDefaultSegmentProfileTemplate struct {
	VappNetworkSegmentProfileTemplateRef *OpenApiReference `json:"vappNetworkSegmentProfileTemplateRef,omitempty"`
	VdcNetworkSegmentProfileTemplateRef  *OpenApiReference `json:"vdcNetworkSegmentProfileTemplateRef,omitempty"`
}

NsxtGlobalDefaultSegmentProfileTemplate is a structure that sets VCD global default Segment Profile Templates

type NsxtImportableSwitch added in v2.11.0

type NsxtImportableSwitch = OpenApiReference

NsxtImportableSwitch is a type alias with better name for holding NSX-T Segments (Logical Switches) which can be used to back NSX-T imported Org VDC network

type NsxtIpSecVpnTunnel added in v2.12.0

type NsxtIpSecVpnTunnel struct {
	// ID unique for IPsec VPN tunnel. On updates, the ID is required for the tunnel, while for create a new ID will be
	// generated.
	ID string `json:"id,omitempty"`
	// Name for the IPsec VPN Tunnel
	Name string `json:"name"`
	// Description for the IPsec VPN Tunnel
	Description string `json:"description,omitempty"`
	// Enabled describes whether the IPsec VPN Tunnel is enabled or not. The default is true.
	Enabled bool `json:"enabled"`
	// LocalEndpoint which corresponds to the Edge Gateway the IPsec VPN Tunnel is being configured on. Local Endpoint
	// requires an IP. That IP must be sub-allocated to the edge gateway
	LocalEndpoint NsxtIpSecVpnTunnelLocalEndpoint `json:"localEndpoint"`
	// RemoteEndpoint corresponds to the device on the remote site terminating the VPN tunnel
	RemoteEndpoint NsxtIpSecVpnTunnelRemoteEndpoint `json:"remoteEndpoint"`
	// PreSharedKey is key used for authentication. It must be the same on the other end of IPsec VPN Tunnel
	PreSharedKey string `json:"preSharedKey"`
	// SecurityType is the security type used for the IPsec VPN Tunnel. If nothing is specified, this will be set to
	// DEFAULT in which the default settings in NSX will be used. For custom settings, one should use the
	// NsxtIpSecVpnTunnelSecurityProfile and UpdateTunnelConnectionProperties(), GetTunnelConnectionProperties() endpoint to
	// specify custom settings. The security type will then appropriately reflect itself as CUSTOM.
	// To revert back to system default, this field must be set to "DEFAULT"
	SecurityType string `json:"securityType,omitempty"`
	// Logging sets whether logging for the tunnel is enabled or not. The default is false.
	Logging bool `json:"logging"`

	// AuthenticationMode is authentication mode this IPsec tunnel will use to authenticate with the peer endpoint. The
	// default is a pre-shared key (PSK).
	// * PSK - A known key is shared between each site before the tunnel is established.
	// * CERTIFICATE - Incoming connections are required to present an identifying digital certificate, which VCD verifies
	// has been signed by a trusted certificate authority.
	//
	// Note. Up to version 10.3 VCD only supports PSK
	AuthenticationMode string `json:"authenticationMode,omitempty"`

	// ConnectorInitiationMode is the mode used by the local endpoint to establish an IKE Connection with the remote site.
	// The default is INITIATOR.
	// Possible values are: INITIATOR , RESPOND_ONLY , ON_DEMAND
	//
	// Note. Up to version 10.3 VCD only supports INITIATOR
	ConnectorInitiationMode string `json:"connectorInitiationMode,omitempty"`

	// CertificateRef points server certificate which will be used to secure the tunnel's local
	// endpoint. The certificate must be the end-entity certificate (leaf) for the local endpoint.
	CertificateRef *OpenApiReference `json:"certificateRef,omitempty"`

	// CaCertificateRef points to certificate authority used to verify the remote endpoint's
	// certificate. The selected CA must be a root or intermediate CA. The selected CA should be
	// able to directly verify the remote endpoint's certificate.
	CaCertificateRef *OpenApiReference `json:"caCertificateRef,omitempty"`

	// Version of IPsec VPN Tunnel configuration. Must not be set when creating, but required for updates
	Version *struct {
		// Version is incremented after each update
		Version *int `json:"version,omitempty"`
	} `json:"version,omitempty"`
}

NsxtIpSecVpnTunnel defines the IPsec VPN Tunnel configuration Some of the fields like AuthenticationMode and ConnectorInitiationMode are meant for future, because they have only one default value at the moment.

type NsxtIpSecVpnTunnelLocalEndpoint added in v2.12.0

type NsxtIpSecVpnTunnelLocalEndpoint struct {
	// LocalId is the optional local identifier for the endpoint. It is usually the same as LocalAddress
	LocalId string `json:"localId,omitempty"`
	// LocalAddress is the IPv4 Address for the endpoint. This has to be a sub-allocated IP on the Edge Gateway. This is
	// required
	LocalAddress string `json:"localAddress"`
	// LocalNetworks is the list of local networks. These must be specified in normal Network CIDR format. At least one is
	// required
	LocalNetworks []string `json:"localNetworks,omitempty"`
}

NsxtIpSecVpnTunnelLocalEndpoint which corresponds to the Edge Gateway the IPsec VPN Tunnel is being configured on. Local Endpoint requires an IP. That IP must be sub-allocated to the edge gateway

type NsxtIpSecVpnTunnelProfileDpdConfiguration added in v2.12.0

type NsxtIpSecVpnTunnelProfileDpdConfiguration struct {
	// ProbeInternal is value of the probe interval in seconds. This defines a periodic interval for DPD probes. The
	// minimum is 3 seconds and the maximum is 60 seconds.
	ProbeInterval int `json:"probeInterval"`
}

NsxtIpSecVpnTunnelProfileDpdConfiguration specifies the Dead Peer Detection Profile. This configurations determines the number of seconds to wait in time between probes to detect if an IPSec peer is alive or not. The default value for the DPD probe interval is 60 seconds.

type NsxtIpSecVpnTunnelProfileIkeConfiguration added in v2.12.0

type NsxtIpSecVpnTunnelProfileIkeConfiguration struct {
	// IkeVersion IKE Protocol Version to use.
	// The default is IKE_V2.
	//
	// Possible values are: IKE_V1 , IKE_V2 , IKE_FLEX
	IkeVersion string `json:"ikeVersion"`
	// EncryptionAlgorithms contains list of Encryption algorithms for IKE. This is used during IKE negotiation.
	// Default is AES_128.
	//
	// Possible values are: AES_128 , AES_256 , AES_GCM_128 , AES_GCM_192 , AES_GCM_256
	EncryptionAlgorithms []string `json:"encryptionAlgorithms"`
	// DigestAlgorithms contains list of Digest algorithms - secure hashing algorithms to use during the IKE negotiation.
	//
	// Default is SHA2_256.
	//
	// Possible values are: SHA1 , SHA2_256 , SHA2_384 , SHA2_512
	DigestAlgorithms []string `json:"digestAlgorithms"`
	// DhGroups contains list of Diffie-Hellman groups to be used if Perfect Forward Secrecy is enabled. These are
	// cryptography schemes that allows the peer site and the edge gateway to establish a shared secret over an insecure
	// communications channel
	//
	// Default is GROUP14.
	//
	// Possible values are: GROUP2, GROUP5, GROUP14, GROUP15, GROUP16, GROUP19, GROUP20, GROUP21
	DhGroups []string `json:"dhGroups"`
	// SaLifeTime is the Security Association life time in seconds. It is number of seconds before the IPsec tunnel needs
	// to reestablish
	//
	// Default is 86400 seconds (1 day).
	SaLifeTime *int `json:"saLifeTime"`
}

NsxtIpSecVpnTunnelProfileIkeConfiguration is the Internet Key Exchange (IKE) profiles provide information about the algorithms that are used to authenticate, encrypt, and establish a shared secret between network sites when you establish an IKE tunnel.

Note. While quite a few fields accepts a []string it actually supports single values only.

type NsxtIpSecVpnTunnelProfileTunnelConfiguration added in v2.12.0

type NsxtIpSecVpnTunnelProfileTunnelConfiguration struct {
	// PerfectForwardSecrecyEnabled enabled or disabled. PFS (Perfect Forward Secrecy) ensures the same key will not be
	// generated and used again, and because of this, the VPN peers negotiate a new Diffie-Hellman key exchange. This
	// would ensure if a hacker\criminal was to compromise the private key, they would only be able to access data in
	// transit protected by that key. Any future data will not be compromised, as future data would not be associated
	// with that compromised key. Both sides of the VPN must be able to support PFS in order for PFS to work.
	//
	// The default value is true.
	PerfectForwardSecrecyEnabled bool `json:"perfectForwardSecrecyEnabled"`
	// DfPolicy Policy for handling defragmentation bit. The default is COPY.
	//
	// Possible values are: COPY, CLEAR
	// * COPY Copies the defragmentation bit from the inner IP packet to the outer packet.
	// * CLEAR Ignores the defragmentation bit present in the inner packet.
	DfPolicy string `json:"dfPolicy"`

	// EncryptionAlgorithms contains list of Encryption algorithms to use in IPSec tunnel establishment.
	// Default is AES_GCM_128.
	// * NO_ENCRYPTION_AUTH_AES_GMAC_XX (XX is 128, 192, 256) enables authentication on input data without encryption.
	// If one of these options is used, digest algorithm should be empty.
	//
	// Possible values are: AES_128, AES_256, AES_GCM_128, AES_GCM_192, AES_GCM_256, NO_ENCRYPTION_AUTH_AES_GMAC_128,
	// NO_ENCRYPTION_AUTH_AES_GMAC_192, NO_ENCRYPTION_AUTH_AES_GMAC_256, NO_ENCRYPTION
	EncryptionAlgorithms []string `json:"encryptionAlgorithms"`

	// DigestAlgorithms contains list of Digest algorithms to be used for message digest. The default digest algorithm is
	// implicitly covered by default encryption algorithm AES_GCM_128.
	//
	// Possible values are: SHA1 , SHA2_256 , SHA2_384 , SHA2_512
	// Note. Only one value can be set inside the slice
	DigestAlgorithms []string `json:"digestAlgorithms"`

	// DhGroups contains list of Diffie-Hellman groups to be used is PFS is enabled. Default is GROUP14.
	//
	// Possible values are: GROUP2, GROUP5, GROUP14, GROUP15, GROUP16, GROUP19, GROUP20, GROUP21
	// Note. Only one value can be set inside the slice
	DhGroups []string `json:"dhGroups"`

	// SaLifeTime is the Security Association life time in seconds.
	//
	// Default is 3600 seconds.
	SaLifeTime *int `json:"saLifeTime"`
}

NsxtIpSecVpnTunnelProfileTunnelConfiguration adjusts IPsec VPN Tunnel settings

Note. While quite a few fields accepts a []string it actually supports single values only.

type NsxtIpSecVpnTunnelRemoteEndpoint added in v2.12.0

type NsxtIpSecVpnTunnelRemoteEndpoint struct {
	// This Remote ID is needed to uniquely identify the peer site. If the remote ID is not set, it
	// will default to the remote IP address. The requirement for remote id depends on the
	// authentication mode for the tunnel:
	// * PSK - The Remote ID is the public IP Address of the remote device terminating the VPN
	// Tunnel. When NAT is configured on the Remote ID, enter the private IP Address of the Remote
	// Site.
	// * CERTIFICATE - The remote ID needs to match the certificate SAN (Subject Alternative Name)
	// if available. If the remote certificate does not contain a SAN, the remote ID must match the
	// the distinguished name of the certificate used to secure the remote endpoint (for example,
	// C=US,ST=Massachusetts,O=VMware,OU=VCD,CN=Edge1).
	RemoteId string `json:"remoteId,omitempty"`
	// RemoteAddress is IPv4 Address of the remote endpoint on the remote site. This is the Public IPv4 Address of the
	// remote device terminating the IPsec VPN Tunnel connection. This is required
	RemoteAddress string `json:"remoteAddress"`
	// RemoteNetworks is the list of remote networks. These must be specified in normal Network CIDR format.
	// Specifying no value is interpreted as 0.0.0.0/0
	RemoteNetworks []string `json:"remoteNetworks,omitempty"`
}

NsxtIpSecVpnTunnelRemoteEndpoint corresponds to the device on the remote site terminating the VPN tunnel

type NsxtIpSecVpnTunnelSecurityProfile added in v2.12.0

type NsxtIpSecVpnTunnelSecurityProfile struct {
	// SecurityType is the security type used for the IPSec Tunnel. If nothing is specified, this will be set to DEFAULT
	// in which the default settings in NSX will be used. If CUSTOM is specified, then IKE, Tunnel, and DPD
	// configurations can be set.
	// To "RESET" configuration to DEFAULT, the NsxtIpSecVpnTunnel.SecurityType field should be changed instead of this
	SecurityType string `json:"securityType,omitempty"`
	// IkeConfiguration is the IKE Configuration to be used for the tunnel. If nothing is explicitly set, the system
	// defaults will be used.
	IkeConfiguration NsxtIpSecVpnTunnelProfileIkeConfiguration `json:"ikeConfiguration,omitempty"`
	// TunnelConfiguration contains parameters such as encryption algorithm to be used. If nothing is explicitly set,
	// the system defaults will be used.
	TunnelConfiguration NsxtIpSecVpnTunnelProfileTunnelConfiguration `json:"tunnelConfiguration,omitempty"`
	// DpdConfiguration contains Dead Peer Detection configuration. If nothing is explicitly set, the system defaults
	// will be used.
	DpdConfiguration NsxtIpSecVpnTunnelProfileDpdConfiguration `json:"dpdConfiguration,omitempty"`
}

NsxtIpSecVpnTunnelSecurityProfile specifies the given security profile/connection properties of a given IP Sec VPN Tunnel, such as Dead Probe Interval and IKE settings. If a security type is set to 'CUSTOM', then ike, tunnel, and/or dpd configurations can be specified. Otherwise, those fields are read only and are set to the values based on the specific security type.

type NsxtIpSecVpnTunnelStatus added in v2.12.0

type NsxtIpSecVpnTunnelStatus struct {
	// TunnelStatus gives the overall IPsec VPN Tunnel Status. If IKE is properly set and the tunnel is up, the tunnel
	// status will be UP
	TunnelStatus string `json:"tunnelStatus"`
	IkeStatus    struct {
		// IkeServiceStatus status for the actual IKE Session for the given tunnel.
		IkeServiceStatus string `json:"ikeServiceStatus"`
		// FailReason contains more details of failure if the IKE service is not UP
		FailReason string `json:"failReason"`
	} `json:"ikeStatus"`
}

NsxtIpSecVpnTunnelStatus helps to read IPsec VPN Tunnel Status

type NsxtL2VpnTunnel added in v2.22.0

type NsxtL2VpnTunnel struct {
	// ID of the tunnel
	ID string `json:"id"`
	// Name and description of the tunnel
	Name        string `json:"name"`
	Description string `json:"description"`

	// The current session mode, one of either SERVER or CLIENT.
	// * SERVER - In which the edge gateway acts as the server side of the L2 VPN tunnel and generates peer codes to distribute to client sessions.
	// * CLIENT - In which the edge gateway receives peer codes from the server side of the L2 VPN tunnel to establish a connection.
	SessionMode string `json:"sessionMode"`

	// State of the tunnel. Default is true
	Enabled bool `json:"enabled"`

	// The IP address of the local endpoint, which corresponds to the Edge Gateway the tunnel is being configured on.
	LocalEndpointIp string `json:"localEndpointIP"`

	// The IP address of the remote endpoint, which corresponds to the device on the remote site terminating the VPN tunnel.
	RemoteEndpointIp string `json:"remoteEndpointIP"`

	// The network CIDR block over which the session interfaces. Relevant only
	// for SERVER session modes. If provided, the underlying IPSec tunnel will
	// use the specified tunnel interface. If not provided, Cloud Director will
	// attempt to automatically allocate a tunnel interface.
	TunnelInterface string `json:"tunnelInterface,omitempty"`

	// This is the mode used by the local endpoint to establish an IKE Connection with the remote site. The default is INITIATOR.
	// * INITIATOR - Local endpoint initiates tunnel setup and will also respond to incoming tunnel setup requests from the peer gateway.
	// * RESPOND_ONLY - Local endpoint shall only respond to incoming tunnel setup requests, it shall not initiate the tunnel setup.
	// * ON_DEMAND - In this mode local endpoint will initiate tunnel creation once first packet matching the policy rule is received, and will also respond to incoming initiation requests.
	ConnectorInitiationMode string `json:"connectorInitiationMode"`

	// This property is a base64 encoded string of the full configuration for the tunnel,
	// generated by the server-side L2 VPN session. An L2 VPN client session must receive
	// and validate this string in order to successfully establish a tunnel, but be careful
	// sharing or storing this code since it does contain the encoded PSK.
	// Leave this property blank if this call is being used to establish a server-side session.
	PeerCode string `json:"peerCode"`

	// This is the Pre-shared key used for authentication, no specific format is required. Relevant only for SERVER session modes.
	PreSharedKey string `json:"preSharedKey"`

	// The list of OrgVDC Network entity references which are currently attached to this L2VPN tunnel.
	StretchedNetworks []EdgeL2VpnStretchedNetwork `json:"stretchedNetworks,omitempty"`

	// Whether logging for the tunnel is enabled or not.
	Logging bool `json:"logging"`

	// Version of the entity, needs to be provided on tunnel update calls, can be retrieved by getting the tunnel.
	Version VersionField `json:"version"`
}

NsxtL2VpnTunnel defines the L2 VPN Tunnel configuration

type NsxtManager added in v2.22.0

type NsxtManager struct {
	OtherAttributes struct {
	} `json:"otherAttributes"`
	Link                        LinkList      `json:"link"`
	Href                        string        `json:"href"`
	Type                        string        `json:"type"`
	ID                          string        `json:"id"`
	OperationKey                interface{}   `json:"operationKey"`
	Description                 string        `json:"description"`
	Tasks                       interface{}   `json:"tasks"`
	Name                        string        `json:"name"`
	Username                    string        `json:"username"`
	Password                    interface{}   `json:"password"`
	URL                         string        `json:"url"`
	DeploymentType              string        `json:"deploymentType"`
	VirtualCenterReference      interface{}   `json:"virtualCenterReference"`
	ServiceAppReference         interface{}   `json:"serviceAppReference"`
	NetworkProviderScope        interface{}   `json:"networkProviderScope"`
	Version                     string        `json:"version"`
	ProxyConfigurationReference interface{}   `json:"proxyConfigurationReference"`
	GlobalManager               bool          `json:"globalManager"`
	LocalNsxTManagerRef         []interface{} `json:"localNsxTManagerRef"`
	LocalManagerLocationName    interface{}   `json:"localManagerLocationName"`
	VCloudExtension             []interface{} `json:"vCloudExtension"`
}

NsxtManager structure for reading NSX-T Manager

type NsxtNatRule added in v2.12.0

type NsxtNatRule struct {
	ID string `json:"id,omitempty"`
	// Name holds a meaningful name for the rule. (API does not enforce uniqueness)
	Name string `json:"name"`
	// Description holds optional description for the rule
	Description string `json:"description"`
	// Enabled defines if the rule is active
	Enabled bool `json:"enabled"`

	// RuleType - one of the following: `DNAT`, `NO_DNAT`, `SNAT`, `NO_SNAT`
	// * An SNAT rule translates an internal IP to an external IP and is used for outbound traffic
	// * A NO SNAT rule prevents the translation of the internal IP address of packets sent from an organization VDC out
	// to an external network or to another organization VDC network.
	// * A DNAT rule translates the external IP to an internal IP and is used for inbound traffic.
	// * A NO DNAT rule prevents the translation of the external IP address of packets received by an organization VDC
	// from an external network or from another organization VDC network.
	// Deprecated in API V36.0
	RuleType string `json:"ruleType,omitempty"`
	// Type replaces RuleType in V36.0 and adds a new Rule - REFLEXIVE
	Type string `json:"type,omitempty"`

	// ExternalAddresses
	// * SNAT - enter the public IP address of the edge gateway for which you are configuring the SNAT rule.
	// * NO_SNAT - leave empty (but field cannot be skipped at all, therefore it does not have 'omitempty' tag)
	//
	// * DNAT - public IP address of the edge gateway for which you are configuring the DNAT rule. The IP
	// addresses that you enter must belong to the suballocated IP range of the edge gateway.
	// * NO_DNAT - leave empty
	ExternalAddresses string `json:"externalAddresses"`

	// InternalAddresses
	// * SNAT - the IP address or a range of IP addresses of the virtual machines for which you are configuring SNAT, so
	// that they can send traffic to the external network.
	//
	// * DNAT - enter the IP address or a range of IP addresses of the virtual machines for which you are configuring
	// DNAT, so that they can receive traffic from the external network.
	// * NO_DNAT - leave empty
	InternalAddresses      string            `json:"internalAddresses"`
	ApplicationPortProfile *OpenApiReference `json:"applicationPortProfile,omitempty"`

	// InternalPort specifies port number or port range for incoming network traffic. If Any Traffic is selected for the
	// Application Port Profile, the default internal port is "ANY".
	// Deprecated since API V35.0 and is replaced by DnatExternalPort
	InternalPort string `json:"internalPort,omitempty"`

	// DnatExternalPort can set a port into which the DNAT rule is translating for the packets inbound to the virtual
	// machines.
	DnatExternalPort string `json:"dnatExternalPort,omitempty"`

	// SnatDestinationAddresses applies only for RuleTypes `SNAT`, `NO_SNAT`
	// If you want the rule to apply only for traffic to a specific domain, enter an IP address for this domain or an IP
	// address range in CIDR format. If you leave this text box blank, the SNAT rule applies to all destinations outside
	// of the local subnet.
	SnatDestinationAddresses string `json:"snatDestinationAddresses,omitempty"`

	// Logging enabled or disabled logging of that rule
	Logging bool `json:"logging"`

	// FirewallMatch determines how the firewall matches the address during NATing if firewall stage is not skipped.
	// * MATCH_INTERNAL_ADDRESS indicates the firewall will be applied to internal address of a NAT rule. For SNAT, the
	// internal address is the original source address before NAT is done. For DNAT, the internal address is the translated
	// destination address after NAT is done. For REFLEXIVE, to egress traffic, the internal address is the original
	// source address before NAT is done; to ingress traffic, the internal address is the translated destination address
	// after NAT is done.
	// * MATCH_EXTERNAL_ADDRESS indicates the firewall will be applied to external address of a NAT rule. For SNAT, the
	// external address is the translated source address after NAT is done. For DNAT, the external address is the original
	// destination address before NAT is done. For REFLEXIVE, to egress traffic, the external address is the translated
	// internal address after NAT is done; to ingress traffic, the external address is the original destination address
	// before NAT is done.
	// * BYPASS firewall stage will be skipped.
	FirewallMatch string `json:"firewallMatch,omitempty"`
	// Priority helps to select rule with highest priority if an address has multiple NAT rules. A lower value means a
	// higher precedence for this rule. Maximum value 2147481599
	Priority *int `json:"priority,omitempty"`

	// Version of NAT rule. Must not be set when creating.
	Version *struct {
		// Version is incremented after each update
		Version *int `json:"version,omitempty"`
	} `json:"version,omitempty"`
}

NsxtNatRule describes a single NAT rule of 4 diferent RuleTypes - DNAT`, `NO_DNAT`, `SNAT`, `NO_SNAT`.

A SNAT or a DNAT rule on an Edge Gateway in the VMware Cloud Director environment, you always configure the rule from the perspective of your organization VDC. DNAT and NO_DNAT - outside traffic going inside SNAT and NO_SNAT - inside traffic going outside More docs in https://docs.vmware.com/en/VMware-Cloud-Director/10.2/VMware-Cloud-Director-Tenant-Portal-Guide/GUID-9E43E3DC-C028-47B3-B7CA-59F0ED40E0A6.html

type NsxtNetworkContextProfile added in v2.15.0

type NsxtNetworkContextProfile struct {
	OrgRef               *OpenApiReference `json:"orgRef"`
	ContextEntityID      interface{}       `json:"contextEntityId"`
	NetworkProviderScope interface{}       `json:"networkProviderScope"`
	ID                   string            `json:"id"`
	Name                 string            `json:"name"`
	Description          string            `json:"description"`

	// Scope of NSX-T Network Context Profile
	// SYSTEM profiles are available to all tenants. They are default profiles from the backing networking provider.
	// PROVIDER profiles are available to all tenants. They are defined by the provider at a system level.
	// TENANT profiles are available only to the specific tenant organization. They are defined by the tenant or by a provider on behalf of a tenant.
	Scope      string                                `json:"scope"`
	Attributes []NsxtNetworkContextProfileAttributes `json:"attributes"`
}

type NsxtNetworkContextProfileAttributes added in v2.15.0

type NsxtNetworkContextProfileAttributes struct {
	Type          string      `json:"type"`
	Values        []string    `json:"values"`
	SubAttributes interface{} `json:"subAttributes"`
}

type NsxtSegmentProfileCommonFields added in v2.22.0

type NsxtSegmentProfileCommonFields struct {
	ID string `json:"id,omitempty"`
	// Description of the segment profile.
	Description string `json:"description,omitempty"`
	// DisplayName represents name of the segment profile. This corresponds to the name used in
	// NSX-T managers logs or GUI.
	DisplayName string `json:"displayName"`
	// NsxTManagerRef where this segment profile is configured.
	NsxTManagerRef *OpenApiReference `json:"nsxTManagerRef"`
}

NsxtSegmentProfileCommonFields contains common fields that are used in all NSX-T Segment Profiles

type NsxtSegmentProfileIpDiscovery added in v2.22.0

type NsxtSegmentProfileIpDiscovery struct {
	NsxtSegmentProfileCommonFields
	// ArpBindingLimit indicates the number of arp snooped IP addresses to be remembered per
	// LogicalPort.
	ArpBindingLimit int `json:"arpBindingLimit"`
	// ArpNdBindingTimeout indicates ARP and ND cache timeout (in minutes).
	ArpNdBindingTimeout int `json:"arpNdBindingTimeout"`
	// IsArpSnoopingEnabled defines whether ARP snooping is enabled.
	IsArpSnoopingEnabled bool `json:"isArpSnoopingEnabled"`
	// IsDhcpSnoopingV4Enabled defines whether DHCP snooping for IPv4 is enabled.
	IsDhcpSnoopingV4Enabled bool `json:"isDhcpSnoopingV4Enabled"`
	// IsDhcpSnoopingV6Enabled defines whether DHCP snooping for IPv6 is enabled.
	IsDhcpSnoopingV6Enabled bool `json:"isDhcpSnoopingV6Enabled"`
	// IsDuplicateIPDetectionEnabled indicates whether duplicate IP detection is enabled. Duplicate
	// IP detection is used to determine if there is any IP conflict with any other port on the same
	// logical switch. If a conflict is detected, then the IP is marked as a duplicate on the port
	// where the IP was discovered last.
	IsDuplicateIPDetectionEnabled bool `json:"isDuplicateIpDetectionEnabled"`
	// IsNdSnoopingEnabled indicates whether ND snooping is enabled. If true, this method will snoop
	// the NS (Neighbor Solicitation) and NA (Neighbor Advertisement) messages in the ND (Neighbor
	// Discovery Protocol) family of messages which are transmitted by a VM. From the NS messages,
	// we will learn about the source which sent this NS message. From the NA message, we will learn
	// the resolved address in the message which the VM is a recipient of. Addresses snooped by this
	// method are subject to TOFU.
	IsNdSnoopingEnabled bool `json:"isNdSnoopingEnabled"`
	// IsTofuEnabled defines whether 'Trust on First Use(TOFU)' paradigm is enabled.
	IsTofuEnabled bool `json:"isTofuEnabled"`
	// IsVMToolsV4Enabled indicates whether fetching IPv4 address using vm-tools is enabled. This
	// option is only supported on ESX where vm-tools is installed.
	IsVMToolsV4Enabled bool `json:"isVmToolsV4Enabled"`
	// IsVMToolsV6Enabled indicates whether fetching IPv6 address using vm-tools is enabled. This
	// will learn the IPv6 addresses which are configured on interfaces of a VM with the help of the
	// VMTools software.
	IsVMToolsV6Enabled bool `json:"isVmToolsV6Enabled"`
	// NdSnoopingLimit defines maximum number of ND (Neighbor Discovery Protocol) snooped IPv6
	// addresses.
	NdSnoopingLimit int `json:"ndSnoopingLimit"`
}

NsxtSegmentProfileIpDiscovery contains information about NSX-T IP Discovery Segment Profile It is a read-only construct in VCD

type NsxtSegmentProfileMacDiscovery added in v2.22.0

type NsxtSegmentProfileMacDiscovery struct {
	NsxtSegmentProfileCommonFields
	// IsMacChangeEnabled indcates whether source MAC address change is enabled.
	IsMacChangeEnabled bool `json:"isMacChangeEnabled"`
	// IsMacLearningEnabled indicates whether source MAC address learning is enabled.
	IsMacLearningEnabled bool `json:"isMacLearningEnabled"`
	// IsUnknownUnicastFloodingEnabled indicates whether unknown unicast flooding rule is enabled.
	// This allows flooding for unlearned MAC for ingress traffic.
	IsUnknownUnicastFloodingEnabled bool `json:"isUnknownUnicastFloodingEnabled"`
	// MacLearningAgingTime indicates aging time in seconds for learned MAC address. Indicates how
	// long learned MAC address remain.
	MacLearningAgingTime int `json:"macLearningAgingTime"`
	// MacLimit indicates the maximum number of MAC addresses that can be learned on this port.
	MacLimit int `json:"macLimit"`
	// MacPolicy defines the policy after MAC Limit is exceeded. It can be either 'ALLOW' or 'DROP'.
	MacPolicy string `json:"macPolicy"`
}

NsxtSegmentProfileMacDiscovery contains information about NSX-T MAC Discovery Segment Profile It is a read-only construct in VCD

type NsxtSegmentProfileSegmentQosProfile added in v2.22.0

type NsxtSegmentProfileSegmentQosProfile struct {
	NsxtSegmentProfileCommonFields
	// ClassOfService groups similar types of traffic in the network and each type of traffic is
	// treated as a class with its own level of service priority. The lower priority traffic is
	// slowed down or in some cases dropped to provide better throughput for higher priority
	// traffic.
	ClassOfService int `json:"classOfService"`
	// DscpConfig contains a Differentiated Services Code Point (DSCP) Configuration for this
	// Segment QoS Profile.
	DscpConfig struct {
		Priority  int    `json:"priority"`
		TrustMode string `json:"trustMode"`
	} `json:"dscpConfig"`
	// EgressRateLimiter indicates egress rate properties in Mb/s.
	EgressRateLimiter NsxtSegmentProfileSegmentQosProfileRateLimiter `json:"egressRateLimiter"`
	// IngressBroadcastRateLimiter indicates broadcast rate properties in Mb/s.
	IngressBroadcastRateLimiter NsxtSegmentProfileSegmentQosProfileRateLimiter `json:"ingressBroadcastRateLimiter"`
	// IngressRateLimiter indicates ingress rate properties in Mb/s.
	IngressRateLimiter NsxtSegmentProfileSegmentQosProfileRateLimiter `json:"ingressRateLimiter"`
}

NsxtSegmentProfileSegmentQosProfile contains information about NSX-T QoS Segment Profile It is a read-only construct in VCD

type NsxtSegmentProfileSegmentQosProfileRateLimiter added in v2.22.0

type NsxtSegmentProfileSegmentQosProfileRateLimiter struct {
	// Average bandwidth in Mb/s.
	AvgBandwidth int `json:"avgBandwidth"`
	// Burst size in bytes.
	BurstSize int `json:"burstSize"`
	// Peak bandwidth in Mb/s.
	PeakBandwidth int `json:"peakBandwidth"`
}

NsxtSegmentProfileIpDiscovery contains information about NSX-T IP Discovery Segment Profile It is a read-only construct in VCD

type NsxtSegmentProfileSegmentSecurity added in v2.22.0

type NsxtSegmentProfileSegmentSecurity struct {
	NsxtSegmentProfileCommonFields
	// BpduFilterAllowList indicates pre-defined list of allowed MAC addresses to be excluded from
	// BPDU filtering.
	BpduFilterAllowList []string `json:"bpduFilterAllowList"`
	// IsBpduFilterEnabled indicates whether BPDU filter is enabled.
	IsBpduFilterEnabled bool `json:"isBpduFilterEnabled"`
	// IsDhcpClientBlockV4Enabled indicates whether DHCP Client block IPv4 is enabled. This filters
	// DHCP Client IPv4 traffic.
	IsDhcpClientBlockV4Enabled bool `json:"isDhcpClientBlockV4Enabled"`
	// IsDhcpClientBlockV6Enabled indicates whether DHCP Client block IPv6 is enabled. This filters
	// DHCP Client IPv4 traffic.
	IsDhcpClientBlockV6Enabled bool `json:"isDhcpClientBlockV6Enabled"`
	// IsDhcpServerBlockV4Enabled indicates whether DHCP Server block IPv4 is enabled. This filters
	// DHCP Server IPv4 traffic.
	IsDhcpServerBlockV4Enabled bool `json:"isDhcpServerBlockV4Enabled"`
	// IsDhcpServerBlockV6Enabled indicates whether DHCP Server block IPv6 is enabled. This filters
	// DHCP Server IPv6 traffic.
	IsDhcpServerBlockV6Enabled bool `json:"isDhcpServerBlockV6Enabled"`
	// IsNonIPTrafficBlockEnabled indicates whether non IP traffic block is enabled. If true, it
	// blocks all traffic except IP/(G)ARP/BPDU.
	IsNonIPTrafficBlockEnabled bool `json:"isNonIpTrafficBlockEnabled"`
	// IsRaGuardEnabled indicates whether Router Advertisement Guard is enabled. This filters DHCP
	// Server IPv6 traffic.
	IsRaGuardEnabled bool `json:"isRaGuardEnabled"`
	// IsRateLimitingEnabled indicates whether Rate Limiting is enabled.
	IsRateLimitingEnabled bool `json:"isRateLimitingEnabled"`
	RateLimits            struct {
		// Incoming broadcast traffic limit in packets per second.
		RxBroadcast int `json:"rxBroadcast"`
		// Incoming multicast traffic limit in packets per second.
		RxMulticast int `json:"rxMulticast"`
		// Outgoing broadcast traffic limit in packets per second.
		TxBroadcast int `json:"txBroadcast"`
		// Outgoing multicast traffic limit in packets per second.
		TxMulticast int `json:"txMulticast"`
	} `json:"rateLimits"`
}

NsxtSegmentProfileSegmentSecurity contains information about NSX-T Segment Security Profile It is a read-only construct in VCD

type NsxtSegmentProfileSegmentSpoofGuard added in v2.22.0

type NsxtSegmentProfileSegmentSpoofGuard struct {
	NsxtSegmentProfileCommonFields
	// IsAddressBindingWhitelistEnabled indicates whether Spoof Guard is enabled. If true, it only
	// allows VM sending traffic with the IPs in the whitelist.
	IsAddressBindingWhitelistEnabled bool `json:"isAddressBindingWhitelistEnabled"`
}

NsxtSegmentProfileSegmentSpoofGuard contains information about NSX-T Spoof Guard Segment Profile It is a read-only construct in VCD

type NsxtSegmentProfileTemplate added in v2.22.0

type NsxtSegmentProfileTemplate struct {
	ID string `json:"id,omitempty"`
	// Name for Segment Profile template
	Name string `json:"name"`
	// Description for Segment Profile template
	Description string `json:"description,omitempty"`

	// SourceNsxTManagerRef points to NSX-T manager providing the source segment profiles
	SourceNsxTManagerRef   *OpenApiReference `json:"sourceNsxTManagerRef,omitempty"`
	IPDiscoveryProfile     *Reference        `json:"ipDiscoveryProfile,omitempty"`
	MacDiscoveryProfile    *Reference        `json:"macDiscoveryProfile,omitempty"`
	QosProfile             *Reference        `json:"qosProfile,omitempty"`
	SegmentSecurityProfile *Reference        `json:"segmentSecurityProfile,omitempty"`
	SpoofGuardProfile      *Reference        `json:"spoofGuardProfile,omitempty"`

	LastModified string `json:"lastModified,omitempty"`
}

NsxtSegmentProfileTemplate allows management of templates that define the segment profiles that will be applied during network creation.

type NsxtTier0Router added in v2.9.0

type NsxtTier0Router struct {
	ID          string `json:"id,omitempty"`
	Description string `json:"description"`
	DisplayName string `json:"displayName"`
}

NsxtTier0Router defines NSX-T Tier 0 router

type NsxvDistributedFirewallRule added in v2.20.0

type NsxvDistributedFirewallRule struct {
	Disabled      bool           `xml:"disabled,attr"`
	ID            *int           `xml:"id,attr"`
	Logged        bool           `xml:"logged,attr"`
	Name          string         `xml:"name"`
	Action        string         `xml:"action"` // allow, deny
	AppliedToList *AppliedToList `xml:"appliedToList"`
	SectionID     *int           `xml:"sectionId"`
	Sources       *Sources       `xml:"sources"`
	Destinations  *Destinations  `xml:"destinations"`
	Services      *Services      `xml:"services"`
	Direction     string         `xml:"direction"` // in, out, inout
	PacketType    string         `xml:"packetType"`
	Tag           string         `xml:"tag"`
}

type OVFItem

type OVFItem struct {
	XMLName         xml.Name `xml:"vcloud:Item"`
	XmlnsRasd       string   `xml:"xmlns:rasd,attr"`
	XmlnsVCloud     string   `xml:"xmlns:vcloud,attr"`
	XmlnsXsi        string   `xml:"xmlns:xsi,attr"`
	XmlnsVmw        string   `xml:"xmlns:vmw,attr,omitempty"`
	VCloudHREF      string   `xml:"vcloud:href,attr"`
	VCloudType      string   `xml:"vcloud:type,attr"`
	AllocationUnits string   `xml:"rasd:AllocationUnits"`
	Description     string   `xml:"rasd:Description"`
	ElementName     string   `xml:"rasd:ElementName"`
	InstanceID      int      `xml:"rasd:InstanceID"`
	Reservation     int      `xml:"rasd:Reservation"`
	ResourceType    int      `xml:"rasd:ResourceType"`
	VirtualQuantity int64    `xml:"rasd:VirtualQuantity"`
	// Weight corresponds to Shares when used for CPU and/or memory settings
	Weight         int   `xml:"rasd:Weight,omitempty"`
	CoresPerSocket *int  `xml:"vmw:CoresPerSocket,omitempty"`
	Link           *Link `xml:"vcloud:Link"`
}

OVFItem is a horrible kludge to process OVF, needs to be fixed with proper types.

type OpenAPIEdgeGateway added in v2.10.0

type OpenAPIEdgeGateway struct {
	Status string `json:"status,omitempty"`
	ID     string `json:"id,omitempty"`

	Name string `json:"name"`

	// Description of edge gateway
	Description string `json:"description"`

	// OwnerRef defines Org VDC or VDC Group that this network belongs to. If the ownerRef is set to a VDC Group, this
	// network will be available across all the VDCs in the vDC Group. If the VDC Group is backed by a NSX-V network
	// provider, the Org VDC network is automatically connected to the distributed router associated with the VDC Group
	// and the "connection" field does not need to be set. For API version 35.0 and above, this field should be set for
	// network creation.
	OwnerRef *OpenApiReference `json:"ownerRef,omitempty"`

	// OrgVdc holds the organization vDC or vDC Group that this edge gateway belongs to. If the ownerRef is set to a VDC
	// Group, this gateway will be available across all the participating Organization vDCs in the VDC Group.
	OrgVdc *OpenApiReference `json:"orgVdc,omitempty"`

	// Org holds the organization to which the gateway belongs.
	Org *OpenApiReference `json:"orgRef,omitempty"`

	// EdgeGatewayUplink defines uplink connections for the edge gateway.
	EdgeGatewayUplinks []EdgeGatewayUplinks `json:"edgeGatewayUplinks"`

	// DistributedRoutingEnabled is a flag indicating whether distributed routing is enabled or not. The default is false.
	DistributedRoutingEnabled *bool `json:"distributedRoutingEnabled,omitempty"`

	// EdgeClusterConfig holds Edge Cluster Configuration for the Edge Gateway. Can be specified if a gateway needs to be
	// placed on a specific set of Edge Clusters. For NSX-T Edges, user should specify the ID of the NSX-T edge cluster as
	// the value of primaryEdgeCluster's backingId. The gateway defaults to the Edge Cluster of the connected External
	// Network's backing Tier-0 router, if nothing is specified.
	//
	// Note. The value of secondaryEdgeCluster will be set to NULL for NSX-T edge gateways. For NSX-V Edges, this is
	// read-only and the legacy API must be used for edge specific placement.
	EdgeClusterConfig *OpenAPIEdgeGatewayEdgeClusterConfig `json:"edgeClusterConfig,omitempty"`

	// OrgVdcNetworkCount holds the number of Org VDC networks connected to the gateway.
	OrgVdcNetworkCount *int `json:"orgVdcNetworkCount,omitempty"`

	// GatewayBacking must contain backing details of the edge gateway only if importing an NSX-T router.
	GatewayBacking *OpenAPIEdgeGatewayBacking `json:"gatewayBacking,omitempty"`

	// ServiceNetworkDefinition holds network definition in CIDR form that DNS and DHCP service on an NSX-T edge will run
	// on. The subnet prefix length must be 27. This property applies to creating or importing an NSX-T Edge. This is not
	// supported for VMC. If nothing is set, the default is 192.168.255.225/27. The DHCP listener IP network is on
	// 192.168.255.225/30. The DNS listener IP network is on 192.168.255.228/32. This field cannot be updated.
	ServiceNetworkDefinition string `json:"serviceNetworkDefinition,omitempty"`

	// UsingIpSpace is a boolean flag to indicate whether the edge gateway is using IP space or not.
	UsingIpSpace *bool `json:"usingIpSpace,omitempty"`
}

OpenAPIEdgeGateway structure supports marshalling both - NSX-V and NSX-T edge gateways as returned by OpenAPI endpoint (cloudapi/1.0.0edgeGateways/), but the endpoint only allows users to create NSX-T edge gateways.

type OpenAPIEdgeGatewayBacking added in v2.10.0

type OpenAPIEdgeGatewayBacking struct {
	BackingID       string          `json:"backingId,omitempty"`
	GatewayType     string          `json:"gatewayType,omitempty"`
	NetworkProvider NetworkProvider `json:"networkProvider"`
}

OpenAPIEdgeGatewayBacking specifies edge gateway backing details

type OpenAPIEdgeGatewayEdgeCluster added in v2.10.0

type OpenAPIEdgeGatewayEdgeCluster struct {
	EdgeClusterRef OpenApiReference `json:"edgeClusterRef"`
	BackingID      string           `json:"backingId"`
}

OpenAPIEdgeGatewayEdgeCluster allows users to specify edge cluster reference

type OpenAPIEdgeGatewayEdgeClusterConfig added in v2.10.0

type OpenAPIEdgeGatewayEdgeClusterConfig struct {
	PrimaryEdgeCluster   OpenAPIEdgeGatewayEdgeCluster `json:"primaryEdgeCluster,omitempty"`
	SecondaryEdgeCluster OpenAPIEdgeGatewayEdgeCluster `json:"secondaryEdgeCluster,omitempty"`
}

type OpenAPIEdgeGatewaySubnetValue added in v2.10.0

type OpenAPIEdgeGatewaySubnetValue struct {
	// Gateway specified subnet gateway
	Gateway string `json:"gateway"`
	// PrefixLength from CIDR format (e.g. 24 from 192.168.1.1/24)
	PrefixLength int `json:"prefixLength"`
	// DNSSuffix can only be used for reading NSX-V edge gateway
	DNSSuffix string `json:"dnsSuffix,omitempty"`
	// DNSServer1 can only be used for reading NSX-V edge gateway
	DNSServer1 string `json:"dnsServer1,omitempty"`
	// DNSServer2 can only be used for reading NSX-V edge gateway
	DNSServer2 string `json:"dnsServer2,omitempty"`
	// IPRanges contain IP allocations
	IPRanges *OpenApiIPRanges `json:"ipRanges,omitempty"`
	// Enabled toggles if the subnet is enabled
	Enabled bool `json:"enabled"`
	// TotalIPCount specified total allocated IP count
	TotalIPCount *int `json:"totalIpCount,omitempty"`

	// UsedIPCount specifies used IP count
	UsedIPCount int `json:"usedIpCount,omitempty"`

	// PrimaryIP of the Edge Gateway. Can only be one in all subnets of a single uplink
	PrimaryIP string `json:"primaryIp,omitempty"`

	// AutoAllocateIPRanges provides a way to automatically allocate
	AutoAllocateIPRanges bool `json:"autoAllocateIpRanges,omitempty"`
}

OpenAPIEdgeGatewaySubnetValue holds one subnet definition in external network

type OpenAPIEdgeGatewaySubnets added in v2.10.0

type OpenAPIEdgeGatewaySubnets struct {
	Values []OpenAPIEdgeGatewaySubnetValue `json:"values"`
}

OpenAPIEdgeGatewaySubnets lists slice of OpenAPIEdgeGatewaySubnetValue values

type OpenApiError added in v2.9.0

type OpenApiError struct {
	MinorErrorCode string `json:"minorErrorCode"`
	Message        string `json:"message"`
	StackTrace     string `json:"stackTrace"`
}

OpenApiError helps to marshal and provider meaningful `Error` for

func (OpenApiError) Error added in v2.9.0

func (openApiError OpenApiError) Error() string

Error method implements Go's default `error` interface for CloudAPI errors formats them for human readable output.

func (OpenApiError) ErrorWithStack added in v2.9.0

func (openApiError OpenApiError) ErrorWithStack() string

ErrorWithStack is the same as `Error()`, but also includes stack trace returned by API which is usually lengthy.

type OpenApiIPRangeValues added in v2.10.0

type OpenApiIPRangeValues struct {
	// StartAddress holds starting IP address in the range
	StartAddress string `json:"startAddress"`
	// EndAddress holds ending IP address in the range
	EndAddress string `json:"endAddress"`
}

OpenApiIPRangeValues defines allocated IP pools for a subnet in external network

type OpenApiIPRanges added in v2.10.0

type OpenApiIPRanges struct {
	Values []OpenApiIPRangeValues `json:"values"`
}

ExternalNetworkV2IPRanges contains slice of ExternalNetworkV2IPRange

type OpenApiItems added in v2.12.0

type OpenApiItems struct {
	ResultTotal  int                `json:"resultTotal,omitempty"`
	PageCount    int                `json:"pageCount,omitempty"`
	Page         int                `json:"page,omitempty"`
	PageSize     int                `json:"pageSize,omitempty"`
	Associations interface{}        `json:"associations,omitempty"`
	Values       []OpenApiReference `json:"values"` // a collection of items defined by an ID + a name
}

OpenApiItems defines the input when multiple items need to be passed to a POST or PUT operation All the fields are optional, except Values This structure is the same as OpenApiPages, except for the type of Values, which is explicitly defined as a collection of name+ID structures

type OpenApiMetadataEntry added in v2.22.0

type OpenApiMetadataEntry struct {
	ID           string                  `json:"id,omitempty"`         // UUID for OpenApiMetadataEntry. This is immutable
	IsPersistent bool                    `json:"persistent,omitempty"` // Persistent entries can be copied over on some entity operation, for example: Creating a copy of an Org VDC, capturing a vApp to a template, instantiating a catalog item as a VM, etc.
	IsReadOnly   bool                    `json:"readOnly,omitempty"`   // The kind of level of access organizations of the entry’s domain have
	KeyValue     OpenApiMetadataKeyValue `json:"keyValue,omitempty"`   // Contains core metadata entry data
}

OpenApiMetadataEntry represents a metadata entry in VCD.

type OpenApiMetadataKeyValue added in v2.22.0

type OpenApiMetadataKeyValue struct {
	Domain    string                    `json:"domain,omitempty"`    // Only meaningful for providers. Allows them to share entries with their tenants. Currently, accepted values are: `TENANT`, `PROVIDER`, where that is the ascending sort order of the enumeration.
	Key       string                    `json:"key,omitempty"`       // Key of the metadata entry
	Value     OpenApiMetadataTypedValue `json:"value,omitempty"`     // Value of the metadata entry
	Namespace string                    `json:"namespace,omitempty"` // Namespace of the metadata entry
}

OpenApiMetadataKeyValue contains core metadata entry data.

type OpenApiMetadataTypedValue added in v2.22.0

type OpenApiMetadataTypedValue struct {
	Value interface{} `json:"value,omitempty"` // The Value is anything because it depends on the Type field.
	Type  string      `json:"type,omitempty"`
}

OpenApiMetadataTypedValue the type and value of the metadata entry.

type OpenApiOrgVdcNetwork added in v2.11.0

type OpenApiOrgVdcNetwork struct {
	ID          string `json:"id,omitempty"`
	Name        string `json:"name"`
	Description string `json:"description"`
	Status      string `json:"status,omitempty"`
	// OwnerRef defines Org VDC or VDC Group that this network belongs to. If the ownerRef is set to a VDC Group, this
	// network will be available across all the VDCs in the vDC Group. If the VDC Group is backed by a NSX-V network
	// provider, the Org VDC network is automatically connected to the distributed router associated with the VDC Group
	// and the "connection" field does not need to be set. For API version 35.0 and above, this field should be set for
	// network creation.
	//
	// Note. In lower API versions (i.e. 32.0) this field is not recognized and OrgVdc should be used instead
	OwnerRef *OpenApiReference `json:"ownerRef,omitempty"`

	OrgVdc *OpenApiReference `json:"orgVdc,omitempty"`

	// NetworkType describes type of Org Vdc network. ('NAT_ROUTED', 'ISOLATED')
	NetworkType string `json:"networkType"`

	// OrgVdcIsNsxTBacked is a read only flag that indicates whether the Org VDC is backed by NSX-T or not
	// Note. It returns `false` if Org VDC network is withing an NSX-T VDC Group
	OrgVdcIsNsxTBacked bool `json:"orgVdcIsNsxTBacked,omitempty"`

	// Connection specifies the edge gateway this network is connected to.
	//
	// Note. When NetworkType == ISOLATED, there is no uplink connection.
	Connection *Connection `json:"connection,omitempty"`

	// backingNetworkId contains the NSX ID of the backing network.
	BackingNetworkId string `json:"backingNetworkId,omitempty"`
	// backingNetworkType contains object type of the backing network.
	// * 'VIRTUAL_WIRE' for NSX-V'
	// * 'NSXT_FLEXIBLE_SEGMENT' for NSX-T networks
	// * 'DV_PORTGROUP' for NSX-T Imported network backed by DV Portgroup
	BackingNetworkType string `json:"backingNetworkType,omitempty"`

	// ParentNetwork should have external network ID specified when creating NSX-V direct network
	ParentNetwork *OpenApiReference `json:"parentNetworkId"`

	// GuestVlanTaggingAllowed specifies whether guest VLAN tagging is allowed
	GuestVlanTaggingAllowed *bool `json:"guestVlanTaggingAllowed"`

	// Subnets contains list of subnets defined on
	Subnets OrgVdcNetworkSubnets `json:"subnets"`

	// SecurityGroups defines a list of firewall groups of type SECURITY_GROUP that are assigned to the Org VDC Network.
	// These groups can then be used in firewall rules to protect the Org VDC Network and allow/deny traffic.
	SecurityGroups *OpenApiReferences `json:"securityGroups,omitempty"`

	// RouteAdvertised reports if this network is advertised so that it can be routed out to the external networks. This
	// applies only to network backed by NSX-T. Value will be unset if route advertisement is not applicable.
	RouteAdvertised *bool `json:"routeAdvertised,omitempty"`

	// TotalIpCount is a read only attribute reporting total number of IPs available in network
	TotalIpCount *int `json:"totalIpCount"`

	// UsedIpCount is a read only attribute reporting number of used IPs in network
	UsedIpCount *int `json:"usedIpCount"`

	// Shared shares network with other VDCs in the organization
	Shared *bool `json:"shared,omitempty"`

	// EnableDualSubnetNetwork defines whether or not this network will support two subnets (IPv4
	// and IPv6)
	EnableDualSubnetNetwork *bool `json:"enableDualSubnetNetwork,omitempty"`

	// SegmentProfileTemplate reference to the Segment Profile Template that is to be used when
	// creating/updating this network. Setting this will override any Org VDC Network Segment
	// Profile Template defined at global level or an Org VDC level.
	//
	// Notes:
	// * This field is only relevant during network create/update operation and will not be returned
	// on GETs. To retrieve currently set Segment Profile Template one can use different endpoint
	// and function `vdc.GetVdcNetworkProfile()`
	// * For specific profile types where there are no corresponding profiles defined in the
	// template, VCD will use the default NSX-T profile.
	// * This field is only applicable for NSX-T Org VDC Networks.
	SegmentProfileTemplate *OpenApiReference `json:"segmentProfileTemplateRef,omitempty"`
}

OpenApiOrgVdcNetwork allows users to manage Org Vdc networks

type OpenApiOrgVdcNetworkDhcp added in v2.11.0

type OpenApiOrgVdcNetworkDhcp struct {
	Enabled *bool `json:"enabled,omitempty"`

	// LeaseTime specifies the amount of time in seconds of how long a DHCP IP will be leased out
	// for. The minimum is 60s while the maximum is 4,294,967,295s, which is roughly 49,710 days.
	LeaseTime *int                            `json:"leaseTime,omitempty"`
	DhcpPools []OpenApiOrgVdcNetworkDhcpPools `json:"dhcpPools,omitempty"`

	// Mode describes how the DHCP service is configured for this network. Once a DHCP service has been created, the mode
	// attribute cannot be changed. The mode field will default to 'EDGE' if it is not provided. This field only applies
	// to networks backed by an NSX-T network provider.
	//
	// The supported values are EDGE, NETWORK and RELAY (VCD 10.3.1+, API 36.1+).
	// * If EDGE is specified, the DHCP service of the edge is used to obtain DHCP IPs.
	// * If NETWORK is specified, a DHCP server is created for use by this network.
	// * If RELAY is specified, all the DHCP client requests will be relayed to Gateway DHCP
	//   Forwarder service. This mode is only supported for Routed Org vDC Networks.
	//
	// In order to use DHCP for IPV6, NETWORK mode must be used. Routed networks which are using
	// NETWORK DHCP services can be disconnected from the edge gateway and still retain their DHCP
	// configuration, however DHCP configuration will be removed during connection change for
	// networks using EDGE or RELAY DHCP mode.
	Mode string `json:"mode,omitempty"`

	// IPAddress is only applicable when mode=NETWORK. This will specify IP address of DHCP server in network.
	IPAddress string `json:"ipAddress,omitempty"`

	// DnsServers are the IPs to be assigned by this DHCP service. The IP type must match the IP
	// type of the subnet on which the DHCP config is being created.
	DnsServers []string `json:"dnsServers,omitempty"`
}

OpenApiOrgVdcNetworkDhcp allows users to manage DHCP configuration for Org VDC networks by using OpenAPI endpoint

type OpenApiOrgVdcNetworkDhcpBinding added in v2.20.0

type OpenApiOrgVdcNetworkDhcpBinding struct {
	// ID of DHCP binding
	ID string `json:"id,omitempty"`

	// Name contains display name for the DHCP binding
	Name string `json:"name"`

	// Description of the DHCP binding
	Description string `json:"description,omitempty"`

	// BindingType holds the type of DHCP binding:
	// * IPV4 - an IPv4 DHCP binding (`types.NsxtDhcpBindingTypeIpv4`)
	// * IPV6 - an IPv6 DHCP binding (`types.NsxtDhcpBindingTypeIpv6`)
	BindingType string `json:"bindingType"`

	// MacAddress for the host
	MacAddress string `json:"macAddress"`

	// DhcpV4BindingConfig contains additional configuration for IPv4 DHCP binding.
	// Note. This is ignored for IPV6 binding.
	DhcpV4BindingConfig *DhcpV4BindingConfig `json:"dhcpV4BindingConfig,omitempty"`

	// DhcpV6BindingConfig contains additional configuration for IPv6 DHCP binding.
	// Note. This is ignored for IPV4 binding.
	DhcpV6BindingConfig *DhcpV6BindingConfig `json:"dhcpV6BindingConfig,omitempty"`

	// DnsServers to be set on the host. Maximum 2 DNS, order is important.
	DnsServers []string `json:"dnsServers,omitempty"`

	// IpAddress assigned to host. This address must belong to the subnet of Org VDC network. For
	// IPv4, this is required. For IPv6, when not specified, Stateless Address Autoconfiguration
	// (SLAAC) is used to auto-assign an IPv6 address to the DHCPv6 clients.
	IpAddress string `json:"ipAddress"`

	// Lease time in seconds defines how long a DHCP IP will be leased out for. The minimum is 60s
	// while the maximum is 4,294,967,295s, which is roughly 49,710 days. Default is 24 hours.
	LeaseTime *int `json:"leaseTime,omitempty"`

	// Version describes the current version of the entity. To prevent clients from overwriting each
	// other's changes, update operations must include the version which can be obtained by issuing
	// a GET operation. If the version number on an update call is missing, the operation will be
	// rejected. This is only needed on update calls.
	Version OpenApiOrgVdcNetworkDhcpBindingVersion `json:"version"`
}

OpenApiOrgVdcNetworkDhcpBinding defines configuration of NSX-T DHCP binding in Org VDC network

type OpenApiOrgVdcNetworkDhcpBindingVersion added in v2.20.0

type OpenApiOrgVdcNetworkDhcpBindingVersion struct {
	Version int `json:"version"`
}

OpenApiOrgVdcNetworkDhcpBindingVersion describes the current version of the entity. To prevent clients from overwriting each other's changes, update operations must include the version which can be obtained by issuing a GET operation. If the version number on an update call is missing, the operation will be rejected. This is only needed on update calls.

type OpenApiOrgVdcNetworkDhcpIpRange added in v2.11.0

type OpenApiOrgVdcNetworkDhcpIpRange = ExternalNetworkV2IPRange

OpenApiOrgVdcNetworkDhcpIpRange is a type alias to fit naming

type OpenApiOrgVdcNetworkDhcpPools added in v2.11.0

type OpenApiOrgVdcNetworkDhcpPools struct {
	// Enabled defines if the DHCP pool is enabled or not
	Enabled *bool `json:"enabled,omitempty"`
	// IPRange holds IP ranges
	IPRange OpenApiOrgVdcNetworkDhcpIpRange `json:"ipRange"`
	// MaxLeaseTime is the maximum lease time that can be accepted on clients request
	// This applies for NSX-V Isolated network
	MaxLeaseTime *int `json:"maxLeaseTime,omitempty"`
	// DefaultLeaseTime is the lease time that clients get if they do not specify particular lease time
	// This applies for NSX-V Isolated network
	DefaultLeaseTime *int `json:"defaultLeaseTime,omitempty"`
}

type OpenApiPages added in v2.9.0

type OpenApiPages struct {
	// ResultTotal reports total results available
	ResultTotal int `json:"resultTotal,omitempty"`
	// PageCount reports total result pages available
	PageCount int `json:"pageCount,omitempty"`
	// Page reports current page of result
	Page int `json:"page,omitempty"`
	// PageSize reports page size
	PageSize int `json:"pageSize,omitempty"`
	// Associations ...
	Associations interface{} `json:"associations,omitempty"`
	// Values holds types depending on the endpoint therefore `json.RawMessage` is used to dynamically unmarshal into
	// specific type as required
	Values json.RawMessage `json:"values,omitempty"`
}

OpenApiPages unwraps pagination for "Get All" endpoints in OpenAPI. Values kept in json.RawMessage helps to decouple marshalling paging related information from exact type related information. Paging can be handled dynamically this way while values can be marshaled into exact types.

type OpenApiReference added in v2.10.0

type OpenApiReference struct {
	Name string `json:"name,omitempty"`
	ID   string `json:"id,omitempty"`
}

OpenApiReference is a generic reference type commonly used throughout OpenAPI endpoints

type OpenApiReferences added in v2.11.0

type OpenApiReferences []OpenApiReference

type OpenApiStorageProfile added in v2.21.0

type OpenApiStorageProfile struct {
	Moref string `json:"moref"`
	Name  string `json:"name"`
}

OpenApiStorageProfile defines a storage profile before it is assigned to a provider VDC

type OpenApiSupportedHardwareVersions added in v2.21.0

type OpenApiSupportedHardwareVersions struct {
	Versions          []string `json:"versions"`
	SupportedVersions []struct {
		IsDefault bool   `json:"isDefault"`
		Name      string `json:"name"`
	} `json:"supportedVersions"`
}

OpenApiSupportedHardwareVersions is the list of versions supported by a given resource

type OperatingSystemFamilyInfoType added in v2.22.0

type OperatingSystemFamilyInfoType struct {
	Name                    string                     `xml:"Name"`
	OperatingSystemFamilyId *int                       `xml:"OperatingSystemFamilyId"`
	OperatingSystems        []*OperatingSystemInfoType `xml:"OperatingSystem"`
}

OperatingSystemFamilyInfoType describes operating systems of a given OS family

type OperatingSystemInfoType added in v2.22.0

type OperatingSystemInfoType struct {
	OperatingSystemId          *int   `xml:"OperatingSystemId,omitempty"`
	DefaultHardDiskAdapterType string `xml:"DefaultHardDiskAdapterType"`
	SupportedHardDiskAdapter   []struct {
		Ref string `xml:"ref,attr"`
	} `xml:"SupportedHardDiskAdapter,omitempty"`
	MinimumHardDiskSizeGigabytes *int   `xml:"MinimumHardDiskSizeGigabytes"`
	MinimumMemoryMegabytes       *int   `xml:"MinimumMemoryMegabytes"`
	Name                         string `xml:"Name"`
	InternalName                 string `xml:"InternalName"`
	Supported                    *bool  `xml:"Supported"`
	SupportLevel                 string `xml:"SupportLevel"`
	X64                          *bool  `xml:"x64"`
	MaximumCpuCount              *int   `xml:"MaximumCpuCount"`
	MaximumCoresPerSocket        *int   `xml:"MaximumCoresPerSocket"`
	MaximumSocketCount           *int   `xml:"MaximumSocketCount"`
	MinimumHardwareVersion       *int   `xml:"MinimumHardwareVersion"`
	PersonalizationEnabled       *bool  `xml:"PersonalizationEnabled"`
	PersonalizationAuto          *bool  `xml:"PersonalizationAuto"`
	SysprepPackagingSupported    *bool  `xml:"SysprepPackagingSupported"`
	SupportsMemHotAdd            *bool  `xml:"SupportsMemHotAdd"`
	CimOsId                      *int   `xml:"cimOsId"`
	CimVersion                   *int   `xml:"CimVersion"`
	SupportedForCreate           *bool  `xml:"SupportedForCreate"`

	RecommendedNIC []struct {
		Name string `xml:"name,attr"`
		Id   *int   `xml:"id,attr,omitempty"`
	} `xml:"RecommendedNIC"`

	SupportedNICType []struct {
		Name string `xml:"name,attr"`
		Id   *int   `xml:"id,attr,omitempty"`
	} `xml:"SupportedNICType"`

	RecommendedFirmware string   `xml:"RecommendedFirmware"`
	SupportedFirmware   []string `xml:"SupportedFirmware"`
	SupportsTPM         *bool    `xml:"SupportsTPM"`
}

OperatingSystemInfoType describes a operating system

type Org

type Org struct {
	HREF         string           `xml:"href,attr,omitempty"`
	Type         string           `xml:"type,attr,omitempty"`
	ID           string           `xml:"id,attr,omitempty"`
	OperationKey string           `xml:"operationKey,attr,omitempty"`
	Name         string           `xml:"name,attr"`
	Description  string           `xml:"Description,omitempty"`
	FullName     string           `xml:"FullName"`
	IsEnabled    bool             `xml:"IsEnabled,omitempty"`
	Link         LinkList         `xml:"Link,omitempty"`
	Tasks        *TasksInProgress `xml:"Tasks,omitempty"`
}

Org represents the user view of a VMware Cloud Director organization. Type: OrgType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents the user view of a VMware Cloud Director organization. Since: 0.9

type OrgFederationSettings

type OrgFederationSettings struct {
	Href                            string   `xml:"href,attr,omitempty" json:"href,omitempty"`
	Type                            string   `xml:"type,attr,omitempty" json:"type,omitempty"`
	Link                            LinkList `xml:"Link,omitempty" json:"link,omitempty"`
	SAMLMetadata                    string   `xml:"SAMLMetadata" json:"samlMetadata"`
	Enabled                         bool     `xml:"Enabled" json:"enabled"`
	CertificateExpiration           string   `xml:"CertificateExpiration" json:"certificateExpiration"`
	SigningCertificateExpiration    string   `xml:"SigningCertificateExpiration" json:"signingCertificateExpiration"`
	EncryptionCertificateExpiration string   `xml:"EncryptionCertificateExpiration" json:"encryptionCertificateExpiration"`
	SamlSPEntityID                  string   `xml:"SamlSPEntityId" json:"samlSPEntityId"`
	SamlAttributeMapping            struct {
		Href                   string   `xml:"href,attr,omitempty" json:"href,omitempty"`
		Type                   string   `xml:"type,attr,omitempty" json:"type,omitempty"`
		Link                   LinkList `xml:"Link,omitempty" json:"link,omitempty"`
		EmailAttributeName     string   `xml:"EmailAttributeName,omitempty" json:"emailAttributeName,omitempty"`
		UserNameAttributeName  string   `xml:"UserNameAttributeName,omitempty" json:"userNameAttributeName,omitempty"`
		FirstNameAttributeName string   `xml:"FirstNameAttributeName,omitempty" json:"firstNameAttributeName,omitempty"`
		SurnameAttributeName   string   `xml:"SurnameAttributeName,omitempty" json:"surnameAttributeName,omitempty"`
		FullNameAttributeName  string   `xml:"FullNameAttributeName,omitempty" json:"fullNameAttributeName,omitempty"`
		GroupAttributeName     string   `xml:"GroupAttributeName,omitempty" json:"groupAttributeName,omitempty"`
		RoleAttributeName      string   `xml:"RoleAttributeName,omitempty" json:"roleAttributeName,omitempty"`
	} `xml:"SamlAttributeMapping,omitempty" json:"samlAttributeMapping,omitempty"`
	SigningCertLibraryItemID    string `xml:"SigningCertLibraryItemId" json:"signingCertLibraryItemId"`
	EncryptionCertLibraryItemID string `xml:"EncryptionCertLibraryItemId" json:"encryptionCertLibraryItemID"`
}

OrgFederationSettings is the structure used to set SAML identity service for an organization

type OrgGeneralSettings

type OrgGeneralSettings struct {
	HREF string   `xml:"href,attr,omitempty"` // The URI of the entity.
	Type string   `xml:"type,attr,omitempty"` // The MIME type of the entity.
	Link LinkList `xml:"Link,omitempty"`      // A reference to an entity or operation associated with this object.

	CanPublishCatalogs       bool `xml:"CanPublishCatalogs,omitempty"`
	CanPublishExternally     bool `xml:"CanPublishExternally,omitempty"`
	CanSubscribe             bool `xml:"CanSubscribe,omitempty"`
	DeployedVMQuota          int  `xml:"DeployedVMQuota,omitempty"`
	StoredVMQuota            int  `xml:"StoredVmQuota,omitempty"`
	UseServerBootSequence    bool `xml:"UseServerBootSequence,omitempty"`
	DelayAfterPowerOnSeconds int  `xml:"DelayAfterPowerOnSeconds,omitempty"`
}

OrgGeneralSettingsType represents the general settings for a VMware Cloud Director organization. Type: OrgGeneralSettingsType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents the user view of a VMware Cloud Director organization. Since: 0.9

type OrgGroupList added in v2.8.0

type OrgGroupList struct {
	Group []*Reference `xml:"GroupReference,omitempty"`
}

type OrgLdapGroupAttributes

type OrgLdapGroupAttributes struct {
	ObjectClass          string `xml:"ObjectClass"`
	ObjectIdentifier     string `xml:"ObjectIdentifier"`
	GroupName            string `xml:"GroupName"`
	Membership           string `xml:"Membership"`
	MembershipIdentifier string `xml:"MembershipIdentifier"`
	BackLinkIdentifier   string `xml:"BackLinkIdentifier,omitempty"`
}

OrgLdapGroupAttributes represents the ldap group attribute settings for a VMware Cloud Director organization. Type: OrgLdapGroupAttributesType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents the ldap group attribute settings of a VMware Cloud Director organization. Since: 0.9 Note. Order of these fields matter and API will error if it is changed

type OrgLdapSettingsType

type OrgLdapSettingsType struct {
	XMLName xml.Name `xml:"OrgLdapSettings"`
	Xmlns   string   `xml:"xmlns,attr,omitempty"`
	HREF    string   `xml:"href,attr,omitempty"` // The URI of the entity.
	Type    string   `xml:"type,attr,omitempty"` // The MIME type of the entity.
	Link    LinkList `xml:"Link,omitempty"`      // A reference to an entity or operation associated with this object.

	OrgLdapMode           string                 `xml:"OrgLdapMode,omitempty"`           // LDAP mode you want
	CustomUsersOu         string                 `xml:"CustomUsersOu,omitempty"`         // If OrgLdapMode is SYSTEM, specifies an LDAP attribute=value pair to use for OU (organizational unit).
	CustomOrgLdapSettings *CustomOrgLdapSettings `xml:"CustomOrgLdapSettings,omitempty"` // Needs to be set if user chooses custom mode
}

OrgLdapSettingsType represents the ldap settings for a VMware Cloud Director organization. Type: OrgLdapSettingsType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents the ldap settings of a VMware Cloud Director organization. Since: 0.9

type OrgLdapUserAttributes

type OrgLdapUserAttributes struct {
	ObjectClass               string `xml:"ObjectClass"`
	ObjectIdentifier          string `xml:"ObjectIdentifier"`
	Username                  string `xml:"UserName,omitempty"`
	Email                     string `xml:"Email"`
	FullName                  string `xml:"FullName"`
	GivenName                 string `xml:"GivenName"`
	Surname                   string `xml:"Surname"`
	Telephone                 string `xml:"Telephone"`
	GroupMembershipIdentifier string `xml:"GroupMembershipIdentifier"`
	GroupBackLinkIdentifier   string `xml:"GroupBackLinkIdentifier,omitempty"`
}

OrgLdapUserAttributesType represents the ldap user attribute settings for a VMware Cloud Director organization. Type: OrgLdapUserAttributesType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents the ldap user attribute settings of a VMware Cloud Director organization. Since: 0.9 Note. Order of these fields matter and API will error if it is changed.

type OrgList

type OrgList struct {
	Link LinkList `xml:"Link,omitempty"`
	Org  []*Org   `xml:"Org,omitempty"`
}

OrgList represents a lists of Organizations Type: OrgType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a list of VMware Cloud Director organizations. Since: 0.9

type OrgRoleType added in v2.3.0

type OrgRoleType struct {
	RoleReference []*Reference `xml:"RoleReference,omitempty"`
}

List of available roles in the organization

type OrgSettings

type OrgSettings struct {
	//attributes
	HREF string `xml:"href,attr,omitempty"` // The URI of the entity.
	Type string `xml:"type,attr,omitempty"` // The MIME type of the entity.
	//elements
	Link                    LinkList                   `xml:"Link,omitempty"`               // A reference to an entity or operation associated with this object.
	OrgGeneralSettings      *OrgGeneralSettings        `xml:"OrgGeneralSettings,omitempty"` // General Settings for the org, not-required
	OrgVAppLeaseSettings    *VAppLeaseSettings         `xml:"VAppLeaseSettings,omitempty"`
	OrgVAppTemplateSettings *VAppTemplateLeaseSettings `xml:"VAppTemplateLeaseSettings,omitempty"` // Vapp template lease settings, not required
	OrgLdapSettings         *OrgLdapSettingsType       `xml:"OrgLdapSettings,omitempty"`           //LDAP settings, not-requried, defaults to none

}

OrgSettingsType represents the settings for a VMware Cloud Director organization. Type: OrgSettingsType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents the settings of a VMware Cloud Director organization. Since: 0.9

type OrgUserList added in v2.3.0

type OrgUserList struct {
	User []*Reference `xml:"UserReference,omitempty"`
}

List of the users within the organization

type OrgVDCNetwork

type OrgVDCNetwork struct {
	XMLName         xml.Name              `xml:"OrgVdcNetwork"`
	Xmlns           string                `xml:"xmlns,attr,omitempty"`
	HREF            string                `xml:"href,attr,omitempty"`
	Type            string                `xml:"type,attr,omitempty"`
	ID              string                `xml:"id,attr,omitempty"`
	OperationKey    string                `xml:"operationKey,attr,omitempty"`
	Name            string                `xml:"name,attr"`
	Status          string                `xml:"status,attr,omitempty"`
	Link            []Link                `xml:"Link,omitempty"`
	Description     string                `xml:"Description,omitempty"`
	Configuration   *NetworkConfiguration `xml:"Configuration,omitempty"`
	EdgeGateway     *Reference            `xml:"EdgeGateway,omitempty"`
	ServiceConfig   *GatewayFeatures      `xml:"ServiceConfig,omitempty"` // Specifies the service configuration for an isolated Org VDC networks
	IsShared        bool                  `xml:"IsShared"`
	VimPortGroupRef []*VimObjectRef       `xml:"VimPortGroupRef,omitempty"` // Needed to set up DHCP inside ServiceConfig
	Tasks           *TasksInProgress      `xml:"Tasks,omitempty"`
}

OrgVDCNetwork represents an Org VDC network in the vCloud model. Type: OrgVdcNetworkType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents an Org VDC network in the vCloud model. Since: 5.1

type OrgVdcNetworkSegmentProfiles added in v2.22.0

type OrgVdcNetworkSegmentProfiles struct {
	// SegmentProfileTemplate contains a read-only reference to Segment Profile Template
	// To update Segment Profile Template for a particular Org VDC network, one must use
	// `OpenApiOrgVdcNetwork.SegmentProfileTemplate` field and `OpenApiOrgVdcNetwork.Update()`
	SegmentProfileTemplate *SegmentProfileTemplateRef `json:"segmentProfileTemplate,omitempty"`

	IPDiscoveryProfile     *Reference `json:"ipDiscoveryProfile"`
	MacDiscoveryProfile    *Reference `json:"macDiscoveryProfile"`
	QosProfile             *Reference `json:"qosProfile"`
	SegmentSecurityProfile *Reference `json:"segmentSecurityProfile"`
	SpoofGuardProfile      *Reference `json:"spoofGuardProfile"`
}

OrgVdcNetworkSegmentProfiles defines Segment Profile configuration structure for Org VDC networks An Org VDC network may have a Segment Profile Template assigned, or individual Segment Profiles

type OrgVdcNetworkSubnetIPRangeValues added in v2.11.0

type OrgVdcNetworkSubnetIPRangeValues = ExternalNetworkV2IPRange

OrgVdcNetworkSubnetIPRangeValues is a type alias to reuse the same definitions with appropriate names

type OrgVdcNetworkSubnetIPRanges added in v2.11.0

type OrgVdcNetworkSubnetIPRanges = ExternalNetworkV2IPRanges

OrgVdcNetworkSubnetIPRanges is a type alias to reuse the same definitions with appropriate names

type OrgVdcNetworkSubnetValues added in v2.11.0

type OrgVdcNetworkSubnetValues struct {
	Gateway      string                      `json:"gateway"`
	PrefixLength int                         `json:"prefixLength"`
	DNSServer1   string                      `json:"dnsServer1"`
	DNSServer2   string                      `json:"dnsServer2"`
	DNSSuffix    string                      `json:"dnsSuffix"`
	IPRanges     OrgVdcNetworkSubnetIPRanges `json:"ipRanges"`
}

type OrgVdcNetworkSubnets added in v2.11.0

type OrgVdcNetworkSubnets struct {
	Values []OrgVdcNetworkSubnetValues `json:"values"`
}

OrgVdcNetworkSubnets

type OvfEnvironment added in v2.20.0

type OvfEnvironment struct {
	XMLName                xml.Name                `xml:"Environment"`
	Ve                     string                  `xml:"ve,attr,omitempty"`                // Xml namespace
	Id                     string                  `xml:"id,attr,omitempty"`                // Identification of VM from OVF Descriptor. Describes this virtual system.
	VCenterId              string                  `xml:"vCenterId,attr,omitempty"`         // VM moref in the vCenter
	PlatformSection        *PlatformSection        `xml:"PlatformSection,omitempty"`        // Describes the virtualization platform
	PropertySection        *PropertySection        `xml:"PropertySection,omitempty"`        // Property elements with key/value pairs
	EthernetAdapterSection *EthernetAdapterSection `xml:"EthernetAdapterSection,omitempty"` // Contains adapters info and virtual networks attached
}

The OVF environment enables the guest software to access information about the virtualization platform, such as the user-specified values for the properties defined in the OVF descriptor.

type OvfProperty added in v2.20.0

type OvfProperty struct {
	Key   string `xml:"key,attr"`
	Value string `xml:"value,attr"`
}

type Owner

type Owner struct {
	HREF string     `xml:"href,attr,omitempty"`
	Type string     `xml:"type,attr,omitempty"`
	Link LinkList   `xml:"Link,omitempty"`
	User *Reference `xml:"User"`
}

Owner represents the owner of this entity. Type: OwnerType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents the owner of this entity. Since: 1.5

type ParticipatingOrgVdcs added in v2.14.0

type ParticipatingOrgVdcs struct {
	FaultDomainTag       string           `json:"faultDomainTag,omitempty"`       // Represents the fault domain of a given organization vDC. For NSX_V backed organization vDCs, this is the network provider scope. For NSX_T backed organization vDCs, this can vary (for example name of the provider vDC or compute provider scope).
	NetworkProviderScope string           `json:"networkProviderScope,omitempty"` // Read-only field that specifies the network provider scope of the vDC.
	OrgRef               OpenApiReference `json:"orgRef,omitempty"`               // Read-only field that specifies what organization this vDC is in.
	RemoteOrg            bool             `json:"remoteOrg,omitempty"`            // Read-only field that specifies whether the vDC is local to this VCD site.
	SiteRef              OpenApiReference `json:"siteRef,omitempty"`              // The site ID that this vDC belongs to. Required for universal vDC groups.
	Status               string           `json:"status,omitempty"`               // The status that the vDC can be in. An example is if the vDC has been deleted from the system but is still part of the group. Possible values are: SAVING, SAVED, CONFIGURING, REALIZED, REALIZATION_FAILED, DELETING, DELETE_FAILED, OBJECT_NOT_FOUND, UNCONFIGURED
	VdcRef               OpenApiReference `json:"vdcRef"`                         // The reference to the vDC that is part of this a vDC group.
}

ParticipatingOrgVdcs is a participating Org VDCs definition

type PlatformSection added in v2.20.0

type PlatformSection struct {
	XMLName xml.Name `xml:"PlatformSection"`
	Kind    string   `xml:"Kind,omitempty"`    // Hypervisor kind is typically VMware ESXi
	Version string   `xml:"Version,omitempty"` // Hypervisor version
	Vendor  string   `xml:"Vendor,omitempty"`  // VMware, Inc.
	Locale  string   `xml:"Locale,omitempty"`  // Hypervisor locale
}

Provides information from the virtualization platform

type PortGroupRecordType added in v2.2.0

type PortGroupRecordType struct {
	Xmlns         string  `xml:"xmlns,attr,omitempty"`
	HREF          string  `xml:"href,attr,omitempty"`
	Id            string  `xml:"id,attr,omitempty"`
	Type          string  `xml:"type,attr,omitempty"`
	MoRef         string  `xml:"moref,attr,omitempty"`
	Name          string  `xml:"name,attr,omitempty"`
	PortgroupType string  `xml:"portgroupType,attr,omitempty"`
	Vc            string  `xml:"vc,attr,omitempty"`
	VcName        string  `xml:"vcName,attr,omitempty"`
	IsVCEnabled   bool    `xml:"isVCEnabled,attr,omitempty"`
	Network       string  `xml:"network,attr,omitempty"`
	NetworkName   string  `xml:"networkName,attr,omitempty"`
	ScopeType     int     `xml:"scopeType,attr,omitempty"` // Scope of network using the portgroup(1=Global, 2=Organization, 3=vApp)
	Link          []*Link `xml:"Link,omitempty"`
}

Represents port group Reference: vCloud API 27.0 - Port group type https://code.vmware.com/apis/72/doc/doc/types/QueryResultPortgroupRecordType.html

type PrefixLengthUtilizations added in v2.21.0

type PrefixLengthUtilizations struct {
	PrefixLength int `json:"prefixLength"`
	// TotalCount contains total number of IP Prefixes. If user does not own this IP Space, this is
	// the quota that the user's organization is granted. A '-1' value means that the user's
	// organization has no cap on the quota.
	TotalCount int `json:"totalCount"`
	// AllocatedCount contains the number of allocated IP prefixes.
	AllocatedCount int `json:"allocatedCount"`
}

type ProbeResult added in v2.17.0

type ProbeResult struct {
	Result              string   `json:"result,omitempty"`              // Localized message describing the connection result stating success or an error message with a brief summary.
	ResolvedIp          string   `json:"resolvedIp,omitempty"`          // The IP address the host was resolved to, if not going through a proxy.
	CanConnect          bool     `json:"canConnect,omitempty"`          // If vCD can establish a connection on the specified port.
	SSLHandshake        bool     `json:"sslHandshake,omitempty"`        // If an SSL Handshake succeeded (secure requests only).
	ConnectionResult    string   `json:"connectionResult,omitempty"`    // A code describing the result of establishing a connection. It can be either SUCCESS, ERROR_CANNOT_RESOLVE_IP or ERROR_CANNOT_CONNECT.
	SSLResult           string   `json:"sslResult,omitempty"`           // A code describing the result of the SSL handshake. It can be either SUCCESS, ERROR_SSL_ERROR, ERROR_UNTRUSTED_CERTIFICATE, ERROR_CANNOT_VERIFY_HOSTNAME or null.
	CertificateChain    string   `json:"certificateChain,omitempty"`    // The SSL certificate chain presented by the server if a secure connection was made.
	AdditionalCAIssuers []string `json:"additionalCAIssuers,omitempty"` // URLs supplied by Certificate Authorities to retrieve signing certificates, when those certificates are not included in the chain.
}

ProbeResult results of a connection test to a specific endpoint.

type ProductSection

type ProductSection struct {
	Info     string      `xml:"Info,omitempty"`
	Property []*Property `xml:"http://schemas.dmtf.org/ovf/envelope/1 Property,omitempty"`
}

type ProductSectionList

type ProductSectionList struct {
	XMLName        xml.Name        `xml:"ProductSectionList"`
	Ovf            string          `xml:"xmlns:ovf,attr,omitempty"`
	Xmlns          string          `xml:"xmlns,attr"`
	ProductSection *ProductSection `xml:"http://schemas.dmtf.org/ovf/envelope/1 ProductSection,omitempty"`
}

func (*ProductSectionList) SortByPropertyKeyName added in v2.4.0

func (p *ProductSectionList) SortByPropertyKeyName()

SortByPropertyKeyName allows to sort ProductSectionList property slice by key name as the API is does not always return an ordered slice

type Property

type Property struct {
	Key              string `xml:"http://schemas.dmtf.org/ovf/envelope/1 key,attr,omitempty"`
	Label            string `xml:"http://schemas.dmtf.org/ovf/envelope/1 Label,omitempty"`
	Description      string `xml:"http://schemas.dmtf.org/ovf/envelope/1 Description,omitempty"`
	DefaultValue     string `xml:"http://schemas.dmtf.org/ovf/envelope/1 value,attr"`
	Value            *Value `xml:"http://schemas.dmtf.org/ovf/envelope/1 Value,omitempty"`
	Type             string `xml:"http://schemas.dmtf.org/ovf/envelope/1 type,attr,omitempty"`
	UserConfigurable bool   `xml:"http://schemas.dmtf.org/ovf/envelope/1 userConfigurable,attr"`
}

type PropertySection added in v2.20.0

type PropertySection struct {
	XMLName    xml.Name       `xml:"PropertySection"`
	Properties []*OvfProperty `xml:"Property,omitempty"`
}

Contains a list of key/value pairs corresponding to properties defined in the OVF descriptor Operating system level configuration, such as host names, IP address, subnets, gateways, etc. Application-level configuration such as DNS name of active directory server, databases and other external services.

type ProviderStorageProfiles added in v2.17.0

type ProviderStorageProfiles struct {
	ProviderVdcStorageProfile []*Reference `xml:"ProviderVdcStorageProfile" json:"providerVdcStorageProfile,omitempty"`
}

ProviderStorageProfiles is a container for references to storage profiles associated with a Provider vDC. Type: ProviderVdcStorageProfilesType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Container for references to storage profiles associated with a Provider vDC. Since: 0.9

type ProviderVdc added in v2.17.0

type ProviderVdc struct {
	HREF         string `xml:"href,attr,omitempty" json:"href,omitempty"`
	Type         string `xml:"type,attr,omitempty" json:"type,omitempty"`
	ID           string `xml:"id,attr,omitempty" json:"id,omitempty"`
	OperationKey string `xml:"operationKey,attr,omitempty" json:"operationKey,omitempty"`
	Name         string `xml:"name,attr" json:"name"`
	Status       int    `xml:"status,attr,omitempty" json:"status,omitempty"` // -1 (creation failed), 0 (not ready), 1 (ready), 2 (unknown), 3 (unrecognized)

	AvailableNetworks     *AvailableNetworks       `xml:"AvailableNetworks,omitempty" json:"availableNetworks,omitempty"`         // Read-only list of available networks.
	Capabilities          *Capabilities            `xml:"Capabilities,omitempty" json:"capabilities,omitempty"`                   // Read-only list of virtual hardware versions supported by this Provider VDC.
	ComputeCapacity       *RootComputeCapacity     `xml:"ComputeCapacity,omitempty" json:"computeCapacity,omitempty"`             // Read-only indicator of CPU and memory capacity.
	Description           string                   `xml:"Description,omitempty" json:"description,omitempty"`                     // Optional description.
	IsEnabled             *bool                    `xml:"IsEnabled,omitempty" json:"isEnabled,omitempty"`                         // True if this Provider VDC is enabled and can provide resources to organization VDCs. A Provider VDC is always enabled on creation.
	Link                  *LinkList                `xml:"Link,omitempty" json:"link,omitempty"`                                   // A reference to an entity or operation associated with this object.
	NetworkPoolReferences *NetworkPoolReferences   `xml:"NetworkPoolReferences,omitempty" json:"networkPoolReferences,omitempty"` // Read-only list of network pools used by this Provider VDC.
	StorageProfiles       *ProviderStorageProfiles `xml:"StorageProfiles,omitempty" json:"storageProfiles,omitempty"`             // Container for references to vSphere storage profiles available to this Provider VDC.
	Tasks                 *TasksInProgress         `xml:"Tasks,omitempty" json:"tasks,omitempty"`                                 // A list of queued, running, or recently completed tasks associated with this entity.
}

ProviderVdc represents a Provider VDC. Type: ProviderVdcType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a Provider VDC. Since: 0.9

type ProviderVdcCapacity added in v2.17.0

type ProviderVdcCapacity struct {
	Allocation int64  `xml:"Allocation,omitempty"`
	Overhead   int64  `xml:"Overhead,omitempty"`
	Reserved   int64  `xml:"Reserved,omitempty"`
	Total      int64  `xml:"Total,omitempty"`
	Units      string `xml:"Units"`
	Used       int64  `xml:"Used,omitempty"`
}

ProviderVdcCapacity represents resource capacity in a Provider vDC. Type: ProviderVdcCapacityType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents resource capacity in a Provider vDC. Since: 0.9

type ProviderVdcCreation added in v2.21.0

type ProviderVdcCreation struct {
	Name                            string         `json:"name"`
	Description                     string         `json:"description"`
	ResourcePoolRefs                *VimObjectRefs `json:"resourcePoolRefs"`
	HighestSupportedHardwareVersion string         `json:"highestSupportedHardwareVersion"`
	IsEnabled                       bool           `json:"isEnabled"`
	VimServer                       []*Reference   `json:"vimServer"`
	StorageProfile                  []string       `json:"storageProfile"`
	NsxTManagerReference            *Reference     `json:"nsxTManagerReference"`
	NetworkPool                     *Reference     `json:"networkPool"`
	AutoCreateNetworkPool           bool           `json:"autoCreateNetworkPool"`
}

ProviderVdcCreation contains the data needed to create a provider VDC. Note that this is a subset of the full structure of a provider VDC.

type ProxyTestConnection added in v2.17.0

type ProxyTestConnection struct {
	ProxyHost     string `json:"proxyHost"`               // The host (or IP address) of the proxy.
	ProxyPort     int    `json:"proxyPort"`               // The port to use when connecting to the proxy.
	ProxyUsername string `json:"proxyUsername,omitempty"` // Username to authenticate to the proxy.
	ProxyPassword string `json:"proxyPassword,omitempty"` // Password to authenticate to the proxy.
	ProxySecure   *bool  `json:"proxySecure,omitempty"`   // If the connection to the proxy should use https.
}

ProxyTestConnection defines the proxy connection to use for TestConnection (if any).

type PublishCatalogParams added in v2.22.0

type PublishCatalogParams struct {
	XMLName     xml.Name `xml:"PublishCatalogParams"`
	Xmlns       string   `xml:"xmlns,attr,omitempty"`
	IsPublished *bool    `xml:"IsPublished,omitempty"` // True enables  publication (read-only access)
}

PublishCatalogParams represents the configuration parameters of a catalog published to other orgs. It is used in conjunction with the "IsPublished" state of the catalog itself

type PublishExternalCatalogParams

type PublishExternalCatalogParams struct {
	Xmlns                    string `xml:"xmlns,attr,omitempty"`
	IsPublishedExternally    *bool  `xml:"IsPublishedExternally,omitempty"`    // True enables external publication as configured by these parameters.
	CatalogPublishedUrl      string `xml:"catalogPublishedUrl,omitempty"`      // Read-only endpoint URL supplied by the server. External subscribers can connect to the catalog at this URL.
	Password                 string `xml:"Password,omitempty"`                 // Password required when connecting to the endpoint.
	IsCachedEnabled          *bool  `xml:"IsCacheEnabled,omitempty"`           // True enables content caching for this catalog. All items in the catalog are created and stored in transfer storage. If false, items are not placed in transfer storage until they are requested by a subscriber. Note that access to this attribute is reserved to users with role that includes the right 'Catalog: VCSP Publish Subscribe Caching'.
	PreserveIdentityInfoFlag *bool  `xml:"PreserveIdentityInfoFlag,omitempty"` // True includes BIOS UUIDs and MAC addresses in the downloaded OVF package. If false, those information will be excluded.
}

PublishExternalCatalogParamsType represents the configuration parameters of a catalog published externally Type: PublishExternalCatalogParamsType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents the configuration parameters of a catalog published externally. Since: 5.5

type PvdcLogicalVmGroupsMap added in v2.17.0

type PvdcLogicalVmGroupsMap struct {
	LogicalVmGroups OpenApiReferences `json:"logicalVmGroups,omitempty"`
	Pvdc            OpenApiReference  `json:"pvdc,omitempty"`
}

PvdcLogicalVmGroupsMap is a combination of a reference to a Provider VDC and a list of references to Logical VM Groups. This is used for VM Placement Policies (see VdcComputePolicyV2)

type PvdcNamedVmGroupsMap added in v2.17.0

type PvdcNamedVmGroupsMap struct {
	NamedVmGroups []OpenApiReferences `json:"namedVmGroups,omitempty"`
	Pvdc          OpenApiReference    `json:"pvdc,omitempty"`
}

PvdcNamedVmGroupsMap is a combination of a reference to a Provider VDC and a list of references to Named VM Groups. This is used for VM Placement Policies (see VdcComputePolicyV2)

type PvdcVgpuClustersMap added in v2.22.0

type PvdcVgpuClustersMap struct {
	Clusters []string         `json:"clusters,omitempty"`
	Pvdc     OpenApiReference `json:"pvdc,omitempty"`
}

type QueryResultAdminOrgVdcStorageProfileRecordType added in v2.17.0

type QueryResultAdminOrgVdcStorageProfileRecordType struct {
	// Attributes
	HREF                    string `xml:"href,attr,omitempty"`                    // The URI of the entity.
	ID                      string `xml:"id,attr,omitempty"`                      // The ID of the entity.
	Type                    string `xml:"type,attr,omitempty"`                    // Contains the type of the resource.
	Name                    string `xml:"name,attr,omitempty"`                    // Name of the storage profile.
	IsEnabled               bool   `xml:"isEnabled,attr,omitempty"`               // True if this entity is enabled.
	IsDefaultStorageProfile bool   `xml:"isDefaultStorageProfile,attr,omitempty"` // True if this is the default storage profile for a VDC.
	StorageUsedMB           uint64 `xml:"storageUsedMB,attr,omitempty"`           // Storage used in MB.
	StorageLimitMB          uint64 `xml:"storageLimitMB,attr,omitempty"`          // Storage limit in MB.
	IopsAllocated           uint64 `xml:"iopsAllocated,attr,omitempty"`           // Total currently allocated IOPS on the storage profile.
	IopsLimit               uint64 `xml:"iopsLimit,attr,omitempty"`               // IOPS limit for the storage profile.
	NumberOfConditions      int    `xml:"numberOfConditions,attr,omitempty"`      // Number of conditions on the storage profile.
	Vdc                     string `xml:"vdc,attr,omitempty"`                     // VDC reference or id.
	VdcName                 string `xml:"vdcName,attr,omitempty"`                 // VDC name.
	Org                     string `xml:"org,attr,omitempty"`                     // Organization reference or id.
	VC                      string `xml:"vc,attr,omitempty"`                      // Virtual center reference or id.
	StorageProfileMoref     string `xml:"storageProfileMoref,omitempty"`
	// Elements
	Link          []*Link          `xml:"Link,omitempty"`
	MetadataEntry []*MetadataEntry `xml:"MetadataEntry,omitempty"`
}

QueryResultAdminOrgVdcStorageProfileRecordType represents a storage profile as query result. https://code.vmware.com/apis/722/vmware-cloud-director/doc/doc/types/QueryResultAdminOrgVdcStorageProfileRecordType.html

type QueryResultCatalogItemType added in v2.8.0

type QueryResultCatalogItemType struct {
	HREF         string    `xml:"href,attr,omitempty"`         // The URI of the entity.
	ID           string    `xml:"id,attr,omitempty"`           // Catalog Item ID.
	Type         string    `xml:"type,attr,omitempty"`         // The MIME type of the entity.
	Entity       string    `xml:"entity,attr,omitempty"`       // Entity reference or ID
	EntityName   string    `xml:"entityName,attr,omitempty"`   // Entity name
	EntityType   string    `xml:"entityType,attr,omitempty"`   // Entity type
	Catalog      string    `xml:"catalog,attr,omitempty"`      // Catalog reference or ID
	CatalogName  string    `xml:"catalogName,attr,omitempty"`  // Catalog name
	OwnerName    string    `xml:"ownerName,attr,omitempty"`    // Owner name
	Owner        string    `xml:"owner,attr,omitempty"`        // Owner reference or ID
	IsPublished  bool      `xml:"isPublished,attr,omitempty"`  // True if this entity is in a published catalog
	Vdc          string    `xml:"vdc,attr,omitempty"`          // VDC reference or ID
	VdcName      string    `xml:"vdcName,attr,omitempty"`      // VDC name
	IsVdcEnabled bool      `xml:"isVdcEnabled,attr,omitempty"` // True if the containing VDC is enabled
	CreationDate string    `xml:"creationDate,attr,omitempty"` // Creation date
	IsExpired    bool      `xml:"isExpired,attr,omitempty"`    // True if this entity is expired
	Status       string    `xml:"status,attr,omitempty"`       // Status
	Name         string    `xml:"name,attr,omitempty"`         // Catalog Item name.
	Link         *Link     `xml:"Link,omitempty"`
	Metadata     *Metadata `xml:"Metadata,omitempty"`
}

QueryResultCatalogItemType represents a catalog item as query result

type QueryResultEdgeGatewayRecordType

type QueryResultEdgeGatewayRecordType struct {
	// Attributes
	HREF                string `xml:"href,attr,omitempty"`                // The URI of the entity.
	Type                string `xml:"type,attr,omitempty"`                // The MIME type of the entity.
	Name                string `xml:"name,attr,omitempty"`                // EdgeGateway name.
	Vdc                 string `xml:"vdc,attr,omitempty"`                 // VDC Reference or ID
	OrgVdcName          string `xml:"orgVdcName,attr,omitempty"`          // VDC name
	NumberOfExtNetworks int    `xml:"numberOfExtNetworks,attr,omitempty"` // Number of external networks connected to the edgeGateway.	Yes	Yes
	NumberOfOrgNetworks int    `xml:"numberOfOrgNetworks,attr,omitempty"` // Number of org VDC networks connected to the edgeGateway	Yes	Yes
	IsBusy              bool   `xml:"isBusy,attr"`                        // True if this Edge Gateway is busy.	Yes	Yes
	GatewayStatus       string `xml:"gatewayStatus,attr,omitempty"`       //
	HaStatus            string `xml:"haStatus,attr,omitempty"`            // High Availability Status of the edgeGateway	Yes	Yes
}

QueryResultEdgeGatewayRecordType represents an edge gateway record as query result.

type QueryResultEdgeGatewayRecordsType

type QueryResultEdgeGatewayRecordsType struct {
	// Attributes
	HREF     string  `xml:"href,attr,omitempty"`     // The URI of the entity.
	Type     string  `xml:"type,attr,omitempty"`     // The MIME type of the entity.
	Name     string  `xml:"name,attr,omitempty"`     // The name of the entity.
	Page     int     `xml:"page,attr,omitempty"`     // Page of the result set that this container holds. The first page is page number 1.
	PageSize int     `xml:"pageSize,attr,omitempty"` // Page size, as a number of records or references.
	Total    float64 `xml:"total,attr,omitempty"`    // Total number of records or references in the container.
	// Elements
	Link              []*Link                             `xml:"Link,omitempty"`    // A reference to an entity or operation associated with this object.
	EdgeGatewayRecord []*QueryResultEdgeGatewayRecordType `xml:"EdgeGatewayRecord"` // A record representing a EdgeGateway result.
}

QueryResultEdgeGatewayRecordsType is a container for query results in records format. Type: QueryResultRecordsType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Container for query results in records format. Since: 1.5

type QueryResultNetworkPoolRecordType

type QueryResultNetworkPoolRecordType struct {
	// Attributes
	HREF            string `xml:"href,attr,omitempty"` // The URI of the entity.
	Name            string `xml:"name,attr,omitempty"` // Network pool name.
	IsBusy          bool   `xml:"isBusy,attr,omitempty"`
	NetworkPoolType int    `xml:"networkPoolType,attr,omitempty"`
}

QueryResultNetworkPoolRecordType represents a network pool as query result.

type QueryResultNsxtManagerRecordType added in v2.9.0

type QueryResultNsxtManagerRecordType struct {
	Xmlns      string  `xml:"xmlns,attr,omitempty"`
	Name       string  `xml:"name,attr"`
	URL        string  `xml:"url,attr"`
	HREF       string  `xml:"href,attr"`
	Site       string  `xml:"site,attr"`
	LocationId string  `xml:"locationId,attr"`
	SiteName   string  `xml:"siteName,attr"`
	Link       []*Link `xml:"Link,omitempty"`
}

type QueryResultOrgVdcNetworkRecordType added in v2.3.0

type QueryResultOrgVdcNetworkRecordType struct {
	Xmlns              string    `xml:"xmlns,attr,omitempty"`
	HREF               string    `xml:"href,attr,omitempty"`
	Id                 string    `xml:"id,attr,omitempty"`
	Type               string    `xml:"type,attr,omitempty"`
	Name               string    `xml:"name,attr,omitempty"`
	DefaultGateway     string    `xml:"defaultGateway,attr,omitempty"`
	Netmask            string    `xml:"netmask,attr,omitempty"`
	Dns1               string    `xml:"dns1,attr,omitempty"`
	Dns2               string    `xml:"dns2,attr,omitempty"`
	DnsSuffix          string    `xml:"dnsSuffix,attr,omitempty"`
	LinkType           int       `xml:"linkType,attr,omitempty"` // 0 = direct, 1 = routed, 2 = isolated
	ConnectedTo        string    `xml:"connectedTo,attr,omitempty"`
	Vdc                string    `xml:"vdc,attr,omitempty"`
	IsBusy             bool      `xml:"isBusy,attr,omitempty"`
	IsShared           bool      `xml:"isShared,attr,omitempty"`
	VdcName            string    `xml:"vdcName,attr,omitempty"`
	IsIpScopeInherited bool      `xml:"isIpScopeInherited,attr,omitempty"`
	Link               []*Link   `xml:"Link,omitempty"`
	Metadata           *Metadata `xml:"Metadata,omitempty"`
}

Represents org VDC Network Reference: vCloud API 27.0 - Org VDC Network https://code.vmware.com/apis/72/doc/doc/types/QueryResultOrgVdcNetworkRecordType.html

type QueryResultOrgVdcRecordType added in v2.12.0

type QueryResultOrgVdcRecordType struct {
	HREF                           string    `xml:"href,attr,omitempty"`
	Name                           string    `xml:"name,attr,omitempty"`
	ComputeProviderScope           string    `xml:"computeProviderScope,attr,omitempty"`
	NetworkProviderScope           string    `xml:"networkProviderScope,attr,omitempty"`
	IsEnabled                      string    `xml:"isEnabled,attr,omitempty"`
	CpuAllocationMhz               *int      `xml:"cpuAllocationMhz,attr,omitempty"`
	CpuLimitMhz                    *int      `xml:"cpuLimitMhz,attr,omitempty"`
	CpuUsedMhz                     *int      `xml:"cpuUsedMhz,attr,omitempty"`
	MemoryAllocationMB             *int      `xml:"memoryAllocationMB,attr,omitempty"`
	MemoryLimitMB                  *int      `xml:"memoryLimitMB,attr,omitempty"`
	MemoryUsedMB                   *int      `xml:"memoryUsedMB,attr,omitempty"`
	StorageLimitMB                 *int      `xml:"storageLimitMB,attr,omitempty"`
	StorageUsedMB                  *int      `xml:"storageUsedMB,attr,omitempty"`
	StorageOverheadMB              *int      `xml:"storageOverheadMB,attr,omitempty"`
	MemoryOverheadMB               *int      `xml:"memoryOverheadMB,attr,omitempty"`
	NumberOfVApps                  *int      `xml:"numberOfVApps,attr,omitempty"`
	NumberOfUnmanagedVApps         *int      `xml:"numberOfUnmanagedVApps,attr,omitempty"`
	NumberOfMedia                  *int      `xml:"numberOfMedia,attr,omitempty"`
	NumberOfDisks                  *int      `xml:"numberOfDisks,attr,omitempty"`
	NumberOfVAppTemplates          *int      `xml:"numberOfVAppTemplates,attr,omitempty"`
	NumberOfStorageProfiles        *int      `xml:"numberOfStorageProfiles,attr,omitempty"`
	NumberOfVMs                    *int      `xml:"numberOfVMs,attr,omitempty"`
	NumberOfRunningVMs             *int      `xml:"numberOfRunningVMs,attr,omitempty"`
	NumberOfDeployedVApps          *int      `xml:"numberOfDeployedVApps,attr,omitempty"`
	NumberOfDeployedUnmanagedVApps *int      `xml:"numberOfDeployedUnmanagedVApps,attr,omitempty"`
	CpuOverheadMhz                 *int      `xml:"cpuOverheadMhz,attr,omitempty"`
	OrgName                        string    `xml:"orgName,attr,omitempty"`
	AllocationModel                string    `xml:"allocationModel,attr,omitempty"`
	VcName                         string    `xml:"vcName,attr,omitempty"`
	IsBusy                         string    `xml:"isBusy,attr,omitempty"`
	Status                         string    `xml:"status,attr,omitempty"`
	TaskStatusName                 string    `xml:"taskStatusName,attr,omitempty"`
	Task                           string    `xml:"task,attr,omitempty"`
	TaskStatus                     string    `xml:"taskStatus,attr,omitempty"`
	TaskDetails                    string    `xml:"taskDetails,attr,omitempty"`
	Metadata                       *Metadata `xml:"Metadata,omitempty"`

	// Admin Org VDC fields
	ProviderVdcName       string `xml:"providerVdcName,attr,omitempty"`
	ProviderVdc           string `xml:"providerVdc,attr,omitempty"`
	Org                   string `xml:"org,attr,omitempty"`
	NetworkPool           string `xml:"networkPool,attr,omitempty"`
	NumberOfResourcePools *int   `xml:"numberOfResourcePools,attr,omitempty"`
	UsedNetworksInVdc     string `xml:"usedNetworksInVdc,attr,omitempty"`
	IsThinProvisioned     string `xml:"isThinProvisioned,attr,omitempty"`
	IsFastProvisioned     string `xml:"isFastProvisioned,attr,omitempty"`
	NetworkProviderType   string `xml:"networkProviderType,attr,omitempty"`
	IsVCEnabled           string `xml:"isVCEnabled,attr,omitempty"`
	MemoryReservedMB      *int   `xml:"memoryReservedMB,attr,omitempty"`
	CpuReservedMhz        *int   `xml:"cpuReservedMhz,attr,omitempty"`
	Vc                    string `xml:"vc,attr,omitempty"`
}

QueryResultOrgVdcRecordType represents an Org VDC record

type QueryResultOrgVdcStorageProfileRecordType

type QueryResultOrgVdcStorageProfileRecordType struct {
	// Attributes
	HREF                    string `xml:"href,attr,omitempty"`                    // The URI of the entity.
	ID                      string `xml:"id,attr,omitempty"`                      // The ID of the entity.
	Type                    string `xml:"type,attr,omitempty"`                    // Contains the type of the resource.
	Name                    string `xml:"name,attr,omitempty"`                    // Name of the storage profile.
	IsEnabled               bool   `xml:"isEnabled,attr,omitempty"`               // True if this entity is enabled.
	IsDefaultStorageProfile bool   `xml:"isDefaultStorageProfile,attr,omitempty"` // True if this is the default storage profile for a VDC.
	StorageUsedMB           uint64 `xml:"storageUsedMB,attr,omitempty"`           // Storage used in MB.
	StorageLimitMB          uint64 `xml:"storageLimitMB,attr,omitempty"`          // Storage limit in MB.
	IopsAllocated           uint64 `xml:"iopsAllocated,attr,omitempty"`           // Total currently allocated IOPS on the storage profile.
	IopsLimit               uint64 `xml:"iopsLimit,attr,omitempty"`               // IOPS limit for the storage profile.
	NumberOfConditions      int    `xml:"numberOfConditions,attr,omitempty"`      // Number of conditions on the storage profile.
	Vdc                     string `xml:"vdc,attr,omitempty"`                     // VDC reference or id.
	VdcName                 string `xml:"vdcName,attr,omitempty"`                 // VDC name.
	IsVdcBusy               bool   `xml:"isVdcBusy,attr,omitempty"`               // True if the associated VDC is busy.
	// Elements
	Link          []*Link          `xml:"Link,omitempty"`
	MetadataEntry []*MetadataEntry `xml:"MetadataEntry,omitempty"`
}

QueryResultOrgVdcStorageProfileRecordType represents a storage profile as query result. https://code.vmware.com/apis/722/vmware-cloud-director/doc/doc/types/QueryResultOrgVdcStorageProfileRecordType.html

type QueryResultProviderVdcStorageProfileRecordType

type QueryResultProviderVdcStorageProfileRecordType struct {
	// Attributes
	HREF                 string `xml:"href,attr,omitempty"` // The URI of the entity.
	Name                 string `xml:"name,attr,omitempty"` // Provider VDC Storage Profile name.
	ProviderVdcHREF      string `xml:"providerVdc,attr,omitempty"`
	VcHREF               string `xml:"vc,attr,omitempty"`
	StorageProfileMoref  string `xml:"storageProfileMoref,attr,omitempty"`
	IsEnabled            bool   `xml:"isEnabled,attr,omitempty"`
	StorageProvisionedMB int64  `xml:"storageProvisionedMB,attr,omitempty"`
	StorageRequestedMB   int64  `xml:"storageRequestedMB,attr,omitempty"`
	StorageTotalMB       int64  `xml:"storageTotalMB,attr,omitempty"`
	StorageUsedMB        int64  `xml:"storageUsedMB,attr,omitempty"`
	NumberOfConditions   int    `xml:"numberOfConditions,attr,omitempty"`
}

QueryResultProviderVdcStorageProfileRecordType represents a Provider VDC storage profile as query result.

type QueryResultRecordsType

type QueryResultRecordsType struct {
	// Attributes
	HREF     string  `xml:"href,attr,omitempty"`     // The URI of the entity.
	Type     string  `xml:"type,attr,omitempty"`     // The MIME type of the entity.
	Name     string  `xml:"name,attr,omitempty"`     // The name of the entity.
	Page     int     `xml:"page,attr,omitempty"`     // Page of the result set that this container holds. The first page is page number 1.
	PageSize int     `xml:"pageSize,attr,omitempty"` // Page size, as a number of records or references.
	Total    float64 `xml:"total,attr,omitempty"`    // Total number of records or references in the container.
	// Elements
	Link                            []*Link                                           `xml:"Link,omitempty"`                  // A reference to an entity or operation associated with this object.
	EdgeGatewayRecord               []*QueryResultEdgeGatewayRecordType               `xml:"EdgeGatewayRecord"`               // A record representing a EdgeGateway result.
	VMRecord                        []*QueryResultVMRecordType                        `xml:"VMRecord"`                        // A record representing a VM result.
	AdminVMRecord                   []*QueryResultVMRecordType                        `xml:"AdminVMRecord"`                   // A record representing a Admin VM result.
	VAppRecord                      []*QueryResultVAppRecordType                      `xml:"VAppRecord"`                      // A record representing a VApp result.
	AdminVAppRecord                 []*QueryResultVAppRecordType                      `xml:"AdminVAppRecord"`                 // A record representing a VApp result as admin.
	OrgVdcStorageProfileRecord      []*QueryResultOrgVdcStorageProfileRecordType      `xml:"OrgVdcStorageProfileRecord"`      // A record representing storage profiles
	AdminOrgVdcStorageProfileRecord []*QueryResultAdminOrgVdcStorageProfileRecordType `xml:"AdminOrgVdcStorageProfileRecord"` // A record representing storage profiles as admin
	MediaRecord                     []*MediaRecordType                                `xml:"MediaRecord"`                     // A record representing media
	AdminMediaRecord                []*MediaRecordType                                `xml:"AdminMediaRecord"`                // A record representing Admin media
	VMWProviderVdcRecord            []*QueryResultVMWProviderVdcRecordType            `xml:"VMWProviderVdcRecord"`            // A record representing a Provider VDC result.
	ProviderVdcStorageProfileRecord []*QueryResultProviderVdcStorageProfileRecordType `xml:"ProviderVdcStorageProfileRecord"` // A record representing a Provider VDC storage profile result
	NetworkPoolRecord               []*QueryResultNetworkPoolRecordType               `xml:"NetworkPoolRecord"`               // A record representing a network pool
	DiskRecord                      []*DiskRecordType                                 `xml:"DiskRecord"`                      // A record representing a independent Disk.
	AdminDiskRecord                 []*DiskRecordType                                 `xml:"AdminDiskRecord"`                 // A record representing a independent Disk.
	VirtualCenterRecord             []*QueryResultVirtualCenterRecordType             `xml:"VirtualCenterRecord"`             // A record representing a vSphere server
	PortGroupRecord                 []*PortGroupRecordType                            `xml:"PortgroupRecord"`                 // A record representing a port group
	OrgVdcNetworkRecord             []*QueryResultOrgVdcNetworkRecordType             `xml:"OrgVdcNetworkRecord"`             // A record representing a org VDC network
	CatalogRecord                   []*CatalogRecord                                  `xml:"CatalogRecord"`                   // A record representing a catalog
	AdminCatalogRecord              []*CatalogRecord                                  `xml:"AdminCatalogRecord"`              // A record representing an admin catalog
	CatalogItemRecord               []*QueryResultCatalogItemType                     `xml:"CatalogItemRecord"`               // A record representing a catalog item
	AdminCatalogItemRecord          []*QueryResultCatalogItemType                     `xml:"AdminCatalogItemRecord"`          // A record representing an admin catalog item
	VappTemplateRecord              []*QueryResultVappTemplateType                    `xml:"VAppTemplateRecord"`              // A record representing a vApp template
	AdminVappTemplateRecord         []*QueryResultVappTemplateType                    `xml:"AdminVAppTemplateRecord"`         // A record representing an admin vApp template
	NsxtManagerRecord               []*QueryResultNsxtManagerRecordType               `xml:"NsxTManagerRecord"`               // A record representing NSX-T manager
	OrgVdcRecord                    []*QueryResultOrgVdcRecordType                    `xml:"OrgVdcRecord"`                    // A record representing Org VDC
	OrgVdcAdminRecord               []*QueryResultOrgVdcRecordType                    `xml:"AdminVdcRecord"`                  // A record representing Org VDC
	ResourcePoolRecord              []*QueryResultResourcePoolRecordType              `xml:"ResourcePoolRecord"`              // A record representing a Resource Pool
	VmGroupsRecord                  []*QueryResultVmGroupsRecordType                  `xml:"VmGroupsRecord"`                  // A record representing a VM Group
	TaskRecord                      []*QueryResultTaskRecordType                      `xml:"TaskRecord"`                      // A record representing a Task
	AdminTaskRecord                 []*QueryResultTaskRecordType                      `xml:"AdminTaskRecord"`                 // A record representing an Admin Task
	VappNetworkRecord               []*QueryResultVappNetworkRecordType               `xml:"VAppNetworkRecord"`               // A record representing a vApp network
	AdminVappNetworkRecord          []*QueryResultVappNetworkRecordType               `xml:"AdminVAppNetworkRecord"`          // A record representing an admin vApp network
}

type QueryResultResourcePoolRecordType added in v2.17.0

type QueryResultResourcePoolRecordType struct {
	HREF                string `xml:"href,attr,omitempty"`
	Name                string `xml:"name,attr,omitempty"`
	Moref               string `xml:"moref,attr,omitempty"`
	IsDeleted           bool   `xml:"isDeleted,attr,omitempty"`
	VcenterHREF         string `xml:"vc,attr,omitempty"`
	VcenterName         string `xml:"vcName,attr,omitempty"`
	ProviderVdcHREF     string `xml:"providerVdc,attr,omitempty"`
	ProviderName        string `xml:"providerName,attr,omitempty"`
	IsEnabled           bool   `xml:"isEnabled,attr,omitempty"`
	IsPrimary           bool   `xml:"isPrimary,attr,omitempty"`
	ClusterMoref        string `xml:"clusterMoref,attr,omitempty"`
	IsKubernetesEnabled bool   `xml:"isKubernetesEnabled,attr,omitempty"`
}

QueryResultResourcePoolRecordType represent a Resource Pool record

type QueryResultTaskRecordType added in v2.17.0

type QueryResultTaskRecordType struct {
	HREF             string    `xml:"href,attr,omitempty"`             // Contains the URI to the resource.
	ID               string    `xml:"id,attr,omitempty"`               //	The resource identifier, expressed in URN format. The value of this attribute uniquely identifies the resource, persists for the life of the resource, and is never reused. 	Yes 	Yes
	Type             string    `xml:"type,attr,omitempty"`             //	Contains the type of the resource.
	Org              string    `xml:"org,attr,omitempty"`              //	Organization reference or id
	OrgName          string    `xml:"orgName,attr,omitempty"`          //	Organization name
	Name             string    `xml:"name,attr,omitempty"`             //	The name of this task.
	OperationFull    string    `xml:"operationFull,attr,omitempty"`    //	The full human-readable name of this task.
	Message          string    `xml:"message,attr,omitempty"`          //	message
	StartDate        string    `xml:"startDate,attr,omitempty"`        //	Start date
	EndDate          string    `xml:"endDate,attr,omitempty"`          //	End date
	Status           string    `xml:"status,attr,omitempty"`           //	Status
	Progress         int       `xml:"progress,attr,omitempty"`         //	Progress of the task, expressed as a percentage.
	OwnerName        string    `xml:"ownerName,attr,omitempty"`        //	Owner name
	Object           string    `xml:"object,attr,omitempty"`           //	Object
	ObjectType       string    `xml:"objectType,attr,omitempty"`       //	Object
	ObjectName       string    `xml:"objectName,attr,omitempty"`       //	Object name
	ServiceNamespace string    `xml:"serviceNamespace,attr,omitempty"` //	Service name space
	Link             *Link     `xml:"Link,omitempty"`
	Metadata         *Metadata `xml:"Metadata,omitempty"`
}

type QueryResultVAppRecordType

type QueryResultVAppRecordType struct {
	// Attributes
	HREF                    string    `xml:"href,attr,omitempty"`         // The URI of the entity.
	Name                    string    `xml:"name,attr"`                   // The name of the entity.
	CreationDate            string    `xml:"creationDate,attr,omitempty"` // Creation date/time of the vApp.
	Busy                    bool      `xml:"isBusy,attr,omitempty"`
	Deployed                bool      `xml:"isDeployed,attr,omitempty"` // True if the vApp is deployed.
	Enabled                 bool      `xml:"isEnabled,attr,omitempty"`
	Expired                 bool      `xml:"isExpired,attr,omitempty"`
	MaintenanceMode         bool      `xml:"isInMaintenanceMode,attr,omitempty"`
	Public                  bool      `xml:"isPublic,attr,omitempty"`
	OwnerName               string    `xml:"ownerName,attr,omitempty"`
	Status                  string    `xml:"status,attr,omitempty"`
	VdcHREF                 string    `xml:"vdc,attr,omitempty"`
	VdcName                 string    `xml:"vdcName,attr,omitempty"`
	NumberOfVMs             int       `xml:"numberOfVMs,attr,omitempty"`
	NumberOfCPUs            int       `xml:"numberOfCpus,attr,omitempty"`
	CpuAllocationMhz        int       `xml:"cpuAllocationMhz,attr,omitempty"`
	CpuAllocationInMhz      int       `xml:"cpuAllocationInMhz,attr,omitempty"`
	StorageKB               int       `xml:"storageKB,attr,omitempty"`
	MemoryAllocationMB      int       `xml:"memoryAllocationMB,attr,omitempty"`
	AutoDeleteNotified      bool      `xml:"isAutoDeleteNotified,attr,omitempty"`
	AutoUndeployNotified    bool      `xml:"isAutoUndeployNotified,attr,omitempty"`
	VdcEnabled              bool      `xml:"isVdcEnabled,attr,omitempty"`
	HonorBootOrder          bool      `xml:"honorBookOrder,attr,omitempty"`
	HighestSupportedVersion int       `xml:"pvdcHighestSupportedHardwareVersion,attr,omitempty"`
	LowestHardwareVersion   int       `xml:"lowestHardwareVersionInVApp,attr,omitempty"`
	TaskHREF                string    `xml:"task,attr,omitempty"`
	TaskStatusName          string    `xml:"taskStatusName,attr,omitempty"`
	TaskStatus              string    `xml:"TaskStatus,attr,omitempty"`
	TaskDetails             string    `xml:"taskDetails,attr,omitempty"`
	MetaData                *Metadata `xml:"Metadata,omitempty"`
}

QueryResultVAppRecordType represents a VM record as query result.

type QueryResultVMRecordType

type QueryResultVMRecordType struct {
	// Attributes
	HREF                     string    `xml:"href,attr,omitempty"` // The URI of the entity.
	ID                       string    `xml:"id,attr,omitempty"`
	Moref                    string    `xml:"moref,attr,omitempty"`         // VM moref id.
	Name                     string    `xml:"name,attr,omitempty"`          // VM name.
	Type                     string    `xml:"type,attr,omitempty"`          // Contains the type of the resource.
	ContainerName            string    `xml:"containerName,attr,omitempty"` // The name of the vApp or vApp template that contains this VM.
	ContainerID              string    `xml:"container,attr,omitempty"`     // The ID of the vApp or vApp template that contains this VM.
	OwnerName                string    `xml:"ownerName,attr,omitempty"`
	Owner                    string    `xml:"owner,attr,omitempty"`
	VdcHREF                  string    `xml:"vdc,attr,omitempty"`
	VdcName                  string    `xml:"vdcName,attr,omitempty"`
	VAppTemplate             bool      `xml:"isVAppTemplate,attr,omitempty"`
	Deleted                  bool      `xml:"isDeleted,attr,omitempty"`
	GuestOS                  string    `xml:"guestOs,attr,omitempty"`
	Cpus                     int       `xml:"numberOfCpus,attr,omitempty"`
	MemoryMB                 int       `xml:"memoryMB,attr,omitempty"`
	Status                   string    `xml:"status,attr,omitempty"`
	NetworkName              string    `xml:"networkName,attr,omitempty"`
	NetworkHref              string    `xml:"network,attr,omitempty"`
	IpAddress                string    `xml:"ipAddress,attr,omitempty"` // If configured, the IP Address of the VM on the primary network, otherwise empty.
	Busy                     bool      `xml:"isBusy,attr,omitempty"`
	Deployed                 bool      `xml:"isDeployed,attr,omitempty"` // True if the virtual machine is deployed.
	Published                bool      `xml:"isPublished,attr,omitempty"`
	CatalogName              string    `xml:"catalogName,attr,omitempty"`
	HardwareVersion          int       `xml:"hardwareVersion,attr,omitempty"`
	VmToolsStatus            string    `xml:"vmToolsStatus,attr,omitempty"`
	MaintenanceMode          bool      `xml:"isInMaintenanceMode,attr,omitempty"`
	AutoNature               bool      `xml:"isAutoNature,attr,omitempty"` //  	True if the parent vApp is a managed vApp
	StorageProfileName       string    `xml:"storageProfileName,attr,omitempty"`
	GcStatus                 string    `xml:"gcStatus,attr,omitempty"` // GC status of this VM.
	AutoUndeployDate         string    `xml:"autoUndeployDate,attr,omitempty"`
	AutoDeleteDate           string    `xml:"autoDeleteDate,attr,omitempty"`
	AutoUndeployNotified     bool      `xml:"isAutoUndeployNotified,attr,omitempty"`
	AutoDeleteNotified       bool      `xml:"isAutoDeleteNotified,attr,omitempty"`
	IsComputePolicyCompliant bool      `xml:"isComputePolicyCompliant,attr,omitempty"`
	VmSizingPolicyId         string    `xml:"vmSizingPolicyId,attr,omitempty"`
	VmPlacementPolicyId      string    `xml:"vmPlacementPolicyId,attr,omitempty"`
	Encrypted                bool      `xml:"encrypted,attr,omitempty"`
	DateCreated              string    `xml:"dateCreated,attr,omitempty"`
	TotalStorageAllocatedMb  string    `xml:"totalStorageAllocatedMb,attr,omitempty"`
	IsExpired                bool      `xml:"isExpired,attr,omitempty"`
	HostName                 string    `xml:"hostName,attr,omitempty"` // HostName=Hypervisor of virtual machine
	Link                     []*Link   `xml:"Link,omitempty"`
	MetaData                 *Metadata `xml:"Metadata,omitempty"`
}

QueryResultVMRecordType represents a VM record as query result.

type QueryResultVMWProviderVdcRecordType

type QueryResultVMWProviderVdcRecordType struct {
	// Attributes
	HREF                    string `xml:"href,attr,omitempty"` // The URI of the entity.
	Name                    string `xml:"name,attr,omitempty"` // Provider VDC name.
	Status                  string `xml:"status,attr,omitempty"`
	IsBusy                  bool   `xml:"isBusy,attr,omitempty"`
	IsDeleted               bool   `xml:"isDeleted,attr,omitempty"`
	IsEnabled               bool   `xml:"isEnabled,attr,omitempty"`
	CpuAllocationMhz        int    `xml:"cpuAllocationMhz,attr,omitempty"`
	CpuLimitMhz             int    `xml:"cpuLimitMhz,attr,omitempty"`
	CpuUsedMhz              int    `xml:"cpuUsedMhz,attr,omitempty"`
	NumberOfDatastores      int    `xml:"numberOfDatastores,attr,omitempty"`
	NumberOfStorageProfiles int    `xml:"numberOfStorageProfiles,attr,omitempty"`
	NumberOfVdcs            int    `xml:"numberOfVdcs,attr,omitempty"`
	MemoryAllocationMB      int64  `xml:"memoryAllocationMB,attr,omitempty"`
	MemoryLimitMB           int64  `xml:"memoryLimitMB,attr,omitempty"`
	MemoryUsedMB            int64  `xml:"memoryUsedMB,attr,omitempty"`
	StorageAllocationMB     int64  `xml:"storageAllocationMB,attr,omitempty"`
	StorageLimitMB          int64  `xml:"storageLimitMB,attr,omitempty"`
	StorageUsedMB           int64  `xml:"storageUsedMB,attr,omitempty"`
	CpuOverheadMhz          int64  `xml:"cpuOverheadMhz,attr,omitempty"`
	StorageOverheadMB       int64  `xml:"storageOverheadMB,attr,omitempty"`
	MemoryOverheadMB        int64  `xml:"memoryOverheadMB,attr,omitempty"`
}

QueryResultVMWProviderVdcRecordType represents a Provider VDC as query result.

type QueryResultVappNetworkRecordType added in v2.24.0

type QueryResultVappNetworkRecordType struct {
	HREF                   string    `xml:"href,attr,omitempty"`
	ID                     string    `xml:"id,attr,omitempty"`
	Name                   string    `xml:"name,attr,omitempty"`
	Type                   string    `xml:"linkType,attr,omitempty"`
	IpScopeId              string    `xml:"ipScopeId,attr,omitempty"`
	IpScopeInherited       bool      `xml:"ipScopeInherited,attr,omitempty"`
	Gateway                string    `xml:"gateway,attr,omitempty"`
	Netmask                string    `xml:"netmask,attr,omitempty"`
	SubnetPrefixLength     int       `xml:"subnetPrefixLength,attr,omitempty"`
	Dns1                   string    `xml:"dns1,attr,omitempty"`
	Dns2                   string    `xml:"dns2,attr,omitempty"`
	DnsSuffix              string    `xml:"dnsSuffix,attr,omitempty"`
	Vapp                   string    `xml:"vApp,attr,omitempty"`            // the HREF of the parent vApp
	VappName               string    `xml:"vAppName,attr,omitempty"`        // the name of the parent vApp
	LinkNetworkName        string    `xml:"linkNetworkName,attr,omitempty"` // this field is filled when called in tenant context
	RealNetworkName        string    `xml:"realNetworkName,attr,omitempty"`
	RealNetworkPortgroupId string    `xml:"realNetworkPortgroupId,attr,omitempty"`
	VCenterName            string    `xml:"vcName,attr,omitempty"`
	VCenter                string    `xml:"vc,attr,omitempty"`
	IsBusy                 bool      `xml:"isBusy,attr,omitempty"`
	IsLinked               bool      `xml:"isLinked,attr,omitempty"`
	RetainNicResources     bool      `xml:"retainNicResources,attr,omitempty"`
	Metadata               *Metadata `xml:"Metadata,omitempty"`
}

type QueryResultVappTemplateType added in v2.8.0

type QueryResultVappTemplateType struct {
	HREF                    string    `xml:"href,attr,omitempty"`                    // The URI of the entity.
	ID                      string    `xml:"id,attr,omitempty"`                      // vApp template ID.
	Type                    string    `xml:"type,attr,omitempty"`                    // The MIME type of the entity.
	OwnerName               string    `xml:"ownerName,attr,omitempty"`               // Owner name
	Owner                   string    `xml:"owner,attr,omitempty"`                   // Owner reference or ID
	CatalogName             string    `xml:"catalogName,attr,omitempty"`             // Catalog name
	Catalog                 string    `xml:"catalog,attr,omitempty"`                 // Catalog reference or ID
	CatalogItem             string    `xml:"catalogItem,attr,omitempty"`             // CatalogItem reference or ID
	IsPublished             bool      `xml:"isPublished,attr,omitempty"`             // True if this entity is in a published catalog
	PublishSubscriptionType string    `xml:"publishSubscriptionType,attr,omitempty"` // PUBLISHED if parent catalog published externally, SUBSCRIBED if parent catalog subscribed to an external catalog, UNPUBLISHED otherwise.
	Name                    string    `xml:"name,attr,omitempty"`                    // vApp template name.
	Description             string    `xml:"description,attr,omitempty"`             // vApp template description.
	Vdc                     string    `xml:"vdc,attr,omitempty"`                     // VDC reference or ID
	VdcName                 string    `xml:"vdcName,attr,omitempty"`                 // VDC name
	IsVdcEnabled            bool      `xml:"isVdcEnabled,attr,omitempty"`            // true if the containing VDC is enabled
	Org                     string    `xml:"org,attr,omitempty"`                     // Organization reference or ID
	CreationDate            string    `xml:"creationDate,attr,omitempty"`            // Creation date
	IsBusy                  bool      `xml:"isBusy,attr,omitempty"`                  // True if the vApp template is busy
	IsGoldMaster            bool      `xml:"isGoldMaster,attr,omitempty"`            // True if the vApp template is a gold master
	IsEnabled               bool      `xml:"isEnabled,attr,omitempty"`               // True if the vApp template is enabled
	Status                  string    `xml:"status,attr,omitempty"`                  // Status
	IsDeployed              bool      `xml:"isDeployed,attr,omitempty"`              // True if this entity is deployed
	IsExpired               bool      `xml:"isExpired,attr,omitempty"`               // True if this entity is expired
	StorageProfileName      string    `xml:"storageProfileName,attr,omitempty"`      // Storage profile name
	Version                 string    `xml:"version,attr,omitempty"`                 // Storage profile name
	LastSuccessfulSync      string    `xml:"lastSuccessfulSync,attr,omitempty"`      // Date of last successful sync
	Link                    *Link     `xml:"Link,omitempty"`
	Metadata                *Metadata `xml:"Metadata,omitempty"`

	// Undocumented fields
	// Provisionally used in some catalog synchronisation tasks. To be removed and replaced by using a different algorithm
	// https://developer.vmware.com/apis/1260/vmware-cloud-director/doc/doc/types/QueryResultAdminVAppTemplateRecordType.html
	// https://developer.vmware.com/apis/1260/vmware-cloud-director/doc/doc/types/QueryResultVAppTemplateRecordType.html
	IsInCatalog              bool   `xml:"isInCatalog,attr,omitempty"`              // True if this vApp template is in a catalog
	HonorBootOrder           bool   `xml:"honorBootOrder,attr,omitempty"`           // ?
	NumberOfShadowVms        int    `xml:"numberOfShadowVMs,attr,omitempty"`        // number of shadow VMs
	NumberOfVms              int    `xml:"numberOfVMs,attr,omitempty"`              // number of VMs
	TaskStatusName           string `xml:"taskStatusName,attr,omitempty"`           // name of the associated task
	TaskStatus               string `xml:"taskStatus,attr,omitempty"`               // status of the associated task
	Task                     string `xml:"task,attr,omitempty"`                     // ID or reference of the associated task
	TaskDetails              string `xml:"taskDetails,attr,omitempty"`              // details of the associated task
	IsDeleteUndeployNotified bool   `xml:"isDeleteUndeployNotified,attr,omitempty"` // ?
	IsAutoUndeployNotified   bool   `xml:"isAutoUndeployNotified,attr,omitempty"`   // ?
	CpuAllocationInMhz       int    `xml:"cpuAllocationInMhz,attr,omitempty"`       // CPU allocation
	NumberOfCpus             int    `xml:"numberOfCpus,attr,omitempty"`             // Number of CPUs
	MemoryAllocationMb       int    `xml:"memoryAllocationMB,attr,omitempty"`       // Memory allocation in MB
	StorageKb                int    `xml:"storageKB,attr,omitempty"`                // Storage allocation in Kb
}

QueryResultVappTemplateType represents a vApp template as query result

type QueryResultVirtualCenterRecordType added in v2.2.0

type QueryResultVirtualCenterRecordType struct {
	HREF          string `xml:"href,attr,omitempty"`
	Name          string `xml:"name,attr,omitempty"`
	IsBusy        bool   `xml:"isBusy,attr,omitempty"`
	IsEnabled     bool   `xml:"isEnabled,attr,omitempty"`
	IsSupported   bool   `xml:"isSupported,attr,omitempty"`
	ListenerState string `xml:"listenerState,attr,omitempty"`
	Status        string `xml:"status,attr,omitempty"`
	Url           string `xml:"url,attr,omitempty"`
	UserName      string `xml:"userName,attr,omitempty"`
	VcVersion     string `xml:"vcVersion,attr,omitempty"`
	UUID          string `xml:"uuid,attr,omitempty"`
	VsmIP         string `xml:"vsmIP,attr,omitempty"`
}

Type: QueryResultVirtualCenterRecordType Namespace: http://www.vmware.com/vcloud/v1.5 https://vdc-repo.vmware.com/vmwb-repository/dcr-public/7a028e78-bd37-4a6a-8298-9c26c7eeb9aa/09142237-dd46-4dee-8326-e07212fb63a8/doc/doc/types/QueryResultVirtualCenterRecordType.html Description: Type for a single virtualCenter query result in records format. Since: 1.5

type QueryResultVmGroupsRecordType added in v2.17.0

type QueryResultVmGroupsRecordType struct {
	HREF           string `xml:"href,attr,omitempty"`
	ID             string `xml:"vmGroupId,attr,omitempty"`
	Name           string `xml:"vmGroupName,attr,omitempty"`
	ClusterMoref   string `xml:"clusterMoref,attr,omitempty"`
	ClusterName    string `xml:"clusterName,attr,omitempty"`
	VcenterId      string `xml:"vcId,attr,omitempty"`
	NamedVmGroupId string `xml:"namedVmGroupId,attr,omitempty"`
}

QueryResultVmGroupsRecordType represent a VM Groups record

type ReComposeVAppParams

type ReComposeVAppParams struct {
	XMLName xml.Name `xml:"RecomposeVAppParams"`
	Ovf     string   `xml:"xmlns:ovf,attr"`
	Xsi     string   `xml:"xmlns:xsi,attr"`
	Xmlns   string   `xml:"xmlns,attr"`
	// Attributes
	Name        string `xml:"name,attr,omitempty"`        // Typically used to name or identify the subject of the request. For example, the name of the object being created or modified.
	Deploy      bool   `xml:"deploy,attr"`                // True if the vApp should be deployed at instantiation. Defaults to true.
	PowerOn     bool   `xml:"powerOn,attr"`               // True if the vApp should be powered-on at instantiation. Defaults to true.
	LinkedClone bool   `xml:"linkedClone,attr,omitempty"` // Reserved. Unimplemented.
	// Elements
	Description         string                       `xml:"Description,omitempty"`         // Optional description.
	VAppParent          *Reference                   `xml:"VAppParent,omitempty"`          // Reserved. Unimplemented.
	InstantiationParams *InstantiationParams         `xml:"InstantiationParams,omitempty"` // Instantiation parameters for the composed vApp.
	SourcedItem         *SourcedCompositionItemParam `xml:"SourcedItem,omitempty"`         // Composition item. One of: vApp vAppTemplate VM.
	AllEULAsAccepted    bool                         `xml:"AllEULAsAccepted,omitempty"`
	DeleteItem          *DeleteItem                  `xml:"DeleteItem,omitempty"`
}

type RecomposeVAppParamsForEmptyVm added in v2.8.0

type RecomposeVAppParamsForEmptyVm struct {
	XMLName          xml.Name    `xml:"RecomposeVAppParams"`
	XmlnsVcloud      string      `xml:"xmlns,attr"`
	XmlnsOvf         string      `xml:"xmlns:ovf,attr"`
	PowerOn          bool        `xml:"powerOn,attr,omitempty"` // True if the VM should be powered-on after creation. Defaults to false.
	CreateItem       *CreateItem `xml:"CreateItem,omitempty"`
	AllEULAsAccepted bool        `xml:"AllEULAsAccepted,omitempty"`
}

RecomposeVAppParamsForEmptyVm represents a vApp structure which allows to create VM.

type Reference

type Reference struct {
	HREF string `xml:"href,attr,omitempty" json:"href,omitempty"`
	ID   string `xml:"id,attr,omitempty" json:"id,omitempty"`
	Type string `xml:"type,attr,omitempty" json:"type,omitempty"`
	Name string `xml:"name,attr,omitempty" json:"name,omitempty"`
}

Reference is a reference to a resource. Contains an href attribute and optional name and type attributes. Type: ReferenceType Namespace: http://www.vmware.com/vcloud/v1.5 Description: A reference to a resource. Contains an href attribute and optional name and type attributes. Since: 0.9

type RemoveStorageProfile added in v2.21.0

type RemoveStorageProfile struct {
	RemoveStorageProfile []*Reference `json:"removeStorageProfile"`
}

type ResourceEntities

type ResourceEntities struct {
	ResourceEntity []*ResourceReference `xml:"ResourceEntity,omitempty"`
}

ResourceEntities is a container for references to ResourceEntity objects in this vDC. Type: ResourceEntitiesType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Container for references to ResourceEntity objects in this vDC. Since: 0.9

type ResourcePool added in v2.21.0

type ResourcePool struct {
	Moref             string `json:"moref"`
	ClusterMoref      string `json:"clusterMoref"`
	Name              string `json:"name"`
	VcId              string `json:"vcId"`
	Eligible          bool   `json:"eligible"`
	KubernetesEnabled bool   `json:"kubernetesEnabled"`
	VgpuEnabled       bool   `json:"vgpuEnabled"`
}

ResourcePool defines a vSphere Resource Pool

type ResourcePoolSummary added in v2.21.0

type ResourcePoolSummary struct {
	Associations []struct {
		EntityId      string `json:"entityId"`
		AssociationId string `json:"associationId"`
	} `json:"associations"`
	Values []ResourcePool `json:"values"`
}

type ResourceReference

type ResourceReference struct {
	HREF   string `xml:"href,attr"`
	ID     string `xml:"id,attr,omitempty"`
	Type   string `xml:"type,attr,omitempty"`
	Name   string `xml:"name,attr,omitempty"`
	Status string `xml:"status,attr,omitempty"`
}

ResourceReference represents a reference to a resource. Contains an href attribute, a resource status attribute, and optional name and type attributes. Type: ResourceReferenceType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a reference to a resource. Contains an href attribute, a resource status attribute, and optional name and type attributes. Since: 0.9

type Right struct {
	Name             string             `json:"name"`
	ID               string             `json:"id"`
	Description      string             `json:"description,omitempty"`
	BundleKey        string             `json:"bundleKey,omitempty"`        // key used for internationalization
	Category         string             `json:"category,omitempty"`         // Category ID
	ServiceNamespace string             `json:"serviceNamespace,omitempty"` // Not used
	RightType        string             `json:"rightType,omitempty"`        // VIEW or MODIFY
	ImpliedRights    []OpenApiReference `json:"impliedRights,omitempty"`
}

A Right is a component of a role, a global role, or a rights bundle. In this view, roles, global roles, and rights bundles are collections of rights. Note that the rights are not stored in the above collection structures, but retrieved separately

type RightsBundle added in v2.12.0

type RightsBundle struct {
	Name        string `json:"name"`
	Id          string `json:"id"`
	Description string `json:"description,omitempty"`
	BundleKey   string `json:"bundleKey,omitempty"` // key used for internationalization
	ReadOnly    bool   `json:"readOnly"`
	PublishAll  *bool  `json:"publishAll"`
}

RightsBundle is a collection of Rights to be assigned to a tenant(= organization). Changing a rights bundle and publishing it for a given tenant will limit the rights that the global roles implement in such tenant.

type RightsCategory added in v2.12.0

type RightsCategory struct {
	Name        string `json:"name"`
	Id          string `json:"id"`
	BundleKey   string `json:"bundleKey"` // key used for internationalization
	Parent      string `json:"parent"`
	RightsCount struct {
		View   int `json:"view"`
		Modify int `json:"modify"`
	} `json:"rightsCount"`
	SubCategories []string `json:"subCategories"`
}

RightsCategory defines the category to which the Right belongs

type RightsType added in v2.3.0

type RightsType struct {
	Links          LinkList     `xml:"Link,omitempty"`
	RightReference []*Reference `xml:"RightReference,omitempty"`
}

List of available rights in the organization

type Role added in v2.9.0

type Role struct {
	ID          string `json:"id,omitempty"`
	Name        string `json:"name,omitempty"`
	Description string `json:"description,omitempty"`
	BundleKey   string `json:"bundleKey,omitempty"`
	ReadOnly    bool   `json:"readOnly,omitempty"`
}

Role defines access roles in VCD

type RootComputeCapacity added in v2.17.0

type RootComputeCapacity struct {
	Cpu       *ProviderVdcCapacity `xml:"Cpu" json:"cpu"`
	IsElastic bool                 `xml:"IsElastic,omitempty" json:"isElastic,omitempty"`
	IsHA      bool                 `xml:"IsHA,omitempty" json:"isHA,omitempty"`
	Memory    *ProviderVdcCapacity `xml:"Memory" json:"memory"`
}

RootComputeCapacity represents compute capacity with units. Type: RootComputeCapacityType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents compute capacity with units. Since: 0.9

type RouteAdvertisement added in v2.16.0

type RouteAdvertisement struct {
	// Enable if true, means that the subnets will be advertised.
	Enable bool `json:"enable"`
	// Subnets is the list of subnets that will be advertised so that the Edge Gateway can route out to the connected
	// external network.
	Subnets []string `json:"subnets"`
}

RouteAdvertisement lists the subnets that will be advertised so that the Edge Gateway can route out to the connected external network.

type RuntimeInfoSection added in v2.17.0

type RuntimeInfoSection struct {
	Ns10        string `xml:"ns10,attr"`
	Type        string `xml:"type,attr"`
	Href        string `xml:"href,attr"`
	Info        string `xml:"Info"`
	VMWareTools struct {
		Version string `xml:"version,attr"`
	} `xml:"VMWareTools"`
}

type SPSSODescriptor added in v2.21.0

type SPSSODescriptor struct {
	Ds                         string `xml:"xmlns:ds,attr,omitempty"`
	AuthnRequestsSigned        bool   `xml:"AuthnRequestsSigned,attr"`
	ProtocolSupportEnumeration string `xml:"protocolSupportEnumeration,attr"`
	WantAssertionsSigned       bool   `xml:"WantAssertionsSigned,attr"`
	KeyDescriptor              []struct {
		Use     string `xml:"use,attr"`
		KeyInfo struct {
			//Ds       string `xml:"xmlns:ds,attr"`
			X509Data struct {
				X509Certificate string `xml:"X509Certificate"`
			} `xml:"X509Data"`
		} `xml:"KeyInfo"`
	} `xml:"KeyDescriptor"`

	SingleLogoutService []struct {
		Binding  string `xml:"Binding,attr"`
		Location string `xml:"Location,attr"`
	} `xml:"SingleLogoutService"`
	NameIDFormat             []string `xml:"NameIDFormat"`
	AssertionConsumerService []struct {
		Binding         string `xml:"Binding,attr"`
		Hoksso          string `xml:"xmlns:hoksso,attr"`
		Index           int    `xml:"index,attr"`
		IsDefault       bool   `xml:"isDefault,attr,omitempty"`
		Location        string `xml:"Location,attr"`
		ProtocolBinding string `xml:"ProtocolBinding,attr"`
	} `xml:"AssertionConsumerService"`
}

SPSSODescriptor is the main body of the SAML metadata file, which defines what the SAML identity provider can do

type Scope added in v2.20.0

type Scope struct {
	ID             string `xml:"id"`
	ObjectTypeName string `xml:"objectTypeName"`
	Name           string `xml:"name"`
}

type SecurityTag added in v2.16.0

type SecurityTag struct {
	// Entities are the list of entities to tag in urn format.
	Entities []string `json:"entities"`
	// Tag is the tag name to use.
	Tag string `json:"tag"`
}

SecurityTag represents An individual security tag

type SecurityTagValue added in v2.16.0

type SecurityTagValue struct {
	// Tag is the value of the tag. The value is case-agnostic and will be converted to lower-case.
	Tag string `json:"tag"`
}

SecurityTagValue describes the most basic tag structure: its value.

type SecurityTaggedEntity added in v2.16.0

type SecurityTaggedEntity struct {
	// EntityType is the type of entity. Currently, only 'vm' is supported.
	EntityType string `json:"entityType"`
	// ID is the unique identifier of the entity in URN format.
	ID string `json:"id"`
	// Name of the entity.
	Name string `json:"name"`
	// OwnerRef is the owner of the specified entity such as vDC or vDC Group. If not applicable, field is not set.
	OwnerRef *OpenApiReference `json:"ownerRef"`
	// ParentRef is the parent of the entity such as vApp if the entity is a VM. If not applicable, field is not set.
	ParentRef *OpenApiReference `json:"parentRef"`
}

SecurityTaggedEntity is an entity that has a tag.

type SegmentProfileTemplateRef added in v2.22.0

type SegmentProfileTemplateRef struct {
	Source      string            `json:"source"`
	TemplateRef *OpenApiReference `json:"templateRef"`
}

SegmentProfileTemplateRef contains reference to segment profile

type Service added in v2.20.0

type Service struct {
	IsValid         bool    `xml:"isValid"`
	SourcePort      *string `xml:"sourcePort"`
	DestinationPort *string `xml:"destinationPort"`
	Protocol        *int    `xml:"protocol"`
	ProtocolName    *string `xml:"protocolName"`
	Name            string  `xml:"name,omitempty"`
	Value           string  `xml:"value,omitempty"`
	Type            string  `xml:"type,omitempty"`
}

type ServiceAccount added in v2.21.0

type ServiceAccount struct {
	ID              string            `json:"id,omitempty"`
	Name            string            `json:"name,omitempty"`
	SoftwareID      string            `json:"softwareId,omitempty"`
	SoftwareVersion string            `json:"softwareVersion,omitempty"`
	Role            *OpenApiReference `json:"role,omitempty"`
	URI             string            `json:"uri,omitempty"`
	Org             *OpenApiReference `json:"org,omitempty"`
	Status          string            `json:"status,omitempty"`
}

ServiceAccount is used for managing a Service Account that belongs to a specific Org

type ServiceAccountAuthParams added in v2.21.0

type ServiceAccountAuthParams struct {
	DeviceCode      string `json:"device_code,omitempty"`
	UserCode        string `json:"user_code"`
	VerificationURI string `json:"verification_uri,omitempty"`
	ExpiresIn       int    `json:"expires_in,omitempty"`
	Interval        int    `json:"interval,omitempty"`
}

ServiceAccountAuthParams is used to store the generated user code and device code that are needed for granting and activating a Service Account

type ServiceEngineGroupBacking added in v2.13.0

type ServiceEngineGroupBacking struct {
	BackingId            string            `json:"backingId"`
	BackingType          string            `json:"backingType,omitempty"`
	LoadBalancerCloudRef *OpenApiReference `json:"loadBalancerCloudRef"`
}

type Services added in v2.20.0

type Services struct {
	Service []Service `xml:"service"`
}

type SmallRecomposeVappParams added in v2.12.0

type SmallRecomposeVappParams struct {
	XMLName     xml.Name `xml:"RecomposeVAppParams"`
	Ovf         string   `xml:"xmlns:ovf,attr"`
	Xsi         string   `xml:"xmlns:xsi,attr"`
	Xmlns       string   `xml:"xmlns,attr"`
	Name        string   `xml:"name,attr"`
	Deploy      bool     `xml:"deploy,attr"`
	Description string   `xml:"Description"`
}

SmallRecomposeVappParams is used to update name and description of a vApp Using the full definition (ReComposeVAppParams), the description can be changed but not removed

type SnapshotItem

type SnapshotItem struct {
	Created   string `xml:"created,attr,omitempty"`
	PoweredOn bool   `xml:"poweredOn,attr,omitempty"`
	Size      int    `xml:"size,attr,omitempty"`
}

Each snapshot listed in the SnapshotSection

type SnapshotSection

type SnapshotSection struct {
	// Extends OVF Section_Type
	XMLName  xml.Name        `xml:"SnapshotSection"`
	Info     string          `xml:"Info"`
	HREF     string          `xml:"href,attr,omitempty"`
	Type     string          `xml:"type,attr,omitempty"`
	Snapshot []*SnapshotItem `xml:"Snapshot,omitempty"`
}

SnapshotSection from Vm struct

type Source added in v2.20.0

type Source struct {
	Name    string `xml:"name"`
	Value   string `xml:"value"`
	Type    string `xml:"type"`
	IsValid bool   `xml:"isValid"`
}

type SourcedCompositionItemParam

type SourcedCompositionItemParam struct {
	// Attributes
	SourceDelete bool `xml:"sourceDelete,attr,omitempty"` // True if the source item should be deleted after composition is complete.
	// Elements
	Source              *Reference           `xml:"Source"`                        // Reference to a vApp, vApp template or virtual machine to include in the composition. Changing the name of the newly created VM by specifying name attribute is deprecated. Include VmGeneralParams element instead.
	VMGeneralParams     *VMGeneralParams     `xml:"VmGeneralParams,omitempty"`     // Specify name, description, and other properties of a VM during instantiation.
	VAppScopedLocalID   string               `xml:"VAppScopedLocalId,omitempty"`   // If Source references a VM, this value provides a unique identifier for the VM in the scope of the composed vApp.
	InstantiationParams *InstantiationParams `xml:"InstantiationParams,omitempty"` // If Source references a VM this can include any of the following OVF sections: VirtualHardwareSection OperatingSystemSection NetworkConnectionSection GuestCustomizationSection.
	NetworkAssignment   []*NetworkAssignment `xml:"NetworkAssignment,omitempty"`   // If Source references a VM, this element maps a network name specified in the VM to the network name of a vApp network defined in the composed vApp.
	StorageProfile      *Reference           `xml:"StorageProfile,omitempty"`      // If Source references a VM, this element contains a reference to a storage profile to be used for the VM. The specified storage profile must exist in the organization vDC that contains the composed vApp. If not specified, the default storage profile for the vDC is used.
	LocalityParams      *LocalityParams      `xml:"LocalityParams,omitempty"`      // Represents locality parameters. Locality parameters provide a hint that may help the placement engine optimize placement of a VM and an independent a Disk so that the VM can make efficient use of the disk.
	ComputePolicy       *ComputePolicy       `xml:"ComputePolicy,omitempty"`       // accessible only from version API 33.0
}

SourcedCompositionItemParam represents a vApp, vApp template or VM to include in a composed vApp. Type: SourcedCompositionItemParamType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a vApp, vApp template or VM to include in a composed vApp. Since: 0.9

type SourcedVmTemplateParams added in v2.11.0

type SourcedVmTemplateParams struct {
	LocalityParams                *LocalityParams      `xml:"LocalityParams,omitempty"`                // Locality parameters provide a hint that may help optimize placement of a VM and an independent a Disk so that the VM can make efficient use of the disk.
	Source                        *Reference           `xml:"Source"`                                  // A reference to an existing VM template
	VmCapabilities                *VmCapabilities      `xml:"VmCapabilities,omitempty"`                // Describes the capabilities (hot swap, etc.) the instantiated VM should have.
	VmGeneralParams               *VMGeneralParams     `xml:"VmGeneralParams,omitempty"`               // Specify name, description, and other properties of a VM during instantiation.
	VmTemplateInstantiationParams *InstantiationParams `xml:"VmTemplateInstantiationParams,omitempty"` // Same as InstantiationParams used for VMs within a vApp
	StorageProfile                *Reference           `xml:"StorageProfile,omitempty"`                // A reference to a storage profile to be used for the VM. The specified storage profile must exist in the organization vDC that contains the composed vApp. If not specified, the default storage profile for the vDC is used.
}

SourcedVmTemplateParams represents the standalone VM instantiation parameters

type Sources added in v2.20.0

type Sources struct {
	Excluded bool     `xml:"excluded,attr"`
	Source   []Source `xml:"source"`
}

type StaticRoute

type StaticRoute struct {
	Name             string     `xml:"Name"`                       // Name for the static route.
	Network          string     `xml:"Network"`                    // Network specification in CIDR.
	NextHopIP        string     `xml:"NextHopIp"`                  // IP Address of Next Hop router/gateway.
	Interface        string     `xml:"Interface,omitempty"`        // Interface to use for static routing. Internal and External are the supported values.
	GatewayInterface *Reference `xml:"GatewayInterface,omitempty"` // Gateway interface to which static route is bound.
}

StaticRoute represents a static route entry Type: StaticRouteType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Since:

type StaticRoutingService

type StaticRoutingService struct {
	IsEnabled   bool           `xml:"IsEnabled"`             // Enable or disable the service using this flag
	StaticRoute []*StaticRoute `xml:"StaticRoute,omitempty"` // Details of each Static Route.
}

StaticRoutingService represents Static Routing network service. Type: StaticRoutingServiceType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents Static Routing network service. Since: 1.5

type SubAllocation

type SubAllocation struct {
	EdgeGateway *Reference `xml:"EdgeGateway,omitempty"` // Edge gateway that uses this sub allocation.
	IPRanges    *IPRanges  `xml:"IpRanges,omitempty"`    // IP range sub allocated to the edge gateway.
}

SubAllocation IP range sub allocated to an edge gateway. Type: SubAllocationType Namespace: http://www.vmware.com/vcloud/v1.5 Description: IP range sub allocated to an edge gateway. Since: 5.1

type SubAllocations

type SubAllocations struct {
	// Attributes
	HREF string `xml:"href,attr,omitempty"` // The URI of the entity.
	Type string `xml:"type,attr,omitempty"` // The MIME type of the entity.
	// Elements
	Link          LinkList       `xml:"Link,omitempty"`          // A reference to an entity or operation associated with this object.
	SubAllocation *SubAllocation `xml:"SubAllocation,omitempty"` // IP Range sub allocated to a edge gateway.
}

SubAllocations a list of IP addresses that are sub allocated to edge gateways. Type: SubAllocationsType Namespace: http://www.vmware.com/vcloud/v1.5 Description: A list of IP addresses that are sub allocated to edge gateways. Since: 5.1

type SubnetParticipation

type SubnetParticipation struct {
	Gateway            string    `xml:"Gateway"`                      // Gateway for subnet
	Netmask            string    `xml:"Netmask"`                      // Netmask for the subnet.
	IPAddress          string    `xml:"IpAddress,omitempty"`          // Ip Address to be assigned. Keep empty or omit element for auto assignment
	IPRanges           *IPRanges `xml:"IpRanges,omitempty"`           // Range of IP addresses available for external interfaces.
	UseForDefaultRoute bool      `xml:"UseForDefaultRoute,omitempty"` // True if this network is default route for the gateway.
}

SubnetParticipation allows to chose which subnets a gateway can be a part of Type: SubnetParticipationType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Allows to chose which subnets a gateway can be part of Since: 5.1

Note. Field order is important and should not be changed as API returns errors if IPRanges come before Gateway and Netmask

type SupportedHardwareVersions

type SupportedHardwareVersions struct {
	SupportedHardwareVersion []Reference `xml:"SupportedHardwareVersion,omitempty"` // A virtual hardware version supported in this vDC.
}

SupportedHardwareVersions contains a list of VMware virtual hardware versions supported in this vDC. Type: SupportedHardwareVersionsType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Contains a list of VMware virtual hardware versions supported in this vDC. Since: 1.5

type SupportedOperatingSystemsInfoType added in v2.22.0

type SupportedOperatingSystemsInfoType struct {
	Link                      *Link
	OperatingSystemFamilyInfo []*OperatingSystemFamilyInfoType `xml:"OperatingSystemFamilyInfo"`
}

SupportedOperatingSystemsInfoType describes what operating system families a hardware version supports

type Task

type Task struct {
	HREF             string           `xml:"href,attr,omitempty" json:"HREF,omitempty"`                         // The URI of the entity.
	Type             string           `xml:"type,attr,omitempty" json:"type,omitempty"`                         // The MIME type of the entity.
	ID               string           `xml:"id,attr,omitempty" json:"ID,omitempty"`                             // The entity identifier, expressed in URN format. The value of this attribute uniquely identifies the entity, persists for the life of the entity, and is never reused.
	OperationKey     string           `xml:"operationKey,attr,omitempty" json:"operationKey,omitempty"`         // Optional unique identifier to support idempotent semantics for create and delete operations.
	Name             string           `xml:"name,attr" json:"name,omitempty"`                                   // The name of the entity.
	Status           string           `xml:"status,attr" json:"status,omitempty"`                               // The execution status of the task. One of queued, preRunning, running, success, error, aborted
	Operation        string           `xml:"operation,attr,omitempty" json:"operation,omitempty"`               // A message describing the operation that is tracked by this task.
	OperationName    string           `xml:"operationName,attr,omitempty" json:"operationName,omitempty"`       // The short name of the operation that is tracked by this task.
	ServiceNamespace string           `xml:"serviceNamespace,attr,omitempty" json:"serviceNamespace,omitempty"` // Identifier of the service that created the task. It must not start with com.vmware.vcloud and the length must be between 1 and 128 symbols.
	StartTime        string           `xml:"startTime,attr,omitempty" json:"startTime,omitempty"`               // The date and time the system started executing the task. May not be present if the task has not been executed yet.
	EndTime          string           `xml:"endTime,attr,omitempty" json:"endTime,omitempty"`                   // The date and time that processing of the task was completed. May not be present if the task is still being executed.
	ExpiryTime       string           `xml:"expiryTime,attr,omitempty" json:"expiryTime,omitempty"`             // The date and time at which the task resource will be destroyed and no longer available for retrieval. May not be present if the task has not been executed or is still being executed.
	CancelRequested  bool             `xml:"cancelRequested,attr,omitempty" json:"cancelRequested,omitempty"`   // Whether user has requested this processing to be canceled.
	Link             *LinkList        `xml:"Link,omitempty" json:"link,omitempty"`                              // A reference to an entity or operation associated with this object.
	Description      string           `xml:"Description,omitempty" json:"description,omitempty"`                // Optional description.
	Tasks            *TasksInProgress `xml:"Tasks,omitempty" json:"tasks,omitempty"`                            // A list of queued, running, or recently completed tasks associated with this entity.
	Owner            *Reference       `xml:"Owner,omitempty" json:"owner,omitempty"`                            // Reference to the owner of the task. This is typically the object that the task is creating or updating.
	Error            *Error           `xml:"Error,omitempty" json:"error,omitempty"`                            // Represents error information from a failed task.
	User             *Reference       `xml:"User,omitempty" json:"user,omitempty"`                              // The user who started the task.
	Organization     *Reference       `xml:"Organization,omitempty" json:"organization,omitempty"`              // The organization to which the User belongs.
	Progress         int              `xml:"Progress,omitempty" json:"progress,omitempty"`                      // Read-only indicator of task progress as an approximate percentage between 0 and 100. Not available for all tasks.
	Details          string           `xml:"Details,omitempty" json:"details,omitempty"`                        // Detailed message about the task. Also contained by the Owner entity when task status is preRunning.
	Result           *TaskResult      `xml:"Result,omitempty" json:"result,omitempty"`                          // Result contains additional details that the task may expose

}

Task represents an asynchronous operation in VMware Cloud Director. Type: TaskType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents an asynchronous operation in VMware Cloud Director.u Since: 0.9 Comments added from https://code.vmware.com/apis/912/vmware-cloud-director/doc/doc/types/TaskType.html

type TaskResult added in v2.21.0

type TaskResult struct {
	ResultContent struct {
		Text string `xml:",chardata"`
		Xsi  string `xml:"xsi,attr"`
		Ns11 string `xml:"ns11,attr"`
		Type string `xml:"type,attr"`
	} `xml:"ResultContent"`
}

TaskResult contains additional details that the task may expose after finishing

type TasksInProgress

type TasksInProgress struct {
	// Elements
	Task []*Task `xml:"Task" json:"task"` // A task.
}

TasksInProgress is a list of queued, running, or recently completed tasks. Type: TasksInProgressType Namespace: http://www.vmware.com/vcloud/v1.5 Description: A list of queued, running, or recently completed tasks. Since: 0.9

type TasksList added in v2.9.0

type TasksList struct {
	XMLName xml.Name `xml:"TasksList"`
	Task    []*Task  `xml:"Task,omitempty"`
}

Namespace: http://www.vmware.com/vcloud/v1.5 Retrieve a list of tasks

type TestConnection added in v2.17.0

type TestConnection struct {
	Host                          string               `json:"host"`                                    // The host (or IP address) to connect to.
	Port                          int                  `json:"port"`                                    // The port to use when connecting.
	Secure                        *bool                `json:"secure,omitempty"`                        // If the connection should use https.
	Timeout                       int                  `json:"timeout,omitempty"`                       // Maximum time (in seconds) any step in the test should wait for a response.
	HostnameVerificationAlgorithm string               `json:"hostnameVerificationAlgorithm,omitempty"` // Endpoint/Hostname verification algorithm to be used during SSL/TLS/DTLS handshake.
	AdditionalCAIssuers           []string             `json:"additionalCAIssuers,omitempty"`           // A list of URLs being authorized by the user to retrieve additional CA certificates from, if necessary, to complete the certificate chain to its trust anchor.
	ProxyConnection               *ProxyTestConnection `json:"proxyConnection,omitempty"`               // Proxy connection to use for test. Only one of proxyConnection and preConfiguredProxy can be specified.
	PreConfiguredProxy            string               `json:"preConfiguredProxy,omitempty"`            // The URN of a ProxyConfiguration to use for the test. Only one of proxyConnection or preConfiguredProxy can be specified. If neither is specified then no proxy is used to test the connection.
}

TestConnection defines the parameters used when testing a connection, including SSL handshake and hostname verification.

type TestConnectionResult added in v2.17.0

type TestConnectionResult struct {
	TargetProbe *ProbeResult `json:"targetProbe,omitempty"` // Results of a connection test to a specific endpoint.
	ProxyProbe  *ProbeResult `json:"proxyProbe,omitempty"`  // Results of a connection test to a specific endpoint.
}

TestConnectionResult is the result of a connection test.

type Token added in v2.21.0

type Token struct {
	ID    string            `json:"id,omitempty"`
	Name  string            `json:"name,omitempty"`
	Owner *OpenApiReference `json:"owner,omitempty"`
	Org   *OpenApiReference `json:"org,omitempty"`
	Type  string            `json:"type,omitempty"`
}

Token is used for managing VCD API Tokens for a User in an Org

type TransportZone added in v2.22.0

type TransportZone struct {
	Id              string `json:"id"`
	Name            string `json:"name"`
	Type            string `json:"type,omitempty"`
	AlreadyImported bool   `json:"alreadyImported"`
}

TransportZone is a backing component of a network pool of type 'GENEVE' (NSX-T backed)

type TransportZones added in v2.22.0

type TransportZones struct {
	Values []*TransportZone `json:"values"`
}

type TypedValue deprecated

type TypedValue = MetadataTypedValue

Deprecated: Use MetadataTypedValue instead

type UIPluginMetadata added in v2.21.0

type UIPluginMetadata struct {
	ID             string `json:"id,omitempty"`
	Vendor         string `json:"vendor,omitempty"`
	License        string `json:"license,omitempty"`
	Link           string `json:"link,omitempty"`
	PluginName     string `json:"pluginName,omitempty"`
	Version        string `json:"version,omitempty"`
	Description    string `json:"description,omitempty"`
	ProviderScoped bool   `json:"provider_scoped,omitempty"`
	TenantScoped   bool   `json:"tenant_scoped,omitempty"`
	Enabled        bool   `json:"enabled,omitempty"`
	PluginStatus   string `json:"plugin_status,omitempty"`
}

UIPluginMetadata gives meta information about a UI Plugin

type UndeployVAppParams

type UndeployVAppParams struct {
	Xmlns               string `xml:"xmlns,attr"`
	UndeployPowerAction string `xml:"UndeployPowerAction,omitempty"`
}

UndeployVAppParams parameters to an undeploy vApp request. Type: UndeployVAppParamsType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Parameters to an undeploy vApp request. Since: 0.9

type UpdateLeaseSettingsSection added in v2.14.0

type UpdateLeaseSettingsSection struct {
	XMLName                   xml.Name `xml:"LeaseSettingsSection"`
	XmlnsOvf                  string   `xml:"xmlns:ovf,attr,omitempty"`
	Xmlns                     string   `xml:"xmlns,attr,omitempty"`
	OVFInfo                   string   `xml:"ovf:Info"`
	HREF                      string   `xml:"href,attr,omitempty"`
	Type                      string   `xml:"type,attr,omitempty"`
	DeploymentLeaseExpiration string   `xml:"DeploymentLeaseExpiration,omitempty"`
	DeploymentLeaseInSeconds  *int     `xml:"DeploymentLeaseInSeconds,omitempty"`
	Link                      *Link    `xml:"Link,omitempty"`
	StorageLeaseExpiration    string   `xml:"StorageLeaseExpiration,omitempty"`
	StorageLeaseInSeconds     *int     `xml:"StorageLeaseInSeconds,omitempty"`
}

UpdateLeaseSettingsSection is an extended version of LeaseSettingsSection with additional fields for update

type UpdateVdcStorageProfiles added in v2.13.0

type UpdateVdcStorageProfiles struct {
	XMLName              xml.Name                        `xml:"UpdateVdcStorageProfiles"`
	Xmlns                string                          `xml:"xmlns,attr,omitempty"`
	Name                 string                          `xml:"name,attr"`
	Description          string                          `xml:"Description,omitempty"`
	AddStorageProfile    *VdcStorageProfileConfiguration `xml:"AddStorageProfile,omitempty"`
	RemoveStorageProfile *Reference                      `xml:"RemoveStorageProfile,omitempty"`
}

UpdateVdcStorageProfiles is used to add a storage profile to an Org VDC or to remove one

type UploadSpec added in v2.21.0

type UploadSpec struct {
	FileName     string `json:"fileName,omitempty"`
	Size         int64  `json:"size,omitempty"`
	Checksum     string `json:"checksum,omitempty"`
	ChecksumAlgo string `json:"checksumAlgo,omitempty"`
}

UploadSpec gives information about an upload

type User added in v2.3.0

type User struct {
	XMLName         xml.Name         `xml:"User"`
	Xmlns           string           `xml:"xmlns,attr"`
	Href            string           `xml:"href,attr"`
	Type            string           `xml:"type,attr"`
	ID              string           `xml:"id,attr"`
	OperationKey    string           `xml:"operationKey,attr"`
	Name            string           `xml:"name,attr"`
	Links           LinkList         `xml:"Link,omitempty"`
	Description     string           `xml:"Description,omitempty"`
	FullName        string           `xml:"FullName,omitempty"`
	EmailAddress    string           `xml:"EmailAddress,omitempty"`
	Telephone       string           `xml:"Telephone,omitempty"`
	IsEnabled       bool             `xml:"IsEnabled,omitempty"`
	IsLocked        bool             `xml:"IsLocked,omitempty"`
	IM              string           `xml:"IM,omitempty"`
	NameInSource    string           `xml:"NameInSource,omitempty"`
	IsExternal      bool             `xml:"IsExternal,omitempty"`
	ProviderType    string           `xml:"ProviderType,omitempty"`
	IsGroupRole     bool             `xml:"IsGroupRole,omitempty"`
	StoredVmQuota   int              `xml:"StoredVmQuota"`
	DeployedVmQuota int              `xml:"DeployedVmQuota"`
	Role            *Reference       `xml:"Role,omitempty"`
	GroupReferences *GroupReference  `xml:"GroupReferences,omitempty"`
	Password        string           `xml:"Password,omitempty"`
	Tasks           *TasksInProgress `xml:"Tasks"`
}

Represents an org user Reference: vCloud API 27.0 - UserType https://code.vmware.com/apis/442/vcloud-director#/doc/doc/types/UserType.html Note that the order of fields is important. If this structure needs to change, the field order must be preserved.

type UsersList added in v2.15.0

type UsersList struct {
	UserReference []*Reference `xml:"UserReference,omitempty"`
}

UsersList is a tagged list of User Reference's

type VApp

type VApp struct {
	// Attributes
	HREF                  string `xml:"href,attr,omitempty"`                  // The URI of the entity.
	Type                  string `xml:"type,attr,omitempty"`                  // The MIME type of the entity.
	ID                    string `xml:"id,attr,omitempty"`                    // The entity identifier, expressed in URN format. The value of this attribute uniquely identifies the entity, persists for the life of the entity, and is never reused.
	OperationKey          string `xml:"operationKey,attr,omitempty"`          // Optional unique identifier to support idempotent semantics for create and delete operations.
	Name                  string `xml:"name,attr"`                            // The name of the entity.
	Status                int    `xml:"status,attr,omitempty"`                // Creation status of the resource entity.
	Deployed              bool   `xml:"deployed,attr,omitempty"`              // True if the virtual machine is deployed.
	OvfDescriptorUploaded bool   `xml:"ovfDescriptorUploaded,attr,omitempty"` // Read-only indicator that the OVF descriptor for this vApp has been uploaded.
	// Elements
	Link                 LinkList              `xml:"Link,omitempty"`                 // A reference to an entity or operation associated with this object.
	LeaseSettingsSection *LeaseSettingsSection `xml:"LeaseSettingsSection,omitempty"` // A reference to the lease section of the vApp
	NetworkConfigSection *NetworkConfigSection `xml:"NetworkConfigSection,omitempty"` // Represents vAPP network configuration
	Description          string                `xml:"Description,omitempty"`          // Optional description.
	Tasks                *TasksInProgress      `xml:"Tasks,omitempty"`                // A list of queued, running, or recently completed tasks associated with this entity.
	Files                *FilesList            `xml:"Files,omitempty"`                // Represents a list of files to be transferred (uploaded or downloaded). Each File in the list is part of the ResourceEntity.
	VAppParent           *Reference            `xml:"VAppParent,omitempty"`           // Reserved. Unimplemented.
	// TODO: OVF Sections to be implemented
	// Section OVF_Section `xml:"Section"`
	DateCreated       string          `xml:"DateCreated,omitempty"`       // Creation date/time of the vApp.
	Owner             *Owner          `xml:"Owner,omitempty"`             // vApp owner.
	IsAutoNature      bool            `xml:"autoNature,omitempty"`        // True if the vApp is auto generated with a standalone VM
	InMaintenanceMode bool            `xml:"InMaintenanceMode,omitempty"` // True if this vApp is in maintenance mode. Prevents users from changing vApp metadata.
	Children          *VAppChildren   `xml:"Children,omitempty"`          // Container for virtual machines included in this vApp.
	ProductSection    *ProductSection `xml:"ProductSection,omitempty"`
}

VApp represents a vApp Type: VAppType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a vApp. Since: 0.9

type VAppChildren

type VAppChildren struct {
	VM []*Vm `xml:"Vm,omitempty"` // Represents a virtual machine.
}

VAppChildren is a container for virtual machines included in this vApp. Type: VAppChildrenType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Container for virtual machines included in this vApp. Since: 0.9

type VAppLeaseSettings

type VAppLeaseSettings struct {
	HREF string   `xml:"href,attr,omitempty"` // The URI of the entity.
	Type string   `xml:"type,attr,omitempty"` // The MIME type of the entity.
	Link LinkList `xml:"Link,omitempty"`      // A reference to an entity or operation associated with this object.

	DeleteOnStorageLeaseExpiration   *bool `xml:"DeleteOnStorageLeaseExpiration,omitempty"`
	DeploymentLeaseSeconds           *int  `xml:"DeploymentLeaseSeconds,omitempty"`
	StorageLeaseSeconds              *int  `xml:"StorageLeaseSeconds,omitempty"`
	PowerOffOnRuntimeLeaseExpiration *bool `xml:"PowerOffOnRuntimeLeaseExpiration,omitempty"`
}

type VAppNetwork added in v2.8.0

type VAppNetwork struct {
	Xmlns    string `xml:"xmlns,attr,omitempty"`
	HREF     string `xml:"href,attr,omitempty"`
	Type     string `xml:"type,attr,omitempty"`
	ID       string `xml:"id,attr,omitempty"`
	Name     string `xml:"name,attr"`
	Deployed *bool  `xml:"deployed,attr"` // True if the network is deployed.

	Link          *Link                 `xml:"Link,omitempty"`
	Description   string                `xml:"Description,omitempty"`
	Tasks         *TasksInProgress      `xml:"Tasks,omitempty"`
	Configuration *NetworkConfiguration `xml:"Configuration"`
}

VAppNetwork represents a vApp network configuration Used as input PUT /network/{id} Type: VAppNetworkType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a vApp network configuration. Since: 0.9

type VAppNetworkConfiguration

type VAppNetworkConfiguration struct {
	HREF        string `xml:"href,attr,omitempty"`
	Type        string `xml:"type,attr,omitempty"`
	ID          string `xml:"id,attr,omitempty"`
	NetworkName string `xml:"networkName,attr"`

	Link          *Link                 `xml:"Link,omitempty"`
	Description   string                `xml:"Description,omitempty"`
	Configuration *NetworkConfiguration `xml:"Configuration"`
	IsDeployed    bool                  `xml:"IsDeployed"`
}

VAppNetworkConfiguration represents a vApp network configuration Used in vApp network configuration actions as part of vApp type, VApp.NetworkConfigSection.NetworkConfig or directly as NetworkConfigSection.NetworkConfig for various API calls. Type: VAppNetworkConfigurationType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a vApp network configuration. Since: 0.9

type VAppTemplate

type VAppTemplate struct {
	// Attributes
	HREF                  string `xml:"href,attr,omitempty"`                  // The URI of the entity.
	Type                  string `xml:"type,attr,omitempty"`                  // The MIME type of the entity.
	ID                    string `xml:"id,attr,omitempty"`                    // The entity identifier, expressed in URN format. The value of this attribute uniquely identifies the entity, persists for the life of the entity, and is never reused.
	OperationKey          string `xml:"operationKey,attr,omitempty"`          // Optional unique identifier to support idempotent semantics for create and delete operations.
	Name                  string `xml:"name,attr"`                            // The name of the entity.
	Status                int    `xml:"status,attr,omitempty"`                // Creation status of the resource entity.
	OvfDescriptorUploaded string `xml:"ovfDescriptorUploaded,attr,omitempty"` // True if the OVF descriptor for this template has been uploaded.
	GoldMaster            bool   `xml:"goldMaster,attr,omitempty"`            // True if this template is a gold master.
	// Elements
	Link                  LinkList              `xml:"Link,omitempty"`                  // A reference to an entity or operation associated with this object.
	Description           string                `xml:"Description,omitempty"`           // Optional description.
	Tasks                 *TasksInProgress      `xml:"Tasks,omitempty"`                 // A list of queued, running, or recently completed tasks associated with this entity.
	Files                 *FilesList            `xml:"Files,omitempty"`                 // Represents a list of files to be transferred (uploaded or downloaded). Each File in the list is part of the ResourceEntity.
	Owner                 *Owner                `xml:"Owner,omitempty"`                 // vAppTemplate owner.
	Children              *VAppTemplateChildren `xml:"Children,omitempty"`              // Container for virtual machines included in this vApp template.
	VAppScopedLocalID     string                `xml:"VAppScopedLocalId"`               // A unique identifier for the VM in the scope of the vApp template.
	DefaultStorageProfile string                `xml:"DefaultStorageProfile,omitempty"` // The name of the storage profile to be used for this object. The named storage profile must exist in the organization vDC that contains the object. If not specified, the default storage profile for the vDC is used.
	DateCreated           string                `xml:"DateCreated,omitempty"`           // Creation date/time of the template.
	// FIXME: Upstream bug? Missing NetworkConfigSection, LeaseSettingSection and
	// CustomizationSection at least, NetworkConnectionSection is required when
	// using ComposeVApp action in the context of a Children VM (still
	// referenced by VAppTemplateType).
	NetworkConfigSection     *NetworkConfigSection     `xml:"NetworkConfigSection,omitempty"`
	NetworkConnectionSection *NetworkConnectionSection `xml:"NetworkConnectionSection,omitempty"`
	LeaseSettingsSection     *LeaseSettingsSection     `xml:"LeaseSettingsSection,omitempty"`
	CustomizationSection     *CustomizationSection     `xml:"CustomizationSection,omitempty"`
	ProductSection           *ProductSection           `xml:"ProductSection,omitempty"`
}

VAppTemplate represents a vApp template. Type: VAppTemplateType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a vApp template. Since: 0.9

type VAppTemplateChildren

type VAppTemplateChildren struct {
	// Elements
	VM []*VAppTemplate `xml:"Vm"` // Represents a virtual machine in this vApp template.
}

VAppTemplateChildren is a container for virtual machines included in this vApp template. Type: VAppTemplateChildrenType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Container for virtual machines included in this vApp template. Since: 0.9

type VAppTemplateForUpdate added in v2.15.0

type VAppTemplateForUpdate struct {
	XMLName xml.Name `xml:"VAppTemplate"`
	// Attributes
	Xmlns      string `xml:"xmlns,attr,omitempty"`
	HREF       string `xml:"href,attr,omitempty"`       // The URI of the entity.
	ID         string `xml:"id,attr,omitempty"`         // The entity identifier, expressed in URN format. The value of this attribute uniquely identifies the entity, persists for the life of the entity, and is never reused.
	Name       string `xml:"name,attr"`                 // The name of the entity.
	GoldMaster bool   `xml:"goldMaster,attr,omitempty"` // True if this template is a gold master.
	// Elements
	Link        LinkList `xml:"Link,omitempty"`        // A reference to an entity or operation associated with this object.
	Description string   `xml:"Description,omitempty"` // Optional description.
}

VAppTemplateForUpdate represents a vApp template. It is shrunken version of VAppTemplateType used for update calls. Full VAppTemplateType isn't accepted by API Type: VAppTemplateType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a vApp template.

type VAppTemplateLeaseSettings

type VAppTemplateLeaseSettings struct {
	HREF string   `xml:"href,attr,omitempty"` // The URI of the entity.
	Type string   `xml:"type,attr,omitempty"` // The MIME type of the entity.
	Link LinkList `xml:"Link,omitempty"`      // A reference to an entity or operation associated with this object.

	DeleteOnStorageLeaseExpiration *bool `xml:"DeleteOnStorageLeaseExpiration,omitempty"`
	StorageLeaseSeconds            *int  `xml:"StorageLeaseSeconds,omitempty"`
}

VAppTemplateLeaseSettings represents the vapp template lease settings for a VMware Cloud Director organization. Type: VAppTemplateLeaseSettingsType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents the vapp template lease settings of a VMware Cloud Director organization. Since: 0.9

type VCloud added in v2.10.0

type VCloud struct {
	XMLName     xml.Name `xml:"VCloud"`
	Xmlns       string   `xml:"xmlns,attr,omitempty"`
	Name        string   `xml:"name,attr"`
	HREF        string   `xml:"href,attr"`
	Type        string   `xml:"type,attr,omitempty"`
	Description string   `xml:"Description"` // Contains VCD version, build number and build timestamp
	Link        *Link    `xml:"Link,omitempty"`
}

Structure returned by /api/admin call

type VCloudExtension

type VCloudExtension struct {
	Required bool `xml:"required,attr,omitempty"`
}

General purpose extension element Not related to extension services Reference: vCloud API 30.0 - DiskAttachOrDetachParamsType https://code.vmware.com/apis/287/vcloud?h=Director#/doc/doc/types/VCloudExtensionType.html

type VDCList

type VDCList struct {
	Vdcs []*Reference `xml:"Vdc,omitempty" json:"vdcs,omitempty"`
}

VDCList contains a list of references to Org VDCs Type: VdcListType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a list of organization vDCs. Since: 0.9

type VMDiskChange added in v2.6.0

type VMDiskChange struct {
	XMLName xml.Name `xml:"Vm"`
	Ovf     string   `xml:"xmlns:ovf,attr,omitempty"`
	Xsi     string   `xml:"xmlns:xsi,attr,omitempty"`
	Xmlns   string   `xml:"xmlns,attr,omitempty"`

	HREF        string `xml:"href,attr,omitempty"`   // The URI of the VM entity.
	Type        string `xml:"type,attr,omitempty"`   // The MIME type of the entity - application/vnd.vmware.vcloud.vm+xml
	Name        string `xml:"name,attr"`             // VM name
	Description string `xml:"Description,omitempty"` // Optional description.
	ID          string `xml:"id,attr,omitempty"`     // VM ID. The entity identifier, expressed in URN format. The value of this attribute uniquely identifies the entity, persists for the life of the entity, and is never reused.

	VmSpecSection *VmSpecSection `xml:"VmSpecSection,omitempty"` // Container for the specification of this virtual machine. This is an alternative to using ovf:VirtualHardwareSection + ovf:OperatingSystemSection
}

VMDiskChange represents a virtual machine only with Disk setting update part

type VMGeneralParams

type VMGeneralParams struct {
	// Elements
	Name               string `xml:"Name,omitempty"`               // Name of VM
	Description        string `xml:"Description,omitempty"`        // VM description
	NeedsCustomization bool   `xml:"NeedsCustomization,omitempty"` // True if this VM needs guest customization
	RegenerateBiosUuid bool   `xml:"RegenerateBiosUuid,omitempty"` // True if BIOS UUID of the virtual machine should be regenerated so that it is unique, and not the same as the source virtual machine's BIOS UUID.
}

VMGeneralParams a set of overrides to source VM properties to apply to target VM during copying. Type: VmGeneralParamsType Namespace: http://www.vmware.com/vcloud/v1.5 Description: A set of overrides to source VM properties to apply to target VM during copying. Since: 5.6

type VMSelection

type VMSelection struct {
	VAppScopedVMID string `xml:"VAppScopedVmId"` // VAppScopedVmId of VM to which this rule applies.
	VMNicID        int    `xml:"VmNicId"`        // VM NIC ID to which this rule applies.
	IPType         string `xml:"IpType"`         // The value can be one of:- assigned: assigned internal IP be automatically choosen. NAT: NATed external IP will be automatically choosen.
}

VMSelection represents details of an vm+nic+iptype selection. Type: VmSelectionType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents details of an vm+nic+iptype selection. Since: 5.1

type VMWHostReferences added in v2.17.0

type VMWHostReferences struct {
	HostReference []*Reference `xml:"HostReference,omitempty" json:"hostReference,omitempty"`
	Link          *Link        `xml:"Link,omitempty" json:"link,omitempty"`
}

VMWHostReferences represents a list of available hosts. Type: VMWHostReferencesType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a list of available hosts. Since: 1.0

type VMWNetworkPool added in v2.3.0

type VMWNetworkPool struct {
	HREF        string           `xml:"href,attr,omitempty"`
	Id          string           `xml:"id,attr,omitempty"`
	Type        string           `xml:"type,attr,omitempty"`
	Name        string           `xml:"name,attr"`
	Status      int              `xml:"status,attr,omitempty"`
	Description string           `xml:"netmask,omitempty"`
	Tasks       *TasksInProgress `xml:"Tasks,omitempty"`
}

Represents org VDC Network Reference: vCloud API 27.0 - Network Pool https://code.vmware.com/apis/72/vcloud-director#/doc/doc/types/VMWNetworkPoolType.html

type VMWProviderVdc added in v2.17.0

type VMWProviderVdc struct {
	ProviderVdc

	AvailableUniversalNetworkPool   *Reference         `xml:"AvailableUniversalNetworkPool,omitempty" json:"availableUniversalNetworkPool,omitempty"`     // Selectable universal network reference.
	ComputeProviderScope            string             `xml:"ComputeProviderScope,omitempty" json:"computeProviderScope,omitempty"`                       // The compute provider scope represents the compute fault domain for this provider VDC. This value is a tenant-facing tag that is shown to tenants when viewing fault domains of the child Organization VDCs (for ex. a VDC Group).
	DataStoreRefs                   VimObjectRefs      `xml:"DataStoreRefs" json:"dataStoreRefs"`                                                         // vSphere datastores backing this provider VDC.
	HighestSupportedHardwareVersion string             `xml:"HighestSupportedHardwareVersion,omitempty" json:"highestSupportedHardwareVersion,omitempty"` // The highest virtual hardware version supported by this Provider VDC. If empty or omitted on creation, the system sets it to the highest virtual hardware version supported by all hosts in the primary resource pool. You can modify it when you add more resource pools.
	HostReferences                  *VMWHostReferences `xml:"HostReferences,omitempty" json:"hostReferences,omitempty"`                                   // Shows all hosts which are connected to VC server.
	NsxTManagerReference            *Reference         `xml:"NsxTManagerReference,omitempty" json:"nsxTManagerReference,omitempty"`                       // An optional reference to a registered NSX-T Manager to back networking operations for this provider VDC.
	ResourcePoolRefs                *VimObjectRefs     `xml:"ResourcePoolRefs,omitempty" json:"resourcePoolRefs,omitempty"`                               // Resource pools backing this provider VDC. On create, you must specify a resource pool that is not used by (and is not the child of a resource pool used by) any other provider VDC. On modify, this element is required for schema validation, but its contents cannot be changed.
	VimServer                       []*Reference       `xml:"VimServer,omitempty" json:"vimServer,omitempty"`                                             // The vCenter server that provides the resource pools and datastores. A valid reference is required on create. On modify, this element is required for schema validation, but its contents cannot be changed.
}

VMWProviderVdc represents an extension of ProviderVdc. Type: VMWProviderVdcType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents an extension of ProviderVdc. Since: 1.0

type VMs

type VMs struct {
	HREF        string       `xml:"href,attr,omitempty"`
	Type        string       `xml:"type,attr,omitempty"`
	Link        LinkList     `xml:"Link,omitempty"`
	VMReference []*Reference `xml:"VmReference,omitempty"`
}

VMs represents a list of virtual machines. Type: VmsType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a list of virtual machines. Since: 5.1

type VSphereVirtualCenter added in v2.21.0

type VSphereVirtualCenter struct {
	VcId                      string `json:"vcId"`
	Name                      string `json:"name"`
	Description               string `json:"description"`
	Username                  string `json:"username"`
	Password                  string `json:"password"`
	Url                       string `json:"url"`
	IsEnabled                 bool   `json:"isEnabled"`
	VsphereWebClientServerUrl string `json:"vsphereWebClientServerUrl"`
	HasProxy                  bool   `json:"hasProxy"`
	RootFolder                string `json:"rootFolder"`
	VcNoneNetwork             string `json:"vcNoneNetwork"`
	TenantVisibleName         string `json:"tenantVisibleName"`
	IsConnected               bool   `json:"isConnected"`
	Mode                      string `json:"mode"`
	ListenerState             string `json:"listenerState"`
	ClusterHealthStatus       string `json:"clusterHealthStatus"`
	VcVersion                 string `json:"vcVersion"`
	BuildNumber               string `json:"buildNumber"`
	Uuid                      string `json:"uuid"`
	NsxVManager               struct {
		Username        string `json:"username"`
		Password        string `json:"password"`
		Url             string `json:"url"`
		SoftwareVersion string `json:"softwareVersion"`
	} `json:"nsxVManager"`
	ProxyConfigurationUrn string `json:"proxyConfigurationUrn"`
}

type Value

type Value struct {
	Value string `xml:"http://schemas.dmtf.org/ovf/envelope/1 value,attr,omitempty"`
}

type VcdSamlMetadata added in v2.8.0

type VcdSamlMetadata struct {
	XMLName xml.Name `xml:"EntityDescriptor"`
	Xmlns   string   `xml:"xmlns,attr,omitempty"`
	Text    string   `xml:",chardata"`
	ID      string   `xml:"ID,attr"`
	Md      string   `xml:"xmlns:md,attr,omitempty"`

	// EntityID is the configured vCD Entity ID which is used in ADFS authentication request
	// Note: once this field is set, it is not possible to change it back to empty,
	// but only to replace it with a different value
	EntityID string `xml:"entityID,attr"`
	// SPSSODescriptor is the main body of the SAML metadata file, which defines what the SAML identity provider can do
	SPSSODescriptor SPSSODescriptor `xml:"SPSSODescriptor,omitempty"`
}

VcdSamlMetadata helps to marshal vCD SAML Metadata endpoint response https://1.1.1.1/cloud/org/my-org/saml/metadata/alias/vcd

type VcenterDistributedSwitch added in v2.22.0

type VcenterDistributedSwitch struct {
	BackingRef    OpenApiReference `json:"backingRef"`
	VirtualCenter OpenApiReference `json:"virtualCenter"`
}

VcenterDistributedSwitch is a backing component of a network pool of type VLAN

type VcenterImportableDvpg added in v2.20.0

type VcenterImportableDvpg struct {
	BackingRef *OpenApiReference `json:"backingRef"`
	DvSwitch   struct {
		BackingRef    *OpenApiReference `json:"backingRef"`
		VirtualCenter *OpenApiReference `json:"virtualCenter"`
	} `json:"dvSwitch"`
	VirtualCenter *OpenApiReference `json:"virtualCenter"`
	Vlan          string            `json:"vlan"`
}

VcenterImportableDvpg defines a Distributed Port Group that can be imported into VCD from a vCenter Server.

Note. This is a read-only structure.

type Vdc

type Vdc struct {
	HREF         string `xml:"href,attr,omitempty"`
	Type         string `xml:"type,attr,omitempty"`
	ID           string `xml:"id,attr,omitempty"`
	OperationKey string `xml:"operationKey,attr,omitempty"`
	Name         string `xml:"name,attr"`
	Status       int    `xml:"status,attr,omitempty"`

	Link                 LinkList             `xml:"Link,omitempty"`
	Description          string               `xml:"Description,omitempty"`
	Tasks                *TasksInProgress     `xml:"Tasks,omitempty"`
	AllocationModel      string               `xml:"AllocationModel"`
	ComputeCapacity      []*ComputeCapacity   `xml:"ComputeCapacity"`
	ResourceEntities     []*ResourceEntities  `xml:"ResourceEntities,omitempty"`
	AvailableNetworks    []*AvailableNetworks `xml:"AvailableNetworks,omitempty"`
	Capabilities         []*Capabilities      `xml:"Capabilities,omitempty"`
	NicQuota             int                  `xml:"NicQuota"`
	NetworkQuota         int                  `xml:"NetworkQuota"`
	UsedNetworkCount     int                  `xml:"UsedNetworkCount,omitempty"`
	VMQuota              int                  `xml:"VmQuota"`
	IsEnabled            bool                 `xml:"IsEnabled"`
	VdcStorageProfiles   *VdcStorageProfiles  `xml:"VdcStorageProfiles"`
	DefaultComputePolicy *Reference           `xml:"DefaultComputePolicy"`
}

Vdc represents the user view of an organization VDC. Type: VdcType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents the user view of an organization VDC. Since: 0.9

type VdcCapability added in v2.11.0

type VdcCapability struct {
	// Name of capability
	Name string `json:"name"`
	// Description of capability
	Description string `json:"description"`
	// Value can be any value. Sometimes it is a JSON bool (true, false), sometimes it is a JSON array (["custom", "default"])
	// and sometimes just a string ("NSX_V"). It is up for the consumer to handle values as per the Type field.
	Value interface{} `json:"value"`
	// Type of field (e.g. "Boolean", "String", "List")
	Type string `json:"type"`
	// Category of capability (e.g. "Security", "EdgeGateway", "OrgVdcNetwork")
	Category string `json:"category"`
}

VdcCapability can be used to determine VDC capabilities, including such: * Is it backed by NSX-T or NSX-V pVdc * Does it support BGP routing

type VdcComputePolicy added in v2.9.0

type VdcComputePolicy struct {
	ID                         string   `json:"id,omitempty"`
	Description                *string  `json:"description"` // It's a not-omitempty pointer to be able to send "null" values for empty descriptions.
	Name                       string   `json:"name"`
	CPUSpeed                   *int     `json:"cpuSpeed,omitempty"`
	Memory                     *int     `json:"memory,omitempty"`
	CPUCount                   *int     `json:"cpuCount,omitempty"`
	CoresPerSocket             *int     `json:"coresPerSocket,omitempty"`
	MemoryReservationGuarantee *float64 `json:"memoryReservationGuarantee,omitempty"`
	CPUReservationGuarantee    *float64 `json:"cpuReservationGuarantee,omitempty"`
	CPULimit                   *int     `json:"cpuLimit,omitempty"`
	MemoryLimit                *int     `json:"memoryLimit,omitempty"`
	CPUShares                  *int     `json:"cpuShares,omitempty"`
	MemoryShares               *int     `json:"memoryShares,omitempty"`
	ExtraConfigs               *struct {
		AdditionalProp1 string `json:"additionalProp1,omitempty"`
		AdditionalProp2 string `json:"additionalProp2,omitempty"`
		AdditionalProp3 string `json:"additionalProp3,omitempty"`
	} `json:"extraConfigs,omitempty"`
	PvdcComputePolicyRef     *OpenApiReference   `json:"pvdcComputePolicyRef,omitempty"`
	PvdcComputePolicy        *OpenApiReference   `json:"pvdcComputePolicy,omitempty"`
	CompatibleVdcTypes       []string            `json:"compatibleVdcTypes,omitempty"`
	IsSizingOnly             bool                `json:"isSizingOnly,omitempty"`
	PvdcID                   string              `json:"pvdcId,omitempty"`
	NamedVMGroups            []OpenApiReferences `json:"namedVmGroups,omitempty"`
	LogicalVMGroupReferences OpenApiReferences   `json:"logicalVmGroupReferences,omitempty"`
	IsAutoGenerated          bool                `json:"isAutoGenerated,omitempty"`
}

VdcComputePolicy contains VDC specific configuration for workloads. (version 1.0.0) Deprecated: Use VdcComputePolicyV2 instead (version 2.0.0)

type VdcComputePolicyReferences added in v2.9.0

type VdcComputePolicyReferences struct {
	Xmlns                     string       `xml:"xmlns,attr"`
	HREF                      string       `xml:"href,attr,omitempty"`
	Type                      string       `xml:"type,attr,omitempty"`
	Link                      *Link        `xml:"Link,omitempty"`
	VdcComputePolicyReference []*Reference `xml:"VdcComputePolicyReference,omitempty"`
}

type VdcComputePolicyV2 added in v2.17.0

type VdcComputePolicyV2 struct {
	VdcComputePolicy
	PolicyType             string                   `json:"policyType"` // Required. Can be "VdcVmPolicy" or "VdcKubernetesPolicy"
	IsVgpuPolicy           bool                     `json:"isVgpuPolicy,omitempty"`
	PvdcNamedVmGroupsMap   []PvdcNamedVmGroupsMap   `json:"pvdcNamedVmGroupsMap,omitempty"`
	PvdcLogicalVmGroupsMap []PvdcLogicalVmGroupsMap `json:"pvdcLogicalVmGroupsMap,omitempty"`
	PvdcVgpuClustersMap    []PvdcVgpuClustersMap    `json:"pvdcVgpuClustersMap,omitempty"`
	VgpuProfiles           []VgpuProfile            `json:"vgpuProfiles,omitempty"`
}

VdcComputePolicyV2 contains VDC specific configuration for workloads (version 2.0.0) https://developer.vmware.com/apis/vmware-cloud-director/latest/data-structures/VdcComputePolicy2/

type VdcConfiguration

type VdcConfiguration struct {
	XMLName         xml.Name           `xml:"CreateVdcParams"`
	Xmlns           string             `xml:"xmlns,attr"`
	Name            string             `xml:"name,attr"`
	Description     string             `xml:"Description,omitempty"`
	AllocationModel string             `xml:"AllocationModel"` // Flex supported from 32.0
	ComputeCapacity []*ComputeCapacity `xml:"ComputeCapacity"`
	NicQuota        int                `xml:"NicQuota,omitempty"`
	NetworkQuota    int                `xml:"NetworkQuota,omitempty"`
	VmQuota         int                `xml:"VmQuota,omitempty"`
	IsEnabled       bool               `xml:"IsEnabled,omitempty"`
	// Create uses VdcStorageProfileConfiguration and fetch AdminVdcStorageProfile or VdcStorageProfile
	VdcStorageProfile        []*VdcStorageProfileConfiguration `xml:"VdcStorageProfile"`
	ResourceGuaranteedMemory *float64                          `xml:"ResourceGuaranteedMemory,omitempty"`
	ResourceGuaranteedCpu    *float64                          `xml:"ResourceGuaranteedCpu,omitempty"`
	VCpuInMhz                int64                             `xml:"VCpuInMhz,omitempty"`
	IsThinProvision          bool                              `xml:"IsThinProvision,omitempty"`
	NetworkPoolReference     *Reference                        `xml:"NetworkPoolReference,omitempty"`
	ProviderVdcReference     *Reference                        `xml:"ProviderVdcReference"`
	UsesFastProvisioning     bool                              `xml:"UsesFastProvisioning,omitempty"`
	OverCommitAllowed        bool                              `xml:"OverCommitAllowed,omitempty"`
	VmDiscoveryEnabled       bool                              `xml:"VmDiscoveryEnabled,omitempty"`
	IsElastic                *bool                             `xml:"IsElastic,omitempty"`             // Supported from 32.0 for the Flex model
	IncludeMemoryOverhead    *bool                             `xml:"IncludeMemoryOverhead,omitempty"` // Supported from 32.0 for the Flex model
}

VdcConfiguration models the payload for creating a VDC. Type: CreateVdcParamsType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Parameters for creating an organization VDC Since: 5.1 https://code.vmware.com/apis/220/vcloud#/doc/doc/types/CreateVdcParamsType.html

type VdcGroup added in v2.14.0

type VdcGroup struct {
	Description                string                 `json:"description,omitempty"`                // The description of this group.
	DfwEnabled                 bool                   `json:"dfwEnabled,omitempty"`                 // Whether Distributed Firewall is enabled for this vDC Group. Only applicable for NSX_T vDC Groups.
	ErrorMessage               string                 `json:"errorMessage,omitempty"`               // If the group has an error status, a more detailed error message is set here.
	Id                         string                 `json:"id,omitempty"`                         // The unique ID for the vDC Group (read-only).
	LocalEgress                bool                   `json:"localEgress,omitempty"`                // Determines whether local egress is enabled for a universal router belonging to a universal vDC group. This value is used on create if universalNetworkingEnabled is set to true. This cannot be updated. This value is always false for local vDC groups.
	Name                       string                 `json:"name"`                                 // The name of this group. The name must be unique.
	NetworkPoolId              string                 `json:"networkPoolId,omitempty"`              // ID of network pool to use if creating a local vDC group router. Must be set if creating a local group. Ignored if creating a universal group.
	NetworkPoolUniversalId     string                 `json:"networkPoolUniversalId,omitempty"`     // The network provider’s universal id that is backing the universal network pool. This field is read-only and is derived from the list of participating vDCs if a universal vDC group is created. For universal vDC groups, each participating vDC should have a universal network pool that is backed by this same id.
	NetworkProviderType        string                 `json:"networkProviderType,omitempty"`        // The values currently supported are NSX_V and NSX_T. Defines the networking provider backing the vDC Group. This is used on create. If not specified, NSX_V value will be used. NSX_V is used for existing vDC Groups and vDC Groups where Cross-VC NSX is used for the underlying technology. NSX_T is used when the networking provider type for the Organization vDCs in the group is NSX-T. NSX_T only supports groups of type LOCAL (single site).
	OrgId                      string                 `json:"orgId"`                                // The organization that this group belongs to.
	ParticipatingOrgVdcs       []ParticipatingOrgVdcs `json:"participatingOrgVdcs"`                 // The list of organization vDCs that are participating in this group.
	Status                     string                 `json:"status,omitempty"`                     // The status that the group can be in. Possible values are: SAVING, SAVED, CONFIGURING, REALIZED, REALIZATION_FAILED, DELETING, DELETE_FAILED, OBJECT_NOT_FOUND, UNCONFIGURED
	Type                       string                 `json:"type,omitempty"`                       // Defines the group as LOCAL or UNIVERSAL. This cannot be changed. Local vDC Groups can have networks stretched across multiple vDCs in a single Cloud Director instance. Local vDC Groups share the same broadcast domain/transport zone and network provider scope. Universal vDC groups can have networks stretched across multiple vDCs in a single or multiple Cloud Director instance(s). Universal vDC groups are backed by a broadcast domain/transport zone that strectches across a single or multiple Cloud Director instance(s). Local vDC groups are supported for both NSX-V and NSX-T Network Provider Types. Universal vDC Groups are supported for only NSX_V Network Provider Type. Possible values are: LOCAL , UNIVERSAL
	UniversalNetworkingEnabled bool                   `json:"universalNetworkingEnabled,omitempty"` // True means that a vDC group router has been created. If set to true for vdc group creation, a universal router will also be created.
}

VdcGroup is a VDC group definition

type VdcNetworkProfile added in v2.17.0

type VdcNetworkProfile struct {
	// PrimaryEdgeCluster defines NSX-V Edge Cluster where the primary appliance for an NSX-V Edge
	// Gateway will be deployed. (NSX-V only)
	PrimaryEdgeCluster *OpenApiReference `json:"primaryEdgeCluster,omitempty"`

	// SecondaryEdgeCluster defines NSX-V Edge Cluster where the secondary appliance for an NSX-V
	// Edge Gateway will be deployed if HA is enabled on the Edge. (NSX-V only)
	SecondaryEdgeCluster *OpenApiReference `json:"secondaryEdgeCluster,omitempty"`

	// ServicesEdgeCluster contains NSX-T Edge Cluster where the DHCP server profile will be stored
	// for NSX-T networks using NETWORK mode DHCP. (NSX-T only)
	ServicesEdgeCluster *VdcNetworkProfileServicesEdgeCluster `json:"servicesEdgeCluster,omitempty"`

	// VappNetworkSegmentProfileTemplateRef defines vApp Network Segment Profile Template that is to
	// be used when any new vApp Network is created under this VDC. Setting this will override any
	// global level vApp Network Segment Profile Template. This field is only applicable for (NSX-T
	// only)
	// VCD 10.3.2+ (API 36.2+)
	VappNetworkSegmentProfileTemplateRef *OpenApiReference `json:"vappNetworkSegmentProfileTemplateRef,omitempty"`

	// VdcNetworkSegmentProfileTemplateRef defines Org vDC Network Segment Profile Template that is
	// to be used when any new Org vDC Network is created under this VDC. Setting this will override
	// any global level Org vDC Network Segment Profile Template. (NSX-T only)
	// VCD 10.3.2+ (API 36.2+)
	VdcNetworkSegmentProfileTemplateRef *OpenApiReference `json:"vdcNetworkSegmentProfileTemplateRef,omitempty"`
}

VdcNetworkProfile defines a VDC Network Profile.

All fields are optional, but omiting them will reset value. The general approach while updating VdcNetworkProfile should be to retrieve existing configuration and mutate it.

type VdcNetworkProfileServicesEdgeCluster added in v2.17.0

type VdcNetworkProfileServicesEdgeCluster struct {
	BackingID      string            `json:"backingId"`
	EdgeClusterRef *OpenApiReference `json:"edgeClusterRef,omitempty"`
}

VdcNetworkProfileServicesEdgeCluster contains reference to NSX-T Edge Cluster used in VdcNetworkProfile

type VdcStorageProfile

type VdcStorageProfile struct {
	ID                        string                         `xml:"id,attr"`
	Xmlns                     string                         `xml:"xmlns,attr"`
	Name                      string                         `xml:"name,attr"`
	Enabled                   *bool                          `xml:"Enabled,omitempty"`
	Units                     string                         `xml:"Units"`
	Limit                     int64                          `xml:"Limit"`
	Default                   bool                           `xml:"Default"`
	IopsSettings              *VdcStorageProfileIopsSettings `xml:"IopsSettings"`
	StorageUsedMB             int64                          `xml:"StorageUsedMB"`
	IopsAllocated             int64                          `xml:"IopsAllocated"`
	ProviderVdcStorageProfile *Reference                     `xml:"ProviderVdcStorageProfile"`
}

VdcStorageProfile represents the parameters for fetched storage profile Type: VdcStorageProfileParamsType Namespace: http://www.vmware.com/vcloud/v1.5 https://vdc-repo.vmware.com/vmwb-repository/dcr-public/7a028e78-bd37-4a6a-8298-9c26c7eeb9aa/09142237-dd46-4dee-8326-e07212fb63a8/doc/doc/types/VdcStorageProfileType.html https://vdc-repo.vmware.com/vmwb-repository/dcr-public/71e12563-bc11-4d64-821d-92d30f8fcfa1/7424bf8e-aec2-44ad-be7d-b98feda7bae0/doc/doc/types/AdminVdcStorageProfileType.html

type VdcStorageProfileConfiguration added in v2.10.0

type VdcStorageProfileConfiguration struct {
	Enabled                   *bool      `xml:"Enabled,omitempty"`
	Units                     string     `xml:"Units"`
	Limit                     int64      `xml:"Limit"`
	Default                   bool       `xml:"Default"`
	ProviderVdcStorageProfile *Reference `xml:"ProviderVdcStorageProfile"`
}

VdcStorageProfileConfiguration represents the parameters to assign a storage profile in creation of organization vDC. Type: VdcStorageProfileParamsType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents the parameters to create a storage profile in an organization vDC. Since: 5.1 https://code.vmware.com/apis/220/vcloud#/doc/doc/types/VdcStorageProfileParamsType.html

type VdcStorageProfileIopsSettings added in v2.10.0

type VdcStorageProfileIopsSettings struct {
	Xmlns                   string `xml:"xmlns,attr"`
	Enabled                 bool   `xml:"Enabled"`
	DiskIopsMax             int64  `xml:"DiskIopsMax"`
	DiskIopsDefault         int64  `xml:"DiskIopsDefault"`
	StorageProfileIopsLimit int64  `xml:"StorageProfileIopsLimit,omitempty"`
	DiskIopsPerGbMax        int64  `xml:"DiskIopsPerGbMax"`
}

VdcStorageProfileIopsSettings represents the parameters for VDC storage profiles Iops settings. Type: VdcStorageProfileIopsSettings https://vdc-repo.vmware.com/vmwb-repository/dcr-public/71e12563-bc11-4d64-821d-92d30f8fcfa1/7424bf8e-aec2-44ad-be7d-b98feda7bae0/doc/doc/types/VdcStorageProfileIopsSettingsType.html

type VdcStorageProfiles

type VdcStorageProfiles struct {
	VdcStorageProfile []*Reference `xml:"VdcStorageProfile,omitempty"`
}

VdcStorageProfiles is a container for references to storage profiles associated with a vDC. Element: VdcStorageProfiles Type: VdcStorageProfilesType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Container for references to storage profiles associated with a vDC. Since: 5.1

type VendorTemplate

type VendorTemplate struct {
	Name string `xml:"Name"` // Name of the vendor template. This is required.
	ID   string `xml:"Id"`   // ID of the vendor template. This is required.
}

VendorTemplate is information about a vendor service template. This is optional. Type: VendorTemplateType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Information about a vendor service template. This is optional. Since: 5.1

type VersionField added in v2.14.0

type VersionField struct {
	Version int `json:"version"`
}

VersionField defines Version

type VgpuProfile added in v2.22.0

type VgpuProfile struct {
	Id                 string `json:"id"`
	Name               string `json:"name"`
	TenantFacingName   string `json:"tenantFacingName"`
	Instructions       string `json:"instructions,omitempty"`
	AllowMultiplePerVm bool   `json:"allowMultiplePerVm"`
	Count              int    `json:"count,omitempty"`
}

VgpuProfile uniquely represents a type of vGPU vGPU Profiles are fetched from your NVIDIA GRID GPU enabled Clusters in vCenter.

type VimObjectRef added in v2.2.0

type VimObjectRef struct {
	VimServerRef  *Reference `xml:"VimServerRef" json:"vimServerRef"`
	MoRef         string     `xml:"MoRef" json:"moRef"`
	VimObjectType string     `xml:"VimObjectType" json:"vimObjectType"`
}

Type: VimObjectRefType Namespace: http://www.vmware.com/vcloud/extension/v1.5 https://vdc-repo.vmware.com/vmwb-repository/dcr-public/7a028e78-bd37-4a6a-8298-9c26c7eeb9aa/09142237-dd46-4dee-8326-e07212fb63a8/doc/doc/types/VimObjectRefsType.html Description: Represents the Managed Object Reference (MoRef) and the type of a vSphere object. Since: 0.9

type VimObjectRefs added in v2.2.0

type VimObjectRefs struct {
	VimObjectRef []*VimObjectRef `xml:"VimObjectRef" json:"vimObjectRef"`
}

Type: VimObjectRefsType Namespace: http://www.vmware.com/vcloud/extension/v1.5 https://vdc-repo.vmware.com/vmwb-repository/dcr-public/7a028e78-bd37-4a6a-8298-9c26c7eeb9aa/09142237-dd46-4dee-8326-e07212fb63a8/doc/doc/types/VimObjectRefsType.html Description: List of VimObjectRef elements. Since: 0.9

type VirtualHardwareConnection

type VirtualHardwareConnection struct {
	IPAddress         string `xml:"ipAddress,attr,omitempty"`
	PrimaryConnection bool   `xml:"primaryNetworkConnection,attr,omitempty"`
	IpAddressingMode  string `xml:"ipAddressingMode,attr,omitempty"`
	NetworkName       string `xml:",chardata"`
}

Connection info from ResourceType=10 (Network Interface)

type VirtualHardwareHostResource

type VirtualHardwareHostResource struct {
	BusType           int    `xml:"busType,attr,omitempty"`
	BusSubType        string `xml:"busSubType,attr,omitempty"`
	Capacity          int    `xml:"capacity,attr,omitempty"`
	StorageProfile    string `xml:"storageProfileHref,attr,omitempty"`
	OverrideVmDefault bool   `xml:"storageProfileOverrideVmDefault,attr,omitempty"`
	Disk              string `xml:"disk,attr,omitempty"`
}

HostResource info from ResourceType=17 (Hard Disk) Reference: vCloud API Programming Guide for Service Providers vCloud API 30.0, Page 188 - 189 https://vdc-download.vmware.com/vmwb-repository/dcr-public/1b6cf07d-adb3-4dba-8c47-9c1c92b04857/ def8435d-a54a-4923-b26a-e2d1915b09c3/vcloud_sp_api_guide_30_0.pdf

type VirtualHardwareItem

type VirtualHardwareItem struct {
	XMLName             xml.Name                       `xml:"Item"`
	ResourceType        int                            `xml:"ResourceType,omitempty"`
	ResourceSubType     string                         `xml:"ResourceSubType,omitempty"`
	ElementName         string                         `xml:"ElementName,omitempty"`
	Description         string                         `xml:"Description,omitempty"`
	InstanceID          int                            `xml:"InstanceID,omitempty"`
	AutomaticAllocation bool                           `xml:"AutomaticAllocation,omitempty"`
	Address             string                         `xml:"Address,omitempty"`
	AddressOnParent     int                            `xml:"AddressOnParent,omitempty"`
	AllocationUnits     string                         `xml:"AllocationUnits,omitempty"`
	Reservation         int                            `xml:"Reservation,omitempty"`
	VirtualQuantity     int64                          `xml:"VirtualQuantity,omitempty"`
	Weight              int                            `xml:"Weight,omitempty"`
	CoresPerSocket      int                            `xml:"CoresPerSocket,omitempty"`
	Connection          []*VirtualHardwareConnection   `xml:"Connection,omitempty"`
	HostResource        []*VirtualHardwareHostResource `xml:"HostResource,omitempty"`
	Link                []*Link                        `xml:"Link,omitempty"`
	// Reference: https://code.vmware.com/apis/287/vcloud?h=Director#/doc/doc/operations/GET-DisksRasdItemsList-vApp.html
	Parent int `xml:"Parent,omitempty"`
}

Each ovf:Item parsed from the ovf:VirtualHardwareSection

type VirtualHardwareSection

type VirtualHardwareSection struct {
	// Extends OVF Section_Type
	XMLName xml.Name `xml:"VirtualHardwareSection"`
	Xmlns   string   `xml:"vcloud,attr,omitempty"`

	Info string                 `xml:"Info"`
	HREF string                 `xml:"href,attr,omitempty"`
	Type string                 `xml:"type,attr,omitempty"`
	Item []*VirtualHardwareItem `xml:"Item,omitempty"`
}

ovf:VirtualHardwareSection from Vm struct

type VirtualHardwareVersion added in v2.22.0

type VirtualHardwareVersion struct {
	HardDiskAdapter           []*HardDiskAdapter                 `xml:"HardDiskAdapter"`
	Link                      Link                               `xml:"Link"`
	MaxCPUs                   int                                `xml:"maxCPUs"`
	MaxCoresPerSocket         int                                `xml:"maxCoresPerSocket"`
	MaxMemorySizeMb           int                                `xml:"maxMemorySizeMb"`
	MaxNICs                   int                                `xml:"maxNICs"`
	Name                      string                             `xml:"name"`
	SupportedMemorySizeGb     []int                              `xml:"supportedMemorySizeGb"`
	SupportedCoresPerSocket   []int                              `xml:"supportedCoresPerSocket"`
	SupportedOperatingSystems *SupportedOperatingSystemsInfoType `xml:"supportedOperatingSystems"`

	SupportsHotAdd     *bool `xml:"supportsHotAdd"`
	SupportsHotPlugPCI *bool `xml:"supportsHotPlugPCI"`
	SupportsNestedHV   *bool `xml:"supportsNestedHV"`
}

VirtualHardwareVersion describes supported hardware by the VMs created on the VDC

type VlanIdRange added in v2.21.0

type VlanIdRange struct {
	StartId int `json:"startId"`
	EndId   int `json:"endId"`
}

VlanIdRange is a component of a network pool of type VLAN

type VlanIdRanges added in v2.21.0

type VlanIdRanges struct {
	Values []VlanIdRange `json:"values"`
}

type Vm added in v2.11.0

type Vm struct {
	// Attributes
	Ovf   string `xml:"xmlns:ovf,attr,omitempty"`
	Xsi   string `xml:"xmlns:xsi,attr,omitempty"`
	Xmlns string `xml:"xmlns,attr,omitempty"`

	HREF                    string `xml:"href,attr,omitempty"`                    // The URI of the entity.
	Type                    string `xml:"type,attr,omitempty"`                    // The MIME type of the entity.
	ID                      string `xml:"id,attr,omitempty"`                      // The entity identifier, expressed in URN format. The value of this attribute uniquely identifies the entity, persists for the life of the entity, and is never reused
	OperationKey            string `xml:"operationKey,attr,omitempty"`            // Optional unique identifier to support idempotent semantics for create and delete operations.
	Name                    string `xml:"name,attr"`                              // The name of the entity.
	Status                  int    `xml:"status,attr,omitempty"`                  // Creation status of the resource entity.
	Deployed                bool   `xml:"deployed,attr,omitempty"`                // True if the virtual machine is deployed.
	NeedsCustomization      bool   `xml:"needsCustomization,attr,omitempty"`      // True if this virtual machine needs customization.
	NestedHypervisorEnabled bool   `xml:"nestedHypervisorEnabled,attr,omitempty"` // True if hardware-assisted CPU virtualization capabilities in the host should be exposed to the guest operating system.
	// Elements
	Link        LinkList         `xml:"Link,omitempty"`        // A reference to an entity or operation associated with this object.
	Description string           `xml:"Description,omitempty"` // Optional description.
	Tasks       *TasksInProgress `xml:"Tasks,omitempty"`       // A list of queued, running, or recently completed tasks associated with this entity.
	Files       *FilesList       `xml:"FilesList,omitempty"`   // Represents a list of files to be transferred (uploaded or downloaded). Each File in the list is part of the ResourceEntity.
	VAppParent  *Reference       `xml:"VAppParent,omitempty"`  // Reserved. Unimplemented.
	// TODO: OVF Sections to be implemented
	// Section OVF_Section `xml:"Section,omitempty"
	DateCreated string `xml:"DateCreated,omitempty"` // Creation date/time of the vApp.

	// Section ovf:VirtualHardwareSection
	VirtualHardwareSection *VirtualHardwareSection `xml:"VirtualHardwareSection,omitempty"`

	RuntimeInfoSection *RuntimeInfoSection `xml:"RuntimeInfoSection,omitempty"`

	// FIXME: Upstream bug? Missing NetworkConnectionSection
	NetworkConnectionSection *NetworkConnectionSection `xml:"NetworkConnectionSection,omitempty"`

	VAppScopedLocalID string `xml:"VAppScopedLocalId,omitempty"` // A unique identifier for the virtual machine in the scope of the vApp.

	Snapshots *SnapshotSection `xml:"SnapshotSection,omitempty"`

	// The OVF environment defines how the guest software and the virtualization platform interact.
	Environment *OvfEnvironment `xml:"Environment,omitempty"`

	VmSpecSection *VmSpecSection `xml:"VmSpecSection,omitempty"`

	// GuestCustomizationSection contains settings for VM customization like admin password, SID
	// changes, domain join configuration, etc
	GuestCustomizationSection *GuestCustomizationSection `xml:"GuestCustomizationSection,omitempty"`

	VMCapabilities *VmCapabilities `xml:"VmCapabilities,omitempty"` // Allows you to specify certain capabilities of this virtual machine.
	StorageProfile *Reference      `xml:"StorageProfile,omitempty"` // A reference to a storage profile to be used for this object. The specified storage profile must exist in the organization vDC that contains the object. If not specified, the default storage profile for the vDC is used.
	ProductSection *ProductSection `xml:"ProductSection,omitempty"`
	ComputePolicy  *ComputePolicy  `xml:"ComputePolicy,omitempty"` // accessible only from version API 33.0
	Media          *Reference      `xml:"Media,omitempty"`         // Reference to the media object to insert in a new VM.
	BootOptions    *BootOptions    `xml:"BootOptions,omitempty"`   // Accessible only from API version 37.1+
}

Vm represents a virtual machine Type: VmType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Represents a virtual machine. Since: 0.9 This structure used to be called `VM`, and needed an XMLName to adjust the XML entity name upon marshalling. We have renamed it to `Vm` to remove the ambiguity and avoid XMLName conflicts when embedding this type into another structure. Now, there is no need for XMLName, as the name of the structure is the same as the XML entity

type VmAffinityRule added in v2.8.0

type VmAffinityRule struct {
	XMLName         xml.Name         `xml:"VmAffinityRule"`
	Xmlns           string           `xml:"xmlns,attr"`
	HREF            string           `xml:"href,attr,omitempty"`
	ID              string           `xml:"id,attr,omitempty"`
	Name            string           `xml:"Name"`
	OperationKey    string           `xml:"OperationKey,attr,omitempty"` // Optional unique identifier to support idempotent semantics for create and delete operations
	IsEnabled       *bool            `xml:"IsEnabled"`                   // True if the affinity rule is enabled
	IsMandatory     *bool            `xml:"IsMandatory"`                 // True if this affinity rule is mandatory. When a rule is mandatory, a host failover will not power on the VM if doing so would violate the rule
	Polarity        string           `xml:"Polarity"`                    // The polarity of this rule. One of: Affinity, Anti-Affinity
	VmReferences    []*VMs           `xml:"VmReferences"`                // A list of VmReferences under a specific VM affinity rule.
	Link            []*Link          `xml:"Link,omitempty"`              //
	VCloudExtension *VCloudExtension `xml:"VCloudExtension,omitempty"`   // An optional extension element that can contain an arbitrary number of elements and attributes
}

VmAffinityRule defines an affinity (or anti-affinity) rule for a group of VmReferences` https://code.vmware.com/apis/722/doc/doc/types/VmAffinityRuleType.html

type VmAffinityRules added in v2.8.0

type VmAffinityRules struct {
	HREF           string            `xml:"href,attr,omitempty"`
	Type           string            `xml:"type,attr,omitempty"`
	Link           *Link             `xml:"Link,omitempty"` //
	VmAffinityRule []*VmAffinityRule `xml:"VmAffinityRule,omitempty"`
}

VmAffinityRules defines a list of VmAffinityRule

type VmCapabilities added in v2.9.0

type VmCapabilities struct {
	Xmlns               string   `xml:"xmlns,attr"`
	HREF                string   `xml:"href,attr,omitempty"`
	Type                string   `xml:"type,attr,omitempty"`
	MemoryHotAddEnabled bool     `xml:"MemoryHotAddEnabled,omitempty"`
	CPUHotAddEnabled    bool     `xml:"CpuHotAddEnabled,omitempty"`
	Link                LinkList `xml:"Link,omitempty"`
}

VmCapabilities allows you to specify certain capabilities of this virtual machine. Type: VmCapabilitiesType Namespace: http://www.vmware.com/vcloud/v1.5 Description: Allows you to specify certain capabilities of this virtual machine. Since: 5.1

type VmPendingQuestion

type VmPendingQuestion struct {
	XMLName    xml.Name                      `xml:"VmPendingQuestion"`
	Xmlns      string                        `xml:"xmlns,attr,omitempty"`
	Type       string                        `xml:"type,attr"`
	HREF       string                        `xml:"href,attr"`
	Link       LinkList                      `xml:"Link,omitempty"`
	Question   string                        `xml:"Question"`
	QuestionId string                        `xml:"QuestionId"`
	Choices    []*VmQuestionAnswerChoiceType `xml:"Choices"`
}

Parameters for VM pending questions Reference: vCloud API 27.0 - VmPendingQuestionType https://code.vmware.com/apis/287/vcloud#/doc/doc/types/VmPendingQuestionType.html

type VmQueryFilter added in v2.8.0

type VmQueryFilter int

VmQueryFilter defines how we search VMs

const (
	// VmQueryFilterAll defines a no-filter search, i.e. will return all elements
	VmQueryFilterAll VmQueryFilter = iota

	// VmQueryFilterOnlyDeployed defines a filter for deployed VMs
	VmQueryFilterOnlyDeployed

	// VmQueryFilterOnlyTemplates defines a filter for VMs inside a template
	VmQueryFilterOnlyTemplates
)

func (VmQueryFilter) String added in v2.8.0

func (qf VmQueryFilter) String() string

String converts a VmQueryFilter into the corresponding filter needed by the query to get the wanted result

type VmQuestionAnswer

type VmQuestionAnswer struct {
	XMLName    xml.Name `xml:"VmQuestionAnswer"`
	Xmlns      string   `xml:"xmlns,attr,omitempty"`
	ChoiceId   int      `xml:"ChoiceId"`
	QuestionId string   `xml:"QuestionId"`
}

Parameters for VM question answer Reference: vCloud API 27.0 - VmQuestionAnswerType https://code.vmware.com/apis/287/vcloud#/doc/doc/types/VmQuestionAnswerType.html

type VmQuestionAnswerChoiceType

type VmQuestionAnswerChoiceType struct {
	Id   int    `xml:"Id"`
	Text string `xml:"Text,omitempty"`
}

Parameters for VM question answer choice Reference: vCloud API 27.0 - VmQuestionAnswerChoiceType https://code.vmware.com/apis/287/vcloud#/doc/doc/types/VmQuestionAnswerChoiceType.html

type VmSpecSection added in v2.6.0

type VmSpecSection struct {
	Modified          *bool             `xml:"Modified,attr,omitempty"`
	Info              string            `xml:"ovf:Info"`
	OsType            string            `xml:"OsType,omitempty"`            // The type of the OS. This parameter may be omitted when using the VmSpec to update the contents of an existing VM.
	Firmware          string            `xml:"Firmware,omitempty"`          // Available since API 37.1. VM's Firmware, can be either 'bios' or 'efi'.
	NumCpus           *int              `xml:"NumCpus,omitempty"`           // Number of CPUs. This parameter may be omitted when using the VmSpec to update the contents of an existing VM.
	NumCoresPerSocket *int              `xml:"NumCoresPerSocket,omitempty"` // Number of cores among which to distribute CPUs in this virtual machine. This parameter may be omitted when using the VmSpec to update the contents of an existing VM.
	CpuResourceMhz    *CpuResourceMhz   `xml:"CpuResourceMhz,omitempty"`    // CPU compute resources. This parameter may be omitted when using the VmSpec to update the contents of an existing VM.
	MemoryResourceMb  *MemoryResourceMb `xml:"MemoryResourceMb"`            // Memory compute resources. This parameter may be omitted when using the VmSpec to update the contents of an existing VM.
	MediaSection      *MediaSection     `xml:"MediaSection,omitempty"`      // The media devices of this VM.
	DiskSection       *DiskSection      `xml:"DiskSection,omitempty"`       // virtual disks of this VM.
	HardwareVersion   *HardwareVersion  `xml:"HardwareVersion"`             // vSphere name of Virtual Hardware Version of this VM. Example: vmx-13 - This parameter may be omitted when using the VmSpec to update the contents of an existing VM.
	VmToolsVersion    string            `xml:"VmToolsVersion,omitempty"`    // VMware tools version of this VM.
	VirtualCpuType    string            `xml:"VirtualCpuType,omitempty"`    // The capabilities settings for this VM. This parameter may be omitted when using the VmSpec to update the contents of an existing VM.
	TimeSyncWithHost  *bool             `xml:"TimeSyncWithHost,omitempty"`  // Synchronize the VM's time with the host.
}

VmSpecSection from Vm struct

type Vms

type Vms struct {
	XMLName     xml.Name     `xml:"Vms"`
	Xmlns       string       `xml:"xmlns,attr,omitempty"`
	Type        string       `xml:"type,attr"`
	HREF        string       `xml:"href,attr"`
	VmReference []*Reference `xml:"VmReference,omitempty"`
}

Represents a list of virtual machines Reference: vCloud API 30.0 - VmsType https://code.vmware.com/apis/287/vcloud?h=Director#/doc/doc/types/FilesListType.html

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL