github.com/vmware/go-vcloud-director/v2@v2.24.0/CHANGELOG.md (about) 1 ## 2.24.0 (April 18, 2024) 2 3 ### FEATURES 4 * Added method `Client.QueryVappNetworks` to retrieve all vApp networks ([#657](https://github.com/vmware/go-vcloud-director/pull/657)) 5 * Added `VApp` methods `QueryAllVappNetworks`, `QueryVappNetworks`, `QueryVappOrgNetworks` to retrieve various types of vApp networks ([#657](https://github.com/vmware/go-vcloud-director/pull/657)) 6 7 ### BUG FIXES 8 * Fixed an issue that prevented CSE Kubernetes clusters from being upgraded to an OVA with higher Kubernetes version but same TKG version, 9 and to an OVA with a higher patch version of Kubernetes ([#663](https://github.com/vmware/go-vcloud-director/pull/663)) 10 * Fixed an issue that prevented CSE Kubernetes clusters from being upgraded to TKG v2.5.0 with Kubernetes v1.26.11 as it 11 performed an invalid upgrade of CoreDNS ([#663](https://github.com/vmware/go-vcloud-director/pull/663)) 12 * Fixed an issue that prevented reading the SSH Public Key from provisioned CSE Kubernetes clusters ([#663](https://github.com/vmware/go-vcloud-director/pull/663)) 13 14 ## 2.23.0 (March 22, 2024) 15 16 ### FEATURES 17 * Added the type `CseKubernetesCluster` to manage Container Service Extension Kubernetes clusters for versions 4.1.0, 4.1.1, 18 4.2.0 and 4.2.1 ([#645](https://github.com/vmware/go-vcloud-director/pull/645), [#653](https://github.com/vmware/go-vcloud-director/pull/653), [#655](https://github.com/vmware/go-vcloud-director/pull/655)) 19 * Added methods `Org.CseCreateKubernetesCluster` and `Org.CseCreateKubernetesClusterAsync` to create Kubernetes clusters 20 in a VCD appliance with Container Service Extension installed ([#645](https://github.com/vmware/go-vcloud-director/pull/645), [#653](https://github.com/vmware/go-vcloud-director/pull/653), [#655](https://github.com/vmware/go-vcloud-director/pull/655)) 21 * Added methods `VCDClient.CseGetKubernetesClusterById` and `Org.CseGetKubernetesClustersByName` to retrieve a 22 Container Service Extension Kubernetes cluster ([#645](https://github.com/vmware/go-vcloud-director/pull/645), [#653](https://github.com/vmware/go-vcloud-director/pull/653), [#655](https://github.com/vmware/go-vcloud-director/pull/655)) 23 * Added the method `CseKubernetesCluster.GetKubeconfig` to retrieve the *kubeconfig* of a provisioned Container Service 24 Extension Kubernetes cluster ([#645](https://github.com/vmware/go-vcloud-director/pull/645), [#653](https://github.com/vmware/go-vcloud-director/pull/653), [#655](https://github.com/vmware/go-vcloud-director/pull/655)) 25 * Added the method `CseKubernetesCluster.Refresh` to refresh the information and properties of an existing Container 26 Service Extension Kubernetes cluster ([#645](https://github.com/vmware/go-vcloud-director/pull/645), [#653](https://github.com/vmware/go-vcloud-director/pull/653), [#655](https://github.com/vmware/go-vcloud-director/pull/655)) 27 * Added methods to update a Container Service Extension Kubernetes cluster: `CseKubernetesCluster.UpdateWorkerPools`, 28 `CseKubernetesCluster.AddWorkerPools`, `CseKubernetesCluster.UpdateControlPlane`, `CseKubernetesCluster.UpgradeCluster`, 29 `CseKubernetesCluster.SetNodeHealthCheck` and `CseKubernetesCluster.SetAutoRepairOnErrors` ([#645](https://github.com/vmware/go-vcloud-director/pull/645), [#653](https://github.com/vmware/go-vcloud-director/pull/653), [#655](https://github.com/vmware/go-vcloud-director/pull/655)) 30 * Added the method `CseKubernetesCluster.GetSupportedUpgrades` to retrieve all the valid TKGm OVAs that a given Container 31 Service Extension Kubernetes cluster can use to be upgraded ([#645](https://github.com/vmware/go-vcloud-director/pull/645), [#653](https://github.com/vmware/go-vcloud-director/pull/653), [#655](https://github.com/vmware/go-vcloud-director/pull/655)) 32 * Added the method `CseKubernetesCluster.Delete` to delete a cluster ([#645](https://github.com/vmware/go-vcloud-director/pull/645), [#653](https://github.com/vmware/go-vcloud-director/pull/653), [#655](https://github.com/vmware/go-vcloud-director/pull/655)) 33 * Added types `CseClusterSettings`, `CseControlPlaneSettings`, `CseWorkerPoolSettings` and `CseDefaultStorageClassSettings` 34 to configure the Container Service Extension Kubernetes clusters creation process ([#645](https://github.com/vmware/go-vcloud-director/pull/645), [#653](https://github.com/vmware/go-vcloud-director/pull/653), [#655](https://github.com/vmware/go-vcloud-director/pull/655)) 35 * Added types `CseClusterUpdateInput`, `CseControlPlaneUpdateInput` and `CseWorkerPoolUpdateInput` to configure the 36 Container Service Extension Kubernetes clusters update process ([#645](https://github.com/vmware/go-vcloud-director/pull/645), [#653](https://github.com/vmware/go-vcloud-director/pull/653), [#655](https://github.com/vmware/go-vcloud-director/pull/655)) 37 * Added method `client.QueryVmList` to search VMs across VDCs ([#646](https://github.com/vmware/go-vcloud-director/pull/646)) 38 39 ### IMPROVEMENTS 40 * Added missing field `vdcName` to `types.QueryResultVMRecordType` ([#646](https://github.com/vmware/go-vcloud-director/pull/646)) 41 * Added `VCDClient.GetAllIpSpaceFloatingIpSuggestions` and `types.IpSpaceFloatingIpSuggestion` to 42 retrieve IP Space IP suggestions ([#648](https://github.com/vmware/go-vcloud-director/pull/648)) 43 * Added support for VM disk consolidation using `vm.ConsolidateDisksAsync` and `vm.ConsolidateDisks` 44 ([#650](https://github.com/vmware/go-vcloud-director/pull/650)) 45 * Added public method `VApp.GetParentVDC` to retrieve parent VDC of vApp (previously it was private) 46 ([#652](https://github.com/vmware/go-vcloud-director/pull/652)) 47 * Added methods `Catalog.CaptureVappTemplate`, `Catalog.CaptureVappTemplateAsync` and type 48 `types.CaptureVAppParams` that add support for creating catalog template from existing vApp 49 ([#652](https://github.com/vmware/go-vcloud-director/pull/652)) 50 * Added method `Org.GetVAppByHref` to retrieve a vApp by given HREF ([#652](https://github.com/vmware/go-vcloud-director/pull/652)) 51 * Added methods `VAppTemplate.GetCatalogItemHref` and `VAppTemplate.GetCatalogItemId` that can return 52 related catalog item ID and HREF ([#652](https://github.com/vmware/go-vcloud-director/pull/652)) 53 54 ### NOTES 55 * Removed the conditional API call with outdated API version from `Client.GetStorageProfileByHref` so it works 56 with the newest VCD versions ([#639](https://github.com/vmware/go-vcloud-director/pull/639)) 57 * Added a delay for all LDAP tests `Test_LDAP` after LDAP configuration, but before using them 58 ([#643](https://github.com/vmware/go-vcloud-director/pull/643)) 59 60 * Added internal generic functions to handle CRUD operations for inner and outer entities ([#644](https://github.com/vmware/go-vcloud-director/pull/644)) 61 * Added section about OpenAPI CRUD functions to `CODING_GUIDELINES.md` [[#644](https://github.com/vmware/go-vcloud-director/pull/644)] 62 * Converted `DefinedEntityType`, `DefinedEntity`, `DefinedInterface`, `IpSpace`, `IpSpaceUplink`, 63 `DistributedFirewall`, `DistributedFirewallRule`, `NsxtSegmentProfileTemplate`, 64 `GetAllIpDiscoveryProfiles`, `GetAllMacDiscoveryProfiles`, `GetAllSpoofGuardProfiles`, 65 `GetAllQoSProfiles`, `GetAllSegmentSecurityProfiles` to use newly introduced generic CRUD 66 functions ([#644](https://github.com/vmware/go-vcloud-director/pull/644)) 67 68 ## 2.22.0 (December 12, 2023) 69 70 ### FEATURES 71 * Added support for VMware Cloud Director **10.5.1** 72 * Added metadata support to Runtime Defined Entities with methods `rde.GetMetadataByKey`, `rde.GetMetadataById` `rde.GetMetadata`, 73 `rde.AddMetadata` and generic metadata methods `openApiMetadataEntry.Update` and `openApiMetadataEntry.Delete` ([#557](https://github.com/vmware/go-vcloud-director/pull/557), [#632](https://github.com/vmware/go-vcloud-director/pull/632)) 74 * Added methods `SetReadOnlyAccessControl` and `IsSharedReadOnly` for `Catalog` and `AdminCatalog`, to handle read-only catalog sharing ([#559](https://github.com/vmware/go-vcloud-director/pull/559)) 75 * Added `Firmware` field to `VmSpecSection` type and `BootOptions` to `Vm` type ([#607](https://github.com/vmware/go-vcloud-director/pull/607)) 76 * Added `Vdc` methods `GetHardwareVersion`, `GetHighestHardwareVersion`, 77 `FindOsFromId` ([#607](https://github.com/vmware/go-vcloud-director/pull/607)) 78 * Added `VM` methods `UpdateBootOptions`, `UpdateBootOptionsAsync` ([#607](https://github.com/vmware/go-vcloud-director/pull/607)) 79 * API calls for `AddRawVM`, `CreateStandaloneVmAsync`, `VM.Refresh`, 80 `VM.UpdateVmSpecSectionAsync`, `addEmptyVmAsyncV10`, `getVMByHrefV10` 81 and `UpdateBootOptionsAsync` get elevated to API version `37.1` if available, for `VmSpecSection.Firmware` and `BootOptions` support ([#607](https://github.com/vmware/go-vcloud-director/pull/607)) 82 * Added `VCDClient` methods `CreateNetworkPool`, `CreateStandaloneVmAsync`, `CreateNetworkPoolGeneve`, `CreateNetworkPoolVlan`, `CreateNetworkPoolPortGroup` to create a network pool ([#613](https://github.com/vmware/go-vcloud-director/pull/613)) 83 * Added method `VCDClient.GetAllNsxtTransportZones` to retrieve all NSX-T transport zones ([#613](https://github.com/vmware/go-vcloud-director/pull/613)) 84 * Added method `VCDClient.GetAllVcenterDistributedSwitches` to retrieve all distributed switches ([#613](https://github.com/vmware/go-vcloud-director/pull/613)) 85 * Added method `VCDClient.QueryNsxtManagers` to retrieve all NSX-T managers ([#613](https://github.com/vmware/go-vcloud-director/pull/613)) 86 * Added `NetworkPool` methods `Update`, `Delete`, `GetOpenApiUrl` to manage a network pool ([#613](https://github.com/vmware/go-vcloud-director/pull/613)) 87 * Added `NsxtManager` type and function `VCDClient.GetNsxtManagerByName` ([#618](https://github.com/vmware/go-vcloud-director/pull/618)) 88 * Added support for Segment Profile Template management using new types `NsxtSegmentProfileTemplate` and `types.NsxtSegmentProfileTemplate` ([#618](https://github.com/vmware/go-vcloud-director/pull/618)) 89 * Added support for reading Segment Profiles provided by NSX-T via functions 90 `GetAllIpDiscoveryProfiles`, `GetIpDiscoveryProfileByName`, `GetAllMacDiscoveryProfiles`, 91 `GetMacDiscoveryProfileByName`, `GetAllSpoofGuardProfiles`, `GetSpoofGuardProfileByName`, 92 `GetAllQoSProfiles`, `GetQoSProfileByName`, `GetAllSegmentSecurityProfiles`, 93 `GetSegmentSecurityProfileByName` ([#618](https://github.com/vmware/go-vcloud-director/pull/618)) 94 * Added support for setting default Segment Profiles for NSX-T Org VDC Networks 95 `OpenApiOrgVdcNetwork.GetSegmentProfile()`, `OpenApiOrgVdcNetwork.UpdateSegmentProfile()` ([#618](https://github.com/vmware/go-vcloud-director/pull/618)) 96 * Added support for setting global default Segment Profiles 97 `VCDClient.GetGlobalDefaultSegmentProfileTemplates()`, 98 `VCDClient.UpdateGlobalDefaultSegmentProfileTemplates()` ([#618](https://github.com/vmware/go-vcloud-director/pull/618)) 99 * Added new `types` for NSX-T L2 VPN Tunnel session management `NsxtL2VpnTunnel`, `EdgeL2VpnStretchedNetwork`, `types.EdgeL2VpnTunnelStatistics`, `types.EdgeL2VpnTunnelStatus` ([#619](https://github.com/vmware/go-vcloud-director/pull/619)) 100 * Added new `NsxtEdgeGateway` methods `CreateL2VpnTunnel`, `GetAllL2VpnTunnels`, `GetL2VpnTunnelByName`, `GetL2VpnTunnelById` for creation and retrieval of NSX-T L2 VPN Tunnel sessions ([#619](https://github.com/vmware/go-vcloud-director/pull/619)) 101 * Added `NsxtL2VpnTunnel` methods `Refresh`, `Update`, `Statistics`, `Status`, `Delete` ([#619](https://github.com/vmware/go-vcloud-director/pull/619)) 102 * Added method `Catalog.UploadMediaFile` to upload any file as catalog Media ([#621](https://github.com/vmware/go-vcloud-director/pull/621),[#622](https://github.com/vmware/go-vcloud-director/pull/622)) 103 * Added method `Media.Download` to download a Media item as a byte stream ([#622](https://github.com/vmware/go-vcloud-director/pull/622)) 104 * Added `VAppTemplate` methods `GetLease` and `RenewLease` to retrieve and change storage lease ([#623](https://github.com/vmware/go-vcloud-director/pull/623)) 105 * Added `NsxtEdgeGateway` methods `GetDnsConfig` and `UpdateDnsConfig` ([#627](https://github.com/vmware/go-vcloud-director/pull/627)) 106 * Added types `types.NsxtEdgeGatewayDns`, `types.NsxtDnsForwarderZoneConfig` 107 for creation and management of DNS forwarder configuration ([#627](https://github.com/vmware/go-vcloud-director/pull/627)) 108 * Added `NsxtEdgeGatewayDns` methods `Refresh`, `Update` and `Delete` ([#627](https://github.com/vmware/go-vcloud-director/pull/627)) 109 * Add type `VgpuProfile` and its methods `GetAllVgpuProfiles`, `GetVgpuProfilesByProviderVdc`, `GetVgpuProfileById`, `GetVgpuProfileByName`, `GetVgpuProfileByTenantFacingName`, `Update` and `Refresh` for managing vGPU profiles ([#633](https://github.com/vmware/go-vcloud-director/pull/633)) 110 * Update `ComputePolicyV2` type with new fields for managing vGPU policies ([#633](https://github.com/vmware/go-vcloud-director/pull/633)) 111 112 ### IMPROVEMENTS 113 * Added catalog parent retrieval to `client.GetCatalogByHref` and `client.GetAdminCatalogByHref` to facilitate tenant context handling ([#559](https://github.com/vmware/go-vcloud-director/pull/559)) 114 * Add `VdcGroup.ForceDelete` function to optionally force VDC Group removal, which can be used for 115 removing VDC Group with child elements ([#597](https://github.com/vmware/go-vcloud-director/pull/597)) 116 * Bumped up minimal API version to 37.0 (drops support for VCD 10.3.x) ([#609](https://github.com/vmware/go-vcloud-director/pull/609)) 117 * Add struct `IopsResource` to `types.DiskSettings` (in replacement of dropped field `iops`) initially supported in API 37.0 ([#609](https://github.com/vmware/go-vcloud-director/pull/609)) 118 * Add field `SslEnabled` to struct `types.NsxtAlbPool` initially supported in API 37.0 ([#609](https://github.com/vmware/go-vcloud-director/pull/609)) 119 * New method `NsxtEdgeGateway.GetAllocatedIpCountByUplinkType` complementing existing 120 `NsxtEdgeGateway.GetAllocatedIpCount`. It will return allocated IP counts by uplink types (works 121 with VCD 10.4.1+) ([#610](https://github.com/vmware/go-vcloud-director/pull/610)) 122 * New method `NsxtEdgeGateway.GetPrimaryNetworkAllocatedIpCount` that will return total allocated IP 123 count for primary uplink (T0 or T0 VRF) ([#610](https://github.com/vmware/go-vcloud-director/pull/610)) 124 * New field `types.EdgeGatewayUplinks.BackingType` that defines backing type of NSX-T Edge Gateway 125 Uplink ([#610](https://github.com/vmware/go-vcloud-director/pull/610)) 126 * NSX-T Edge Gateway functions `GetNsxtEdgeGatewayById`, `GetNsxtEdgeGatewayByName`, 127 `GetNsxtEdgeGatewayByNameAndOwnerId`, `GetAllNsxtEdgeGateways`, `CreateNsxtEdgeGateway`, 128 `Refresh`, `Update` will additionally sort uplinks to ensure that element 0 contains primary 129 network (T0 or T0 VRF) ([#610](https://github.com/vmware/go-vcloud-director/pull/610)) 130 * Makes `DefinedEntityType` method `SetBehaviorAccessControls` more robust to avoid NullPointerException errors in VCD 131 when the input is a nil slice ([#615](https://github.com/vmware/go-vcloud-director/pull/615)) 132 * `types.IpSpace` support Firewall and NAT rule autocreation configuration using 133 `types.DefaultGatewayServiceConfig` on VCD 10.5.0+ ([#628](https://github.com/vmware/go-vcloud-director/pull/628)) 134 * Added metadata ignore support for Runtime Defined Entity metadata methods `rde.GetMetadataByKey`, `rde.GetMetadata`, `rde.AddMetadata`, 135 `rde.UpdateMetadata` and `rde.DeleteMetadata` ([#632](https://github.com/vmware/go-vcloud-director/pull/632)) 136 137 ### BUG FIXES 138 * Added handling of catalog creation task, which was leaving the catalog not ready for action in some cases ([#590](https://github.com/vmware/go-vcloud-director/pull/590), [#602](https://github.com/vmware/go-vcloud-director/pull/602)) 139 * Fix nil pointer dereference bug while fetching a NSX-V Backed Edge Gateway ([#594](https://github.com/vmware/go-vcloud-director/pull/594)) 140 * Fix vApp network related tests ([#595](https://github.com/vmware/go-vcloud-director/pull/595)) 141 * Fixed [Issue #1098](https://github.com/vmware/terraform-provider-vcd/issues/1098) crash in VDC creation ([#598](https://github.com/vmware/go-vcloud-director/pull/598)) 142 * Addressed Issue [1134](https://github.com/vmware/terraform-provider-vcd/issues/1134): Can't use SYSTEM `ldap_mode` ([#625](https://github.com/vmware/go-vcloud-director/pull/625)) 143 144 ### DEPRECATIONS 145 * Deprecated `UpdateInternalDisksAsync` in favor of `UpdateVmSpecSectionAsync` ([#607](https://github.com/vmware/go-vcloud-director/pull/607)) 146 147 ### NOTES 148 * Improved the testing configuration to allow customizing the UI Plugin path ([#599](https://github.com/vmware/go-vcloud-director/pull/599)) 149 * Added a configurable timeout to the testing options available in the Makefile ([#600](https://github.com/vmware/go-vcloud-director/pull/600)) 150 * Improved test `Test_NsxtApplicationPortProfileTenant` ([#601](https://github.com/vmware/go-vcloud-director/pull/601)) 151 * Added explicit removal for many resources in tests ([#605](https://github.com/vmware/go-vcloud-director/pull/605)) 152 * Improved test `Test_InsertOrEjectMedia` ([#608](https://github.com/vmware/go-vcloud-director/pull/608)) 153 * Addressed `gosec` 2.17.0 errors ([#608](https://github.com/vmware/go-vcloud-director/pull/608)) 154 155 * Changed `Test_AddNewVMFromMultiVmTemplate` to use preloaded vApp template ([#609](https://github.com/vmware/go-vcloud-director/pull/609)) 156 * Amended `testMetadataIgnore`, used by all metadata tests, to be compatible with VCD 10.5.1 ([#629](https://github.com/vmware/go-vcloud-director/pull/629)) 157 158 ### REMOVALS 159 * Removed field `iops` from `types.DiskSettings` (dropped in API version 37.0) ([#609](https://github.com/vmware/go-vcloud-director/pull/609)) 160 161 162 ## 2.21.0 (July 20, 2023) 163 164 ### FEATURES 165 * Added NSX-T Edge Gateway DHCP forwarding configuration support `NsxtEdgeGateway.GetDhcpForwarder` and 166 `NsxtEdgeGateway.UpdateDhcpForwarder` ([#573](https://github.com/vmware/go-vcloud-director/pull/573)) 167 * Added methods to create, get, publish and delete UI Plugins `VCDClient.AddUIPlugin`, `VCDClient.GetAllUIPlugins`, 168 `VCDClient.GetUIPluginById`, `VCDClient.GetUIPlugin`, `UIPlugin.Update`, `UIPlugin.GetPublishedTenants`, 169 `UIPlugin.PublishAll`, `UIPlugin.UnpublishAll`, `UIPlugin.Publish`, `UIPlugin.Unpublish`, `UIPlugin.IsTheSameAs` and `UIPlugin.Delete` ([#575](https://github.com/vmware/go-vcloud-director/pull/575)) 170 * Added AdminOrg methods `GetFederationSettings`, `SetFederationSettings`, `UnsetFederationSettings` to handle organization SAML settings ([#576](https://github.com/vmware/go-vcloud-director/pull/576)) 171 * Added AdminOrg methods `GetServiceProviderSamlMetadata` and `RetrieveServiceProviderSamlMetadata` to retrieve service provider metadata for current organization ([#576](https://github.com/vmware/go-vcloud-director/pull/576)) 172 * Added method `Client.RetrieveRemoteDocument` to download a document from a URL ([#576](https://github.com/vmware/go-vcloud-director/pull/576)) 173 * Added function `ValidateSamlServiceProviderMetadata` to validate service oprovider metadata ([#576](https://github.com/vmware/go-vcloud-director/pull/576)) 174 * Added function `GetErrorMessageFromErrorSlice` to return a single string from a slice of errors ([#576](https://github.com/vmware/go-vcloud-director/pull/576)) 175 * Added Service Account CRUD support via `ServiceAccount` and `types.ServiceAccount`: `VCDClient.CreateServiceAccount`, 176 `Org.GetServiceAccountById`, `Org.GetAllServiceAccounts`, `Org.GetServiceAccountByName`, 177 `ServiceAccount.Update`, `ServiceAccount.Authorize`, `ServiceAccount.Grant`, `ServiceAccount.Refresh`, 178 `ServiceAccount.Revoke`, `ServiceAccount.Delete`, `ServiceAccount.GetInitialApiToken` ([#577](https://github.com/vmware/go-vcloud-director/pull/577)) 179 * Added API Token CRUD support via `Token` and `types.Token`: `VCDClient.CreateToken`,`VCDClient.GetTokenById`, 180 `VCDClient.GetAllTokens`,`VCDClient.GetTokenByNameAndUsername`, `VCDClient.RegisterToken` , `Token.GetInitialApiToken`, `Token.Delete`, `Client.GetApiToken` ([#577](https://github.com/vmware/go-vcloud-director/pull/577)) 181 * Added IP Space CRUD support via `IpSpace` and `types.IpSpace` and `VCDClient.CreateIpSpace`, 182 `VCDClient.GetAllIpSpaceSummaries`, `VCDClient.GetIpSpaceById`, `VCDClient.GetIpSpaceByName`, 183 `VCDClient.GetIpSpaceByNameAndOrgId`, `IpSpace.Update`, `IpSpace.Delete` ([#578](https://github.com/vmware/go-vcloud-director/pull/578)) 184 * Added IP Space Uplink CRUD support via `IpSpaceUplink` and `types.IpSpaceUplink` and 185 `VCDClient.CreateIpSpaceUplink`, `VCDClient.GetAllIpSpaceUplinks`, 186 `VCDClient.GetIpSpaceUplinkById`, `VCDClient.GetIpSpaceUplinkByName`, `IpSpaceUplink.Update`, 187 `IpSpaceUplink.Delete` ([#579](https://github.com/vmware/go-vcloud-director/pull/579)) 188 * Added IP Space Allocation CRUD support via `IpSpaceIpAllocation`, `types.IpSpaceIpAllocation`, 189 `types.IpSpaceIpAllocationRequest`, `types.IpSpaceIpAllocationRequestResult`. Methods 190 `IpSpace.AllocateIp`, `Org.IpSpaceAllocateIp`, `Org.GetIpSpaceAllocationByTypeAndValue`, 191 `IpSpace.GetAllIpSpaceAllocations`, `Org.GetIpSpaceAllocationById`, `IpSpaceIpAllocation.Update`, 192 `IpSpaceIpAllocation.Delete` ([#579](https://github.com/vmware/go-vcloud-director/pull/579)) 193 * Added IP Space Org assignment to support Custom Quotas via `IpSpaceOrgAssignment`, 194 `types.IpSpaceOrgAssignment`, `IpSpace.GetAllOrgAssignments`, `IpSpace.GetOrgAssignmentById`, 195 `IpSpace.GetOrgAssignmentByOrgName`, `IpSpace.GetOrgAssignmentByOrgId`, 196 `IpSpaceOrgAssignment.Update` ([#579](https://github.com/vmware/go-vcloud-director/pull/579)) 197 * Added method `VCDClient.QueryNsxtManagerByHref` to retrieve a NSX-T manager by its ID/HREF ([#580](https://github.com/vmware/go-vcloud-director/pull/580)) 198 * Added method `VCDClient.CreateProviderVdc` to create a Provider VDC ([#580](https://github.com/vmware/go-vcloud-director/pull/580)) 199 * Added method `VCDClient.ResourcePoolsFromIds` to convert list of IDs to resource pools ([#580](https://github.com/vmware/go-vcloud-director/pull/580)) 200 * Added `ProviderVdcExtended` methods `AddResourcePools`, `AddStorageProfiles`, `Delete`, `DeleteResourcePools`,`DeleteStorageProfiles`,`Disable`,`Enable`,`GetResourcePools`,`IsEnabled`,`Rename`,`Update` to fully manage a provider VDC ([#580](https://github.com/vmware/go-vcloud-director/pull/580)) 201 * Added method `NetworkPool.GetOpenApiUrl` to generate the full URL of a network pool ([#580](https://github.com/vmware/go-vcloud-director/pull/580)) 202 * Added `ResourcePool` methods `GetAvailableHardwareVersions` and `GetDefaultHardwareVersion` to get hardware versions ([#580](https://github.com/vmware/go-vcloud-director/pull/580)) 203 * Added `VCDClient` method `GetAllResourcePools` to retrieve all resource pools regardless of vCenter affiliation ([#580](https://github.com/vmware/go-vcloud-director/pull/580)) 204 * Added `VCDClient` method `GetAllVcenters` to retrieve all vCenters ([#580](https://github.com/vmware/go-vcloud-director/pull/580)) 205 * Added `VCDClient` methods `GetNetworkPoolById`,`GetNetworkPoolByName`,`GetNetworkPoolSummaries` to retrieve network pools ([#580](https://github.com/vmware/go-vcloud-director/pull/580)) 206 * Added `VCDClient` methods `GetVcenterById`,`GetVcenterByName` to retrieve vCenters ([#580](https://github.com/vmware/go-vcloud-director/pull/580)) 207 * Added `VCenter` methods `GetAllResourcePools`,`VCenter.GetResourcePoolById`,`VCenter.GetResourcePoolByName` to retrieve resource pools ([#580](https://github.com/vmware/go-vcloud-director/pull/580)) 208 * Added `VCenter` methods `GetAllStorageProfiles`,`GetStorageProfileById`,`GetStorageProfileByName` to retrieve storage profiles ([#580](https://github.com/vmware/go-vcloud-director/pull/580)) 209 * Added method `VCenter.GetVimServerUrl` to retrieve the full URL of a vCenter within a VCD ([#580](https://github.com/vmware/go-vcloud-director/pull/580)) 210 * Added NSX-T Edge Gateway SLAAC Profile (DHCPv6) configuration support 211 `NsxtEdgeGateway.GetSlaacProfile` and `NsxtEdgeGateway.UpdateSlaacProfile` ([#582](https://github.com/vmware/go-vcloud-director/pull/582)) 212 * Added RDE Defined Interface Behaviors support with methods `DefinedInterface.AddBehavior`, `DefinedInterface.GetAllBehaviors`, 213 `DefinedInterface.GetBehaviorById` `DefinedInterface.GetBehaviorByName`, `DefinedInterface.UpdateBehavior` and 214 `DefinedInterface.DeleteBehavior` ([#584](https://github.com/vmware/go-vcloud-director/pull/584)) 215 * Added RDE Defined Entity Type Behaviors support with methods `DefinedEntityType.GetAllBehaviors`, 216 `DefinedEntityType.GetBehaviorById` `DefinedEntityType.GetBehaviorByName`, `DefinedEntityType.UpdateBehaviorOverride` and 217 `DefinedEntityType.DeleteBehaviorOverride` ([#584](https://github.com/vmware/go-vcloud-director/pull/584)) 218 * Added RDE Defined Entity Type Behavior Access Controls support with methods `DefinedEntityType.GetAllBehaviorsAccessControls` and 219 `DefinedEntityType.SetBehaviorAccessControls` ([#584](https://github.com/vmware/go-vcloud-director/pull/584)) 220 * Added method to invoke Behaviors on Defined Entities `DefinedEntity.InvokeBehavior` and `DefinedEntity.InvokeBehaviorAndMarshal` ([#584](https://github.com/vmware/go-vcloud-director/pull/584)) 221 * Added support for NSX-T Edge Gateway Static Route configuration via types 222 `NsxtEdgeGatewayStaticRoute`, `types.NsxtEdgeGatewayStaticRoute` and methods 223 `NsxtEdgeGateway.CreateStaticRoute`, `NsxtEdgeGateway.GetAllStaticRoutes`, 224 `NsxtEdgeGateway.GetStaticRouteByNetworkCidr`, `NsxtEdgeGateway.GetStaticRouteByName`, 225 `NsxtEdgeGateway.GetStaticRouteById`, `NsxtEdgeGatewayStaticRoute.Update`, 226 `NsxtEdgeGatewayStaticRoute.Delete` ([#586](https://github.com/vmware/go-vcloud-director/pull/586)) 227 * Added types and methods `DistributedFirewallRule`, `VdcGroup.CreateDistributedFirewallRule`, 228 `DistributedFirewallRule.Update`, `.DistributedFirewallRuleDelete` to manage NSX-T Distributed 229 Firewall Rules one by one (opposed to managing all at once using `DistributedFirewall`) ([#587](https://github.com/vmware/go-vcloud-director/pull/587)) 230 * Added method `Vdc.CreateVappFromTemplate` to create a vApp from a vApp template containing one or more VMs ([#588](https://github.com/vmware/go-vcloud-director/pull/588)) 231 * Added method `Vdc.CloneVapp` to create a vApp from another vApp ([#588](https://github.com/vmware/go-vcloud-director/pull/588)) 232 * Added method `VApp.DiscardSuspendedState` to take a vApp out of suspended state ([#588](https://github.com/vmware/go-vcloud-director/pull/588)) 233 234 ### IMPROVEMENTS 235 * `ExternalNetworkV2` now supports IP Spaces on VCD 10.4.1+ with new fields `UsingIpSpace` and 236 `DedicatedOrg` ([#579](https://github.com/vmware/go-vcloud-director/pull/579)) 237 * Added a new function `WithIgnoredMetadata` to configure the `Client` to ignore specific metadata entries 238 in all non-deprecated metadata CRUD methods ([#581](https://github.com/vmware/go-vcloud-director/pull/581)) 239 * NSX-T ALB Virtual Service supports IPv6 Virtual Service using field`IPv6VirtualIpAddress` in 240 `types.NsxtAlbVirtualService` for VCD 10.4.0+ ([#582](https://github.com/vmware/go-vcloud-director/pull/582)) 241 * Added field `EnableDualSubnetNetwork` to enable Dual-Stack mode for Org VDC networks in 242 `types.OpenApiOrgVdcNetwork` ([#582](https://github.com/vmware/go-vcloud-director/pull/582)) 243 244 ### BUG FIXES 245 * Fixed [Issue #1066](https://github.com/vmware/terraform-provider-vcd/issues/1066) - Not possible to handle more than 128 storage profiles ([#580](https://github.com/vmware/go-vcloud-director/pull/580)) 246 * Fixed a bug that caused `Client.GetCertificateFromLibraryByName` and `AdminOrg.GetCertificateFromLibraryByName` to fail 247 retrieving certificates with `:` character in the name ([#589](https://github.com/vmware/go-vcloud-director/pull/589)) 248 249 ### DEPRECATIONS 250 * Deprecated method `Vdc.InstantiateVAppTemplate` (wrong implementation and result) in favor of `Vdc.CreateVappFromTemplate` ([#588](https://github.com/vmware/go-vcloud-director/pull/588)) 251 252 ### NOTES 253 * Internal - replaced 'takeStringPointer', 'takeIntAddress', 'takeBoolPointer' with generic 'addrOf' 254 ([#571](https://github.com/vmware/go-vcloud-director/pull/571)) 255 * Changed Org enablement status during tests for VCD 10.4.2, to circumvent a VCD bug that prevents creation of disabled Orgs ([#572](https://github.com/vmware/go-vcloud-director/pull/572)) 256 * Skipped test `Test_VdcDuplicatedVmPlacementPolicyGetsACleanError` in 10.4.2 as the relevant bug we check for is fixed in that version ([#574](https://github.com/vmware/go-vcloud-director/pull/574)) 257 * Added `unit` step to GitHub Actions ([#583](https://github.com/vmware/go-vcloud-director/pull/583)) 258 259 ## 2.20.0 (April 27, 2023) 260 261 ### FEATURES 262 * Added method `AdminVdc.IsNsxv` to detect whether an Admin VDC is NSX-V ([#521](https://github.com/vmware/go-vcloud-director/pull/521)) 263 * Added function `NewNsxvDistributedFirewall` to create a new NSX-V distributed firewall ([#521](https://github.com/vmware/go-vcloud-director/pull/521)) 264 * Added `NsxvDistributedFirewall` methods `GetConfiguration`, `IsEnabled`, `Enable`, `Disable`, `UpdateConfiguration`, `Refresh` to handle CRUD operations with NSX-V distributed firewalls ([#521](https://github.com/vmware/go-vcloud-director/pull/521)) 265 * Added `NsxvDistributedFirewall` methods `GetServices`, `GetServiceGroups`, `GetServiceById`, `GetServiceByName`, `GetServiceGroupById`, `GetServiceGroupByName` to retrieve specific services or service groups ([#521](https://github.com/vmware/go-vcloud-director/pull/521)) 266 * Added `NsxvDistributedFirewall` methods `GetServicesByRegex` and `GetServiceGroupsByRegex` to search services or service groups by regular expression ([#521](https://github.com/vmware/go-vcloud-director/pull/521)) 267 * Added support for Runtime Defined Entity Interfaces with client methods `VCDClient.CreateDefinedInterface`, `VCDClient.GetAllDefinedInterfaces`, 268 `VCDClient.GetDefinedInterface`, `VCDClient.GetDefinedInterfaceById` and methods to manipulate them `DefinedInterface.Update`, 269 `DefinedInterface.Delete` ([#527](https://github.com/vmware/go-vcloud-director/pull/527), [#566](https://github.com/vmware/go-vcloud-director/pull/566)) 270 * Added method `VM.GetEnvironment` to retrieve OVF Environment ([#528](https://github.com/vmware/go-vcloud-director/pull/528)) 271 * Added `NsxtEdgeGateway.Refresh` method to reload NSX-T Edge Gateway structure ([#532](https://github.com/vmware/go-vcloud-director/pull/532)) 272 * Added `NsxtEdgeGateway.GetUsedIpAddresses` method to fetch used IP addresses in NSX-T Edge 273 Gateway ([#532](https://github.com/vmware/go-vcloud-director/pull/532)) 274 * Added `NsxtEdgeGateway.GetUsedIpAddressSlice` method to fetch used IP addresses in a slice 275 ([#532](https://github.com/vmware/go-vcloud-director/pull/532)) 276 * Added `NsxtEdgeGateway.GetUnusedExternalIPAddresses` method that can help to find an unused 277 IP address in an Edge Gateway by given constraints ([#532](https://github.com/vmware/go-vcloud-director/pull/532),[#567](https://github.com/vmware/go-vcloud-director/pull/567)) 278 * Added `NsxtEdgeGateway.GetAllUnusedExternalIPAddresses` method that can return all unused IP 279 addresses in an Edge Gateway ([#532](https://github.com/vmware/go-vcloud-director/pull/532),[#567](https://github.com/vmware/go-vcloud-director/pull/567)) 280 * Added `NsxtEdgeGateway.GetAllocatedIpCount` method that sums up `TotalIPCount` fields in all 281 subnets ([#532](https://github.com/vmware/go-vcloud-director/pull/532)) 282 * Added `NsxtEdgeGateway.QuickDeallocateIpCount` and `NsxtEdgeGateway.DeallocateIpCount` 283 methods to manually alter Edge Gateway body for IP deallocation ([#532](https://github.com/vmware/go-vcloud-director/pull/532)) 284 * Added support for Runtime Defined Entity instances with methods `DefinedEntityType.GetAllRdes`, `DefinedEntityType.GetRdeByName`, 285 `DefinedEntityType.GetRdeById`, `DefinedEntityType.CreateRde` and methods to manipulate them `DefinedEntity.Resolve`, 286 `DefinedEntity.Update`, `DefinedEntity.Delete` ([#544](https://github.com/vmware/go-vcloud-director/pull/544)) 287 * Added generic `Client` methods `OpenApiPostItemAndGetHeaders` and `OpenApiGetItemAndHeaders` to be able to retrieve the 288 response headers when performing a POST or GET operation to an OpenAPI endpoint ([#544](https://github.com/vmware/go-vcloud-director/pull/544)) 289 * Added support for Runtime Defined Entity Types with client methods `VCDClient.CreateRdeType`, `VCDClient.GetAllRdeTypes`, 290 `VCDClient.GetRdeType`, `VCDClient.GetRdeTypeById` and methods to manipulate them `DefinedEntityType.Update`, 291 `DefinedEntityType.Delete` ([#545](https://github.com/vmware/go-vcloud-director/pull/545), [#566](https://github.com/vmware/go-vcloud-director/pull/566)) 292 * Added support for NSX-T DHCP Bindings via `OpenApiOrgVdcNetworkDhcpBinding`, 293 `types.OpenApiOrgVdcNetworkDhcpBinding` and functions 294 `OpenApiOrgVdcNetwork.CreateOpenApiOrgVdcNetworkDhcpBinding`, 295 `OpenApiOrgVdcNetwork.GetAllOpenApiOrgVdcNetworkDhcpBindings`, 296 `OpenApiOrgVdcNetwork.GetOpenApiOrgVdcNetworkDhcpBindingById`, 297 `OpenApiOrgVdcNetwork.GetOpenApiOrgVdcNetworkDhcpBindingByName`, 298 `OpenApiOrgVdcNetworkDhcpBinding.Update`, `OpenApiOrgVdcNetworkDhcpBinding.Refresh`, 299 `OpenApiOrgVdcNetworkDhcpBinding.Delete` ([#561](https://github.com/vmware/go-vcloud-director/pull/561)) 300 * Added QoS Profile lookup functions `GetAllNsxtEdgeGatewayQosProfiles` and 301 `GetNsxtEdgeGatewayQosProfileByDisplayName` ([#563](https://github.com/vmware/go-vcloud-director/pull/563)) 302 * Added NSX-T Edge Gateway QoS (Rate Limiting) configuration support `NsxtEdgeGateway.GetQoS` and 303 `NsxtEdgeGateway.UpdateQoS` ([#563](https://github.com/vmware/go-vcloud-director/pull/563)) 304 * Added support for importable Distributed Virtual Port Group (DVPG) read via types 305 `VcenterImportableDvpg` and `types.VcenterImportableDvpg` and methods 306 `VCDClient.GetVcenterImportableDvpgByName`, `VCDClient.GetAllVcenterImportableDvpgs`, 307 `Vdc.GetVcenterImportableDvpgByName`, `Vdc.GetAllVcenterImportableDvpgs` ([#564](https://github.com/vmware/go-vcloud-director/pull/564)) 308 309 ### IMPROVEMENTS 310 * NSX-T ALB settings for Edge Gateway gained support for IPv6 service network definition (VCD 10.4.0+) 311 and Transparent mode (VCD 10.4.1+) by adding new fields to `types.NsxtAlbConfig` and automatically 312 elevating API up to 37.1 ([#549](https://github.com/vmware/go-vcloud-director/pull/549)) 313 * Added support for using subnet prefix length while creating vApp networks ([#550](https://github.com/vmware/go-vcloud-director/pull/550)) 314 * Improve NSX-T IPSec VPN type `types.NsxtIpSecVpnTunnel` to support 'Certificate' Authentication 315 mode ([#553](https://github.com/vmware/go-vcloud-director/pull/553)) 316 * Added new field `TransparentModeEnabled` to `types.NsxtAlbVirtualService` which allows to preserve 317 client IP for NSX-T ALB Virtual Service (VCD 10.4.1+) ([#560](https://github.com/vmware/go-vcloud-director/pull/560)) 318 * Added new field `MemberGroupRef` to `types.NsxtAlbPool` which allows to define NSX-T ALB Pool 319 membership by using Edge Firewall Group (`NsxtFirewallGroup`) instead of plain IPs (VCD 10.4.1+) 320 ([#560](https://github.com/vmware/go-vcloud-director/pull/560)) 321 * `types.OpenApiOrgVdcNetwork` got a new read only field `OrgVdcIsNsxTBacked` (available since API 322 36.0) which indicates if an Org Network is backed by NSX-T and a function 323 `OpenApiOrgVdcNetwork.IsNsxt()` ([#561](https://github.com/vmware/go-vcloud-director/pull/561)) 324 * Added `SetServiceAccountApiToken` method of `VCDClient` that allows 325 authenticating using a service account token file and handles the refresh token rotation ([#562](https://github.com/vmware/go-vcloud-director/pull/562)) 326 327 ### BUG FIXES 328 * Fixed a bug that prevented returning a specific error while authenticating client with invalid 329 password ([#536](https://github.com/vmware/go-vcloud-director/pull/536)) 330 * Fixed accessing uninitialized `Features` field while updating a vApp network ([#550](https://github.com/vmware/go-vcloud-director/pull/550)) 331 332 ### NOTES 333 * Created `Test_RenameCatalog` for making sure the contents of the Catalog don't change after rename ([#546](https://github.com/vmware/go-vcloud-director/pull/546)) 334 335 ## 2.19.0 (January 12, 2023) 336 337 ### FEATURES 338 * Added client methods `GetCatalogByHref`, `GetCatalogById`, `GetCatalogByName` to retrieve Catalogs without an Org object ([#537](https://github.com/vmware/go-vcloud-director/pull/537)) 339 * Added client methods `GetAdminCatalogByHref`, `GetAdminCatalogById`, `GetAdminCatalogByName` to retrieve AdminCatalogs without an AdminOrg object ([#537](https://github.com/vmware/go-vcloud-director/pull/537)) 340 * Added method `VAppTemplate.GetVappTemplateRecord` to retrieve a VAppTemplate query record ([#537](https://github.com/vmware/go-vcloud-director/pull/537)) 341 342 ### BUG FIXES 343 * Removed URL checks from `CreateCatalogFromSubscriptionAsync` to allow catalog creation from non-VCD entities, such as vSphere shared library ([#537](https://github.com/vmware/go-vcloud-director/pull/537)) 344 * Fixed flaky test `Test_CatalogAccessAsOrgUsers` that failed randomly for timing issues ([#540](https://github.com/vmware/go-vcloud-director/pull/540)) 345 346 ### NOTES 347 * Amended a quirky test `Test_CreateOrgVdcWithFlex` that failed randomly due to recovered VDC Storage Profiles being unordered ([#538](https://github.com/vmware/go-vcloud-director/pull/538)) 348 * Amended a quirky test `Test_VMPowerOnPowerOff` that failed due to the testing VM not being powered off fast enough ([#538](https://github.com/vmware/go-vcloud-director/pull/538)) 349 350 ## 2.18.0 (December 14, 2022) 351 352 ### FEATURES 353 * Added `VCDClient.GetAllAssignedVdcComputePoliciesV2` to retrieve Compute Policies without the need of an `AdminVdc` receiver ([#530](https://github.com/vmware/go-vcloud-director/pull/530)) 354 * Added `client` methods `QueryCatalogRecords` and `GetCatalogByHref` ([#531](https://github.com/vmware/go-vcloud-director/pull/531)) 355 356 ### BUG FIXES 357 * Fixed issue that caused VM Group retrieval to fail if the Provider VDC had more than one Resource Pool ([#530](https://github.com/vmware/go-vcloud-director/pull/530)) 358 * Fixed issue that prevented Org update because of wrong field position in LDAP settings ([#533](https://github.com/vmware/go-vcloud-director/pull/533)) 359 360 ## 2.17.0 (November 25, 2022) 361 362 ### FEATURES 363 * Added new functions to get vApp Templates `Catalog.GetVAppTemplateByName`, `Catalog.GetVAppTemplateById`, `Catalog.GetVAppTemplateByNameOrId`, 364 `Vdc.GetVAppTemplateByName`, `VCDClient.GetVAppTemplateByHref` and `VCDClient.GetVAppTemplateById` ([#495](https://github.com/vmware/go-vcloud-director/pull/495), [#520](https://github.com/vmware/go-vcloud-director/pull/520)) 365 * Added new functions to query vApp Templates by name `Catalog.QueryVappTemplateWithName`, `Vdc.QueryVappTemplateWithName`, `AdminVdc.QueryVappTemplateWithName` ([#495](https://github.com/vmware/go-vcloud-director/pull/495)) 366 * Added new functions to delete vApp Templates `VAppTemplate.DeleteAsync` and `VAppTemplate.Delete` ([#495](https://github.com/vmware/go-vcloud-director/pull/495)) 367 * Added new functions to extract information from vApp Templates `VAppTemplate.GetCatalogName` and `VAppTemplate.GetVdcName` ([#495](https://github.com/vmware/go-vcloud-director/pull/495)) 368 * Added `Client.TestConnection` method to check remote VCD endpoints ([#447](https://github.com/vmware/go-vcloud-director/pull/447), [#501](https://github.com/vmware/go-vcloud-director/pull/501)) 369 * Added `Client.TestConnectionWithDefaults` method that uses `Client.TestConnection` with some default 370 values ([#447](https://github.com/vmware/go-vcloud-director/pull/447), [#501](https://github.com/vmware/go-vcloud-director/pull/501)) 371 * Changed behavior of `Client.OpenApiPostItem` and `Client.OpenApiPostItemSync` so they accept 372 response code 200 OK as valid. The reason is `TestConnection` endpoint requires a POST request and 373 returns a 200OK when successful ([#447](https://github.com/vmware/go-vcloud-director/pull/447), [#501](https://github.com/vmware/go-vcloud-director/pull/501)) 374 * Added new methods `VCDClient.GetProviderVdcByHref`, `VCDClient.GetProviderVdcById`, `VCDClient.GetProviderVdcByName` and `ProviderVdc.Refresh` to retrieve Provider VDCs ([#502](https://github.com/vmware/go-vcloud-director/pull/502)) 375 * Added new methods `VCDClient.GetProviderVdcExtendedByHref`, `VCDClient.GetProviderVdcExtendedById`, `VCDClient.GetProviderVdcExtendedByName` and `ProviderVdcExtended.Refresh` to retrieve the extended flavor of Provider VDCs ([#502](https://github.com/vmware/go-vcloud-director/pull/502)) 376 * Added new methods `ProviderVdcExtended.ToProviderVdc`, to convert from an extended Provider VDC to a regular one ([#502](https://github.com/vmware/go-vcloud-director/pull/502)) 377 * Added new methods `ProviderVdc.GetMetadata`, `ProviderVdc.AddMetadataEntry`, `ProviderVdc.AddMetadataEntryAsync`, `ProviderVdc.MergeMetadataAsync`, `ProviderVdc.MergeMetadata`, `ProviderVdc.DeleteMetadataEntry` and `ProviderVdc.DeleteMetadataEntryAsync` to manage Provider VDCs metadata ([#502](https://github.com/vmware/go-vcloud-director/pull/502)) 378 * Added new methods `VCDClient.GetVmGroupById`, `VCDClient.GetVmGroupByNamedVmGroupIdAndProviderVdcUrn` and `VCDClient.GetVmGroupByNameAndProviderVdcUrn` to retrieve VM Groups. These are useful to create VM Placement Policies ([#504](https://github.com/vmware/go-vcloud-director/pull/504)) 379 * Added new methods `VCDClient.GetLogicalVmGroupById`, `VCDClient.CreateLogicalVmGroup` and `LogicalVmGroup.Delete` to manage Logical VM Groups. These are useful to create VM Placement Policies ([#504](https://github.com/vmware/go-vcloud-director/pull/504)) 380 * Added the function `VCDClient.GetMetadataByKeyAndHref` to get a specific metadata value using an entity reference ([#510](https://github.com/vmware/go-vcloud-director/pull/510)) 381 * Added the functions `VCDClient.AddMetadataEntryWithVisibilityByHrefAsync` 382 and `VCDClient.AddMetadataEntryWithVisibilityByHref` to add metadata with both visibility and domain 383 to any entity by using its reference ([#510](https://github.com/vmware/go-vcloud-director/pull/510)) 384 * Added the functions `VCDClient.MergeMetadataWithVisibilityByHrefAsync` 385 and `VCDClient.MergeMetadataWithVisibilityByHref` to merge metadata data supporting also visibility and domain ([#510](https://github.com/vmware/go-vcloud-director/pull/510)) 386 * Added the functions `VCDClient.DeleteMetadataEntryWithDomainByHrefAsync` 387 and `VCDClient.DeleteMetadataEntryWithDomainByHref` to delete metadata from an entity using its reference ([#510](https://github.com/vmware/go-vcloud-director/pull/510)) 388 * Added the function `GetMetadataByKey` to the following entities: 389 `VM`, `Vdc`, `AdminVdc`, `ProviderVdc`, `VApp`, `VAppTemplate`, `MediaRecord`, `Media`, `Catalog`, `AdminCatalog`, 390 `Org`, `AdminOrg`, `Disk`, `OrgVDCNetwork`, `CatalogItem`, `OpenApiOrgVdcNetwork` to get a specific metadata value ([#510](https://github.com/vmware/go-vcloud-director/pull/510)) 391 * Added the functions `AddMetadataEntryWithVisibilityAsync` and `AddMetadataEntryWithVisibility` to the following entities: 392 `VM`, `AdminVdc`, `ProviderVdc`, `VApp`, `VAppTemplate`, `MediaRecord`, `Media`, `AdminCatalog`, `AdminOrg`, `Disk`, 393 `OrgVDCNetwork`, `CatalogItem`, `OpenApiOrgVdcNetwork` to add metadata with both visibility and domain to them ([#510](https://github.com/vmware/go-vcloud-director/pull/510)) 394 * Added the functions `MergeMetadataWithMetadataValuesAsync` and `MergeMetadataWithMetadataValues` to the following entities: 395 `VM`, `AdminVdc`, `ProviderVdc`, `VApp`, `VAppTemplate`, `MediaRecord`, `Media`, `AdminCatalog`, `AdminOrg`, `Disk`, 396 `OrgVDCNetwork`, `CatalogItem`, `OpenApiOrgVdcNetwork` to merge metadata data supporting also visibility and domain ([#510](https://github.com/vmware/go-vcloud-director/pull/510)) 397 * Added the functions `DeleteMetadataEntryWithDomainAsync` and `DeleteMetadataEntryWithDomain` to the following entities: 398 `VM`, `AdminVdc`, `ProviderVdc`, `VApp`, `VAppTemplate`, `MediaRecord`, `Media`, `AdminCatalog`, `AdminOrg`, `Disk`, 399 `OrgVDCNetwork`, `CatalogItem`, `OpenApiOrgVdcNetwork` to delete metadata with the domain, that allows deleting metadata present in SYSTEM ([#510](https://github.com/vmware/go-vcloud-director/pull/510)) 400 * Added `AdminOrg` methods `CreateCatalogFromSubscriptionAsync` and `CreateCatalogFromSubscription` to create a 401 subscribed catalog ([#511](https://github.com/vmware/go-vcloud-director/pull/511)) 402 * Added method `AdminCatalog.FullSubscriptionUrl` to return the subscription URL of a published catalog ([#511](https://github.com/vmware/go-vcloud-director/pull/511)) 403 * Added method `AdminCatalog.WaitForTasks` to wait for catalog tasks to complete ([#511](https://github.com/vmware/go-vcloud-director/pull/511)) 404 * Added method `AdminCatalog.UpdateSubscriptionParams` to modify the terms of an existing subscription ([#511](https://github.com/vmware/go-vcloud-director/pull/511)) 405 * Added methods `Catalog.QueryTaskList` and `AdminCatalog.QueryTaskList` to retrieve the tasks associated with a catalog ([#511](https://github.com/vmware/go-vcloud-director/pull/511)) 406 * Added function `IsValidUrl` to determine if a URL is valid ([#511](https://github.com/vmware/go-vcloud-director/pull/511)) 407 * Added `AdminCatalog` methods `Sync` and `LaunchSync` to synchronise a subscribed catalog ([#511](https://github.com/vmware/go-vcloud-director/pull/511)) 408 * Added method `AdminCatalog.GetCatalogHref` to retrieve the HREF of a regular catalog ([#511](https://github.com/vmware/go-vcloud-director/pull/511)) 409 * Added `AdminCatalog` methods `QueryCatalogItemList`, `QueryVappTemplateList`, and `QueryMediaList` to retrieve lists of 410 dependent items ([#511](https://github.com/vmware/go-vcloud-director/pull/511)) 411 * Added `AdminCatalog` methods `LaunchSynchronisationVappTemplates`, `LaunchSynchronisationAllVappTemplates`, 412 `LaunchSynchronisationMediaItems`, and `LaunchSynchronisationAllMediaItems` to start synchronisation of dependent 413 items ([#511](https://github.com/vmware/go-vcloud-director/pull/511)) 414 * Added `AdminCatalog` methods `GetCatalogItemByHref` and `QueryCatalogItem` to retrieve a single Catalog Item ([#511](https://github.com/vmware/go-vcloud-director/pull/511)) 415 * Added method `CatalogItem.LaunchSync` to start synchronisation of a catalog item ([#511](https://github.com/vmware/go-vcloud-director/pull/511)) 416 * Added method `CatalogItem.Refresh` to get fresh contents for a catalog item ([#511](https://github.com/vmware/go-vcloud-director/pull/511)) 417 * Added function `WaitResource` to wait for tasks associated to a gioven resource ([#511](https://github.com/vmware/go-vcloud-director/pull/511)) 418 * Added function `MinimalShowTask` to display task progress with minimal info ([#511](https://github.com/vmware/go-vcloud-director/pull/511)) 419 * Added functions `ResourceInProgress` and `ResourceComplete` to check on task activity for a given entity ([#511](https://github.com/vmware/go-vcloud-director/pull/511)) 420 * Added functions `SkimTasksList`, `SkimTasksListMonitor`, `WaitTaskListCompletion`, `WaitTaskListCompletionMonitor` to 421 process lists of tasks and lists of task IDs ([#511](https://github.com/vmware/go-vcloud-director/pull/511)) 422 * Added `Client` methods `GetTaskByHREF` and `GetTaskById` to retrieve individual tasks ([#511](https://github.com/vmware/go-vcloud-director/pull/511)) 423 * Implemented `QueryItem` for `Task` and `AdminTask` (`GetHref`, `GetName`, `GetType`, `GetParentId`, `GetParentName`, `GetMetadataValue`, `GetDate`) ([#511](https://github.com/vmware/go-vcloud-director/pull/511)) 424 * Added `VCDClient.QueryMediaById` to query a media record using a media ID ([#520](https://github.com/vmware/go-vcloud-director/pull/520)) 425 * Added `Vdc.QueryVappSynchronizedVmTemplate` to query a VM inside a vApp Template that must be synchronized in the catalog [[#520](https://github.com/vmware/go-vcloud-director/pull/520)] 426 * Added `VCDClient.QueryVmInVAppTemplateByHref` and `VCDClient.QuerySynchronizedVmInVAppTemplateByHref` to query a VM 427 inside a vApp Template by using the latter's hyper-reference ([#520](https://github.com/vmware/go-vcloud-director/pull/520)) 428 * Added `VCDClient.QuerySynchronizedVAppTemplateById` to get a synchronized vApp Template query record from a vApp Template ID ([#520](https://github.com/vmware/go-vcloud-director/pull/520)) 429 430 ### IMPROVEMENTS 431 * Bumped Default API Version to V36.0 (VCD 10.3+) [#500](https://github.com/vmware/go-vcloud-director/pull/500) 432 * Added method `VM.Shutdown` to shut down guest OS ([#413](https://github.com/vmware/go-vcloud-director/pull/413), [#496](https://github.com/vmware/go-vcloud-director/pull/496)) 433 * Added support for MoRef ID on VM record type. Using the MoRef ID, we can then correlate that back to vCenter Server and find the VM with matching MoRef ID ([#491](https://github.com/vmware/go-vcloud-director/pull/491)) 434 * Added support for querying VdcStorageProfile: 435 - functions `QueryAdminOrgVdcStorageProfileByID` and `QueryOrgVdcStorageProfileByID` 436 - query types `QtOrgVdcStorageProfile` and `QtAdminOrgVdcStorageProfile` 437 - data struct `QueryResultAdminOrgVdcStorageProfileRecordType` (non admin struct already was here) 438 ([#499](https://github.com/vmware/go-vcloud-director/pull/499)) 439 * Created new VDC Compute Policies CRUD methods using OpenAPI v2.0.0: 440 `VCDClient.GetVdcComputePolicyV2ById`, `VCDClient.GetAllVdcComputePoliciesV2`, `VCDClient.CreateVdcComputePolicyV2`, 441 `VdcComputePolicyV2.Update`, `VdcComputePolicyV2.Delete` and `AdminVdc.GetAllAssignedVdcComputePoliciesV2`. 442 This version supports more filtering options like `isVgpuPolicy` ([#502](https://github.com/vmware/go-vcloud-director/pull/502), [#504](https://github.com/vmware/go-vcloud-director/pull/504), [#507](https://github.com/vmware/go-vcloud-director/pull/507)) 443 * Simplified `Test_LDAP` by using a pre-configured LDAP server ([#505](https://github.com/vmware/go-vcloud-director/pull/505)) 444 * Added VCDClient.GetAllNsxtEdgeClusters for lookup of NSX-T Edge Clusters in wider scopes - 445 Provider VDC, VDC Group or VDC ([#512](https://github.com/vmware/go-vcloud-director/pull/512)) 446 * Switched VDC.GetAllNsxtEdgeClusters to use 'orgVdcId' filter instead of '_context' (now deprecated) 447 ([#512](https://github.com/vmware/go-vcloud-director/pull/512)) 448 * Created `VM.UpdateComputePolicyV2` and `VM.UpdateComputePolicyV2Async` that uses v2.0.0 of VDC Compute Policy endpoint 449 of OpenAPI and allows updating VM Sizing Policies and also VM Placement Policies for a given VM ([#513](https://github.com/vmware/go-vcloud-director/pull/513)) 450 * Added `[]tenant` structure to simplify org user testing ([#515](https://github.com/vmware/go-vcloud-director/pull/515)) 451 * Improved `Vdc.QueryVappVmTemplate` to avoid querying VMs in vApp Templates that are not synchronized in the catalog ([#520](https://github.com/vmware/go-vcloud-director/pull/520)) 452 453 ### BUG FIXES 454 * Changed `VdcComputePolicy.Description` to a non-omitempty pointer, to be able to send null values to VCD to set empty descriptions. ([#504](https://github.com/vmware/go-vcloud-director/pull/504)) 455 * Fixed issue [#514](https://github.com/vmware/go-vcloud-director/issues/514) "ignoring pagination in network queries" ([#518](https://github.com/vmware/go-vcloud-director/pull/518)) 456 * Fixed type `types.AdminVdc.ResourcePoolRefs` to make unmarshaling work (read-only) ([#494](https://github.com/vmware/go-vcloud-director/pull/494)) 457 * Fixed Test_NsxtSecurityGroupGetAssociatedVms which had name clash ([#498](https://github.com/vmware/go-vcloud-director/pull/498)) 458 459 ### DEPRECATIONS 460 * Deprecated OpenAPI v1.0.0 VDC Compute Policies CRUD methods in favor of v2.0.0 ones: 461 `Client.GetVdcComputePolicyById`, `Client.GetAllVdcComputePolicies`, `Client.CreateVdcComputePolicy` 462 `VdcComputePolicy.Update`, `VdcComputePolicy.Delete` and `AdminVdc.GetAllAssignedVdcComputePolicies` ([#504](https://github.com/vmware/go-vcloud-director/pull/504)) 463 * Deprecated the functions `VCDClient.AddMetadataEntryByHrefAsync` 464 and `VCDClient.AddMetadataEntryByHref` in favor of `VCDClient.AddMetadataEntryWithVisibilityByHrefAsync` 465 and `VCDClient.AddMetadataEntryWithVisibilityByHref` ([#510](https://github.com/vmware/go-vcloud-director/pull/510)) 466 * Deprecated the functions `VCDClient.MergeMetadataByHrefAsync` 467 and `VCDClient.MergeMetadataByHref` in favor of `VCDClient.MergeMetadataWithVisibilityByHrefAsync` 468 and `VCDClient.MergeMetadataWithVisibilityByHref` ([#510](https://github.com/vmware/go-vcloud-director/pull/510)) 469 * Deprecated the functions `AddMetadataEntryAsync` and `AddMetadataEntry` from the following entities: 470 `VM`, `Vdc`, `AdminVdc`, `ProviderVdc`, `VApp`, `VAppTemplate`, `MediaRecord`, `Media`, `AdminCatalog`, `AdminOrg`, `Disk`, 471 `OrgVDCNetwork`, `CatalogItem` in favor of their `AddMetadataEntryWithVisibilityAsync` and `AddMetadataEntryWithVisibility` 472 counterparts ([#510](https://github.com/vmware/go-vcloud-director/pull/510)) 473 * Deprecated the functions `MergeMetadataAsync` and `MergeMetadataAsync` from the following entities: 474 `VM`, `Vdc`, `AdminVdc`, `ProviderVdc`, `VApp`, `VAppTemplate`, `MediaRecord`, `Media`, `AdminCatalog`, `AdminOrg`, `Disk`, 475 `OrgVDCNetwork`, `CatalogItem` in favor of their `MergeMetadataWithMetadataValuesAsync` and `MergeMetadataWithMetadataValues` 476 counterparts ([#510](https://github.com/vmware/go-vcloud-director/pull/510)) 477 * Deprecated the functions `DeleteMetadata` and `DeleteMetadataAsync` from the following entities: 478 `VM`, `Vdc`, `AdminVdc`, `ProviderVdc`, `VApp`, `VAppTemplate`, `MediaRecord`, `Media`, `AdminCatalog`, `AdminOrg`, `Disk`, 479 `OrgVDCNetwork`, `CatalogItem` in favor of their `DeleteMetadataWithDomainAsync` and `DeleteMetadataWithDomain` 480 counterparts ([#510](https://github.com/vmware/go-vcloud-director/pull/510)) 481 482 ### NOTES 483 * Switched `go.mod` to use Go 1.19 ([#511](https://github.com/vmware/go-vcloud-director/pull/511)) 484 * Ran `make fmt` using Go 1.19 release (`fmt` automatically changes doc comment structure). This 485 will prevent `make static` errors when running tests in pipeline using Go 1.19 ([#497](https://github.com/vmware/go-vcloud-director/pull/497)) 486 * Updated branding `vCloud Director` -> `VMware Cloud Director` ([#497](https://github.com/vmware/go-vcloud-director/pull/497)) 487 * package `io/ioutil` is deprecated as of Go 1.16. `staticcheck` started complaining about usage of 488 deprecated packages. As a result packages `io` or `os` are used (still the same 489 functions are used) ([#497](https://github.com/vmware/go-vcloud-director/pull/497)) 490 * Adjusted `staticcheck` version naming to new format (from `2021.1.2` to `v0.3.3`) ([#497](https://github.com/vmware/go-vcloud-director/pull/497)] 491 * Added a new GitHub Action to run `gosec` on every push and pull request [[#516](https://github.com/vmware/go-vcloud-director/pull/516)) 492 * Improved documentation for `types.OpenApiOrgVdcNetworkDhcp` ([#517](https://github.com/vmware/go-vcloud-director/pull/517)) 493 494 495 496 ## 2.16.0 (August 2, 2022) 497 498 ### FEATURES 499 * Added support for `DnsServers` on `OpenApiOrgVdcNetworkDhcp` struct ([#465](https://github.com/vmware/go-vcloud-director/pull/465)) 500 * Added new methods `Org.GetAllSecurityTaggedEntities`, `Org.GetAllSecurityTaggedEntitiesByName`, `Org.GetAllSecurityTagValues`, `VM.GetVMSecurityTags`, `Org.UpdateSecurityTag` and `VM.UpdateVMSecurityTags` to deal with security tags ([#467](https://github.com/vmware/go-vcloud-director/pull/467)) 501 * Added new structs `types.SecurityTag`, `types.SecurityTaggedEntity`, `types.SecurityTagValue` and `types.EntitySecurityTags` ([#467](https://github.com/vmware/go-vcloud-director/pull/467)) 502 * Added `Vdc.GetControlAccess`, `Vdc.SetControlAccess` and `Vdc.DeleteControlAccess` to get, set and delete control access capabilities to VDCs ([#470](https://github.com/vmware/go-vcloud-director/pull/470)) 503 * Added support to set, get and delete metadata to CatalogItem with the methods 504 `CatalogItem.AddMetadataEntry`, `CatalogItem.AddMetadataEntryAsync`, `CatalogItem.GetMetadata`, 505 `CatalogItem.DeleteMetadataEntry` and `CatalogItem.DeleteMetadataEntryAsync`. ([#471](https://github.com/vmware/go-vcloud-director/pull/471)) 506 * Added `AdminCatalog.MergeMetadata`,`AdminCatalog.MergeMetadataAsync`, `AdminOrg.MergeMetadata`, `AdminOrg.MergeMetadataAsync`, 507 `CatalogItem.MergeMetadata`, `CatalogItem.MergeMetadataAsync`, `Disk.MergeMetadata`, `Disk.MergeMetadataAsync`, `Media.MergeMetadata`, 508 `Media.MergeMetadataAsync`, `MediaRecord.MergeMetadata`, `MediaRecord.MergeMetadataAsync`, `OpenAPIOrgVdcNetwork.MergeMetadata`, 509 `OpenAPIOrgVdcNetwork.MergeMetadataAsync`, `OrgVDCNetwork.MergeMetadata`, `OrgVDCNetwork.MergeMetadataAsync`, 510 `VApp.MergeMetadata`, `VApp.MergeMetadataAsync`, `VAppTemplate.MergeMetadata`, `VAppTemplate.MergeMetadataAsync`, 511 `VM.MergeMetadata`, `VM.MergeMetadataAsync`, `Vdc.MergeMetadata`, `Vdc.MergeMetadataAsync` to merge metadata, 512 which both updates existing metadata with same key and adds new entries for the non-existent ones ([#473](https://github.com/vmware/go-vcloud-director/pull/473)) 513 * Added NSX-T Edge Gateway methods `NsxtEdgeGateway.GetNsxtRouteAdvertisement`, 514 `NsxtEdgeGateway.GetNsxtRouteAdvertisementWithContext`, 515 `NsxtEdgeGateway.UpdateNsxtRouteAdvertisement`, 516 `NsxtEdgeGateway.UpdateNsxtRouteAdvertisementWithContext`, 517 `NsxtEdgeGateway.DeleteNsxtRouteAdvertisement` and 518 `NsxtEdgeGateway.DeleteNsxtRouteAdvertisementWithContext` that allow to manage NSX-T Route 519 Advertisement ([#478](https://github.com/vmware/go-vcloud-director/pull/478), [#480](https://github.com/vmware/go-vcloud-director/pull/480)) 520 * Added new methods `NsxtEdgeGateway.GetBgpConfiguration`, `NsxtEdgeGateway.UpdateBgpConfiguration`, 521 `NsxtEdgeGateway.DisableBgpConfiguration` for BGP Configuration management on NSX-T Edge Gateway 522 ([#480](https://github.com/vmware/go-vcloud-director/pull/480)) 523 * Added new structs `types.EdgeBgpConfig`, `types.EdgeBgpGracefulRestartConfig`, 524 `types.EdgeBgpConfigVersion` for BGP Configuration management on NSX-T Edge Gateway ([#480](https://github.com/vmware/go-vcloud-director/pull/480)) 525 * Added support for Dynamic Security Groups in VCD 10.3 by expanding `types.NsxtFirewallGroup` to 526 accommodate fields required for Dynamic Security Groups, implemented automatic API elevation to 527 v36.0. Added New functions `VdcGroup.CreateNsxtFirewallGroup`, 528 `NsxtFirewallGroup.IsDynamicSecurityGroup` ([#487](https://github.com/vmware/go-vcloud-director/pull/487)) 529 * Added support for managing NSX-T Edge Gateway BGP IP Prefix Lists. It is done by adding types `EdgeBgpIpPrefixList` and 530 `types.EdgeBgpIpPrefixList` with functions `CreateBgpIpPrefixList`, `GetAllBgpIpPrefixLists`, 531 `GetBgpIpPrefixListByName`, `GetBgpIpPrefixListById`, `Update` and `Delete` ([#488](https://github.com/vmware/go-vcloud-director/pull/488)) 532 * Added support for managing NSX-T Edge Gateway BGP Neighbor. It is done by adding types `EdgeBgpNeighbor` and 533 `types.EdgeBgpNeighbor` with functions `CreateBgpNeighbor`, `GetAllBgpNeighbors`, 534 `GetBgpNeighborByIp`, `GetBgpNeighborById`, `Update` and `Delete` ([#489](https://github.com/vmware/go-vcloud-director/pull/489)) 535 536 ### IMPROVEMENTS 537 * Added methods `client.CreateVdcComputePolicy`, `client.GetVdcComputePolicyById`, `client.GetAllVdcComputePolicies` ([#468](https://github.com/vmware/go-vcloud-director/pull/468)) 538 * Added additional methods for convenience of NSX-T Org Network DHCP handling 539 `OpenApiOrgVdcNetwork.GetOpenApiOrgVdcNetworkDhcp`, `OpenApiOrgVdcNetwork.DeletNetworkDhcp` 540 `OpenApiOrgVdcNetwork.UpdateDhcp` ([#469](https://github.com/vmware/go-vcloud-director/pull/469)) 541 * Added additional support for UDF type ISO files in `catalog.UploadMediaImage` ([#479](https://github.com/vmware/go-vcloud-director/pull/479)) 542 * Added `SupportedFeatureSet` attribute to `NsxtAlbServiceEngineGroup` and `NsxtAlbConfig` to 543 support v37.0 license management for AVI Load Balancer and replace `LicenseType` from 544 `NsxtAlbController` ([#485](https://github.com/vmware/go-vcloud-director/pull/485)) 545 546 ### BUG FIXES 547 * Fixed method `adminOrg.FindCatalogRecords` to escape name in query URL ([#466](https://github.com/vmware/go-vcloud-director/pull/466)) 548 * Fixed method `vm.WaitForDhcpIpByNicIndexes` to ignore not found Edge Gateway ([#481](https://github.com/vmware/go-vcloud-director/pull/481)) 549 550 ### DEPRECATIONS 551 * Deprecated `org.GetVdcComputePolicyById`, `adminOrg.GetVdcComputePolicyById` ([#468](https://github.com/vmware/go-vcloud-director/pull/468)) 552 * Deprecated `org.GetAllVdcComputePolicies`, `adminOrg.GetAllVdcComputePolicies`, `org.CreateVdcComputePolicy` ([#468](https://github.com/vmware/go-vcloud-director/pull/468)) 553 554 555 ## 2.15.0 (April 14, 2022) 556 557 ### FEATURES 558 * Added support for Shareable disks, i.e., independent disks that can be attached to multiple VMs which is available from 559 API v35.0 onwards. Also added UUID to the Disk structure which is a new member that is returned from v36.0 onwards. This 560 member holds a UUID that can be used to correlate the disk that is attached to a particular VM from the VCD side and the 561 VM host side. ([#383](https://github.com/vmware/go-vcloud-director/pull/383)) 562 * Added support for uploading OVF using URL `catalog.UploadOvfByLink` ([#422](https://github.com/vmware/go-vcloud-director/pull/422), [#426](https://github.com/vmware/go-vcloud-director/pull/426)) 563 * Added support for updating vApp template `vAppTemplate.UpdateAsync` and `vAppTemplate.Update` ([#422](https://github.com/vmware/go-vcloud-director/pull/422)) 564 * Added methods `catalog.PublishToExternalOrganizations` and `adminCatalog.PublishToExternalOrganizations` ([#424](https://github.com/vmware/go-vcloud-director/pull/424)) 565 * Added types `types.MetadataStringValue`, `types.MetadataNumberValue`, `types.MetadataDateTimeValue` and `types.MetadataBooleanValue` 566 for adding different kind of metadata to entities ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 567 * Added support to set, get and delete metadata to AdminCatalog with the methods 568 `AdminCatalog.AddMetadataEntry`, `AdminCatalog.AddMetadataEntryAsync`, `AdminCatalog.GetMetadata`, 569 `AdminCatalog.DeleteMetadataEntry` and `AdminCatalog.DeleteMetadataEntryAsync`. ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 570 * Added support to get metadata from Catalog with method `Catalog.GetMetadata` ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 571 * Added to `VM` and `VApp` the methods `DeleteMetadataEntry`, `DeleteMetadataEntryAsync`, `AddMetadataEntry` and `AddMetadataEntryAsync` 572 so it follows the same convention as the rest of entities that uses metadata. ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 573 * Added methods `vm.ChangeCPU` and `vm.ChangeMemory` which uses the latest API structure instead of deprecated ones ([#432](https://github.com/vmware/go-vcloud-director/pull/432)) 574 * Added environment variable `GOVCD_API_VERSION` so API version can be set manually ([#434](https://github.com/vmware/go-vcloud-director/pull/434)) 575 * Added support to set, get and delete metadata to AdminOrg with the methods 576 `AdminOrg.AddMetadataEntry`, `AdminOrg.AddMetadataEntryAsync`, `AdminOrg.GetMetadata`, 577 `AdminOrg.DeleteMetadataEntry` and `AdminOrg.DeleteMetadataEntryAsync`. ([#438](https://github.com/vmware/go-vcloud-director/pull/438)) 578 * Added support to get metadata to Org with the method 579 `Org.GetMetadata`. ([#438](https://github.com/vmware/go-vcloud-director/pull/438)) 580 * Added support to set, get and delete metadata to Disk with the methods 581 `Disk.AddMetadataEntry`, `Disk.AddMetadataEntryAsync`, `Disk.GetMetadata`, 582 `Disk.DeleteMetadataEntry` and `Disk.DeleteMetadataEntryAsync`. ([#438](https://github.com/vmware/go-vcloud-director/pull/438)) 583 * Added new structure `AnyTypeEdgeGateway` which supports retreving both types of Edge Gateways 584 (NSX-V and NSX-T) with methods `AdminOrg.GetAnyTypeEdgeGatewayById`, 585 `Org.GetAnyTypeEdgeGatewayById`, `AnyTypeEdgeGateway.IsNsxt`, `AnyTypeEdgeGateway.IsNsxv`, 586 `AnyTypeEdgeGateway.GetNsxtEdgeGateway` ([#443](https://github.com/vmware/go-vcloud-director/pull/443)) 587 * Added functions `VdcGroup.GetCapabilities`, `VdcGroup.IsNsxt`, 588 `VdcGroup.GetOpenApiOrgVdcNetworkByName`, `VdcGroup.GetAllOpenApiOrgVdcNetworks`, 589 `Org.GetOpenApiOrgVdcNetworkByNameAndOwnerId` ([#443](https://github.com/vmware/go-vcloud-director/pull/443)) 590 * Added method `AdminOrg.FindCatalogRecords` that allows to query `types.CatalogRecord` by their catalog name. ([#450](https://github.com/vmware/go-vcloud-director/pull/450)) 591 * Added methods `Client.QueryWithNotEncodedParamsWithHeaders` and `Client.QueryWithNotEncodedParamsWithApiVersionWithHeaders` so HTTP headers can be added now when doing API queries. ([#450](https://github.com/vmware/go-vcloud-director/pull/450)) 592 * Added functions `VdcGroup.GetNsxtFirewallGroupByName` and `VdcGroup.GetNsxtFirewallGroupById` ([#451](https://github.com/vmware/go-vcloud-director/pull/451)) 593 * Added support for for Network Context Profile lookup using `GetAllNetworkContextProfiles` and 594 `GetNetworkContextProfilesByNameScopeAndContext` functions ([#452](https://github.com/vmware/go-vcloud-director/pull/452)) 595 * Added support for NSX-T Distributed Firewall rule management using type `DistributedFirewall` and 596 `VdcGroup.GetDistributedFirewall`, `VdcGroup.UpdateDistributedFirewall`, 597 `VdcGroup.DeleteAllDistributedFirewallRules`, `DistributedFirewall.DeleteAllRules` ([#452](https://github.com/vmware/go-vcloud-director/pull/452)) 598 * Added support to set, get and delete metadata to the following resources via its HREF: 599 `catalog`, `catalog item`, `edge gateway`, `independent disk`, `media`, `network`, `org`, `PVDC`, `PVDC storage profile`, `vApp`, `vApp template`,`VDC` and `VDC storage profile`; 600 with the methods 601 `VCDClient.GetMetadataByHref`, `VCDClient.AddMetadataEntryByHref`, `VCDClient.AddMetadataEntryByHrefAsync`, 602 `VCDClient.DeleteMetadataEntryByHref` and `VCDClient.DeleteMetadataEntryByHrefAsync` ([#454](https://github.com/vmware/go-vcloud-director/pull/454)) 603 * Added functions `VdcGroup.GetOpenApiOrgVdcNetworkById` and `VdcGroup.CreateOpenApiOrgVdcNetwork` ([#456](https://github.com/vmware/go-vcloud-director/pull/456)) 604 * New method added `Disk.GetAttachedVmsHrefs` ([#436](https://github.com/vmware/go-vcloud-director/pull/436)) 605 606 ### IMPROVEMENTS 607 * Bumped Default API Version to V35.0 ([#434](https://github.com/vmware/go-vcloud-director/pull/434)) 608 * Disk methods have now the ability to access new properties from API version 36.0. They are: `DiskRecordType.SharingType`, `DiskRecordType.UUID`, `DiskRecordType.Encrypted`, `Disk.SharingType`, `Disk.UUID` and `Disk.Encrypted` ([#436](https://github.com/vmware/go-vcloud-director/pull/436)) 609 * Added support for `User` entities imported from LDAP, with `IsExternal` property ([#439](https://github.com/vmware/go-vcloud-director/pull/439)) 610 * Added support for users list attribute for `Group` ([#439](https://github.com/vmware/go-vcloud-director/pull/439)) 611 * Improved `group.Update()` to avoid sending the users list to VCD to avoid unwanted errors ([#449](https://github.com/vmware/go-vcloud-director/pull/449)) 612 * NSX-T Edge Gateway now supports VDC Groups by switching from `OrgVdc` to `OwnerRef` field. 613 Additional methods `NsxtEdgeGateway.MoveToVdcOrVdcGroup()`, 614 `Org.GetNsxtEdgeGatewayByNameAndOwnerId()`, `VdcGroup.GetNsxtEdgeGatewayByName()`, 615 `VdcGroup.GetAllNsxtEdgeGateways()`, `org.GetVdcGroupById` ([#440](https://github.com/vmware/go-vcloud-director/pull/440)) 616 * Added additional helper functions `OwnerIsVdcGroup()`, `OwnerIsVdc()`, `VdcGroup.GetCapabilities()`, 617 `VdcGroup.IsNsxt()` ([#440](https://github.com/vmware/go-vcloud-director/pull/440)) 618 * Added support to set, get and delete metadata to VDC Networks with the methods 619 `OrgVDCNetwork.AddMetadataEntry`, `OrgVDCNetwork.AddMetadataEntryAsync`, `OrgVDCNetwork.GetMetadata`, 620 `OrgVDCNetwork.DeleteMetadataEntry` and `OrgVDCNetwork.DeleteMetadataEntryAsync` ([#442](https://github.com/vmware/go-vcloud-director/pull/442)) 621 * Added `CanPublishExternally` and `CanSubscribe` attributes to `OrgGeneralSettings` struct. ([#444](https://github.com/vmware/go-vcloud-director/pull/444)) 622 * Added workaround to tests for Org Catalog publishing bug when dealing with LDAP ([#458](https://github.com/vmware/go-vcloud-director/pull/458)) 623 * Added clean-up actions to some tests that were uploading vAppTemplates/medias to catalogs ([#458](https://github.com/vmware/go-vcloud-director/pull/458)) 624 * Added support to set, get and delete metadata to OpenAPI VDC Networks through XML with the methods 625 `OpenApiOrgVdcNetwork.AddMetadataEntry`, `OpenApiOrgVdcNetwork.GetMetadata`, 626 `OpenApiOrgVdcNetwork.DeleteMetadataEntry` ([#459](https://github.com/vmware/go-vcloud-director/pull/459)) 627 * Added `Vdc.GetNsxtAppPortProfileByName` and `VdcGroup.GetNsxtAppPortProfileByName` for NSX-T 628 Application Port Profile lookup ([#460](https://github.com/vmware/go-vcloud-director/pull/460)) 629 630 ### BUG FIXES 631 * Fixed Issue #431 "Wrong order in Task structure" ([#433](https://github.com/vmware/go-vcloud-director/pull/433)) 632 * Fixed Issue where VDC creation with storage profile `enabled=false` wasn't working. `VdcStorageProfile.enabled` and `VdcStorageProfileConfiguration.enabled` changed to pointers ([#433](https://github.com/vmware/go-vcloud-director/pull/433)) 633 * Fixed method `client.GetStorageProfileByHref` to return IOPS `IopsSettings` ([#435](https://github.com/vmware/go-vcloud-director/pull/435)) 634 * `Vms.VmReference` changed to array to fix incorrect deserialization ([#436](https://github.com/vmware/go-vcloud-director/pull/436)) 635 * `Catalog.QueryMediaList` method was not working because `fmt.Sprintf` was being misused ([#441](https://github.com/vmware/go-vcloud-director/pull/441)) 636 637 ### DEPRECATIONS 638 * Deprecated `vm.DeleteMetadata` in favor of `vm.DeleteMetadataEntry` ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 639 * Deprecated `vm.AddMetadata` in favor of `vm.AddMetadataEntry` ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 640 * Deprecated `vdc.DeleteMetadata` in favor of `vdc.DeleteMetadataEntry` ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 641 * Deprecated `vdc.AddMetadata` in favor of `vdc.AddMetadataEntry` ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 642 * Deprecated `vdc.AddMetadataAsync` in favor of `vdc.AddMetadataEntryAsync` ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 643 * Deprecated `vdc.DeleteMetadataAsync` in favor of `vdc.DeleteMetadataEntryAsync` ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 644 * Deprecated `vApp.DeleteMetadata` in favor of `vApp.DeleteMetadataEntry` ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 645 * Deprecated `vApp.AddMetadata` in favor of `vApp.AddMetadataEntry` ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 646 * Deprecated `vAppTemplate.AddMetadata` in favor of `vAppTemplate.AddMetadataEntry` ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 647 * Deprecated `vAppTemplate.AddMetadataAsync` in favor of `vAppTemplate.AddMetadataEntryAsync` ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 648 * Deprecated `vAppTemplate.DeleteMetadata` in favor of `vAppTemplate.DeleteMetadataEntry` ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 649 * Deprecated `vAppTemplate.DeleteMetadataAsync` in favor of `vAppTemplate.DeleteMetadataEntryAsync` ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 650 * Deprecated `mediaRecord.AddMetadata` in favor of `mediaRecord.AddMetadataEntry` ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 651 * Deprecated `mediaRecord.AddMetadataAsync` in favor of `mediaRecord.AddMetadataEntryAsync` ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 652 * Deprecated `mediaRecord.DeleteMetadata` in favor of `mediaRecord.DeleteMetadataEntry` ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 653 * Deprecated `mediaRecord.DeleteMetadataAsync` in favor of `mediaRecord.DeleteMetadataEntryAsync` ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 654 * Deprecated `media.AddMetadata` in favor of `media.AddMetadataEntry` ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 655 * Deprecated `media.AddMetadataAsync` in favor of `media.AddMetadataEntryAsync` ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 656 * Deprecated `media.DeleteMetadata` in favor of `media.DeleteMetadataEntry` ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 657 * Deprecated `media.DeleteMetadataAsync` in favor of `media.DeleteMetadataEntryAsync` ([#430](https://github.com/vmware/go-vcloud-director/pull/430)) 658 * Deprecated `vm.ChangeMemorySize` in favor of `vm.ChangeMemory` ([#432](https://github.com/vmware/go-vcloud-director/pull/432)) 659 * Deprecated `vm.ChangeCPUCount` and `vm.ChangeCPUCountWithCore` in favor of `vm.ChangeCPU` ([#432](https://github.com/vmware/go-vcloud-director/pull/432)) 660 661 ### NOTES 662 * Bumped `staticcheck` version to 2022.1 with Go 1.18 support ([#457](https://github.com/vmware/go-vcloud-director/pull/457)) 663 664 ## 2.14.0 (January 7, 2022) 665 666 ### FEATURES 667 * Added type `NsxtAlbConfig` and functions `NsxtEdgeGateway.UpdateAlbSettings`, `NsxtEdgeGateway.GetAlbSettings`, 668 `NsxtEdgeGateway.DisableAlb` ([#403](https://github.com/vmware/go-vcloud-director/pull/403)) 669 * Added types `Certificate` and `types.CertificateLibraryItem` for handling Certificates in Certificate Library with corresponding 670 methods `client.GetCertificateFromLibraryById`, `client.AddCertificateToLibrary`, `client.GetAllCertificatesFromLibrary`, `client.GetCertificateFromLibraryByName`, `adminOrg.GetCertificateFromLibraryById`, `adminOrg.AddCertificateToLibrary`, `adminOrg.GetAllCertificatesFromLibrary`, `adminOrg.GetCertificateFromLibraryByName`, 671 `certificate.Update`, `certificate.Delete` ([#404](https://github.com/vmware/go-vcloud-director/pull/404)) 672 * Added support for ALB Service Engine Group Assignment to NSX-T Edge Gateway via type 673 `NsxtAlbServiceEngineGroupAssignment` and functions `GetAllAlbServiceEngineGroupAssignments`, 674 `GetAlbServiceEngineGroupAssignmentById`, `GetAlbServiceEngineGroupAssignmentByName`, 675 `CreateAlbServiceEngineGroupAssignment`, `Update`, `Delete` ([#405](https://github.com/vmware/go-vcloud-director/pull/405)) 676 * Added type `types.ApiTokenRefresh` to contain data from API token refresh ([#406](https://github.com/vmware/go-vcloud-director/pull/406)) 677 * Added method `VCDClient.GetBearerTokenFromApiToken` to get a bearer token from an API token ([#406](https://github.com/vmware/go-vcloud-director/pull/406)) 678 * Added method `VCDClient.SetApiToken` to set a token and get a bearer token using and API token and get token details in return ([#406](https://github.com/vmware/go-vcloud-director/pull/406)) 679 * Added types `VdcGroup`, `types.VdcGroup`, `types.ParticipatingOrgVdcs`, `types.CandidateVdc`, `types.DfwPolicies` and `types.DefaultPolicy` for handling VDC groups with corresponding 680 methods `adminOrg.CreateNsxtVdcGroup`, `adminOrg.CreateVdcGroup`, `adminOrg.GetAllNsxtVdcGroupCandidates`, `adminOrg.GetAllVdcGroupCandidates`, `adminOrg.GetAllVdcGroups`, `adminOrg.GetVdcGroupByName`, `adminOrg.GetVdcGroupById`, `vdcGroup.Update`, `vdcGroup.GenericUpdate`, `vdcGroup.Delete`, `vdcGroup.DisableDefaultPolicy`, `vdcGroup.EnableDefaultPolicy`, `vdcGroup.GetDfwPolicies`, `vdcGroup.DeActivateDfw`, `vdcGroup.ActivateDfw`, `vdcGroup.UpdateDefaultDfwPolicies`, `vdcGroup.UpdateDfwPolicies` ([#410](https://github.com/vmware/go-vcloud-director/pull/410)) 681 * Added support for ALB Pool to NSX-T Edge Gateway via type `NsxtAlbPool` and functions `GetAllAlbPools`, 682 `GetAllAlbPoolSummaries`, `GetAlbPoolByName`, `GetAlbPoolById`, `CreateNsxtAlbPool`, `nsxtAlbPool.Update`, 683 `nsxtAlbPool.Delete` ([#414](https://github.com/vmware/go-vcloud-director/pull/414)) 684 * Added support for ALB Virtual Services to NSX-T Edge Gateway via type `NsxtAlbVirtualService` and functions `GetAllAlbVirtualServices`, 685 `GetAllAlbGetAllAlbVirtualServiceSummaries`, `GetAlbVirtualServiceByName`, `GetAlbVirtualServiceById`, 686 `CreateNsxtAlbVirtualService`, `NsxtAlbVirtualService.Update`, `NsxtAlbVirtualService.Delete` ([#417](https://github.com/vmware/go-vcloud-director/pull/417)) 687 688 ### IMPROVEMENTS 689 * `VCDClient.SetToken` has now the ability of transparently setting a bearer token when receiving an API token ([#406](https://github.com/vmware/go-vcloud-director/pull/406)) 690 * Removed Coverity warnings from code ([#408](https://github.com/vmware/go-vcloud-director/pull/408), [#412](https://github.com/vmware/go-vcloud-director/pull/412)) 691 * Added session info to go-vcloud-director logs ([#409](https://github.com/vmware/go-vcloud-director/pull/409)) 692 * Added type `types.UpdateLeaseSettingsSection` to handle vApp lease settings. ([#420](https://github.com/vmware/go-vcloud-director/pull/420)) 693 * Added methods `vApp.GetLease` and `vApp.RenewLease`, to query the state of the vApp lease and eventually modify it. ([#420](https://github.com/vmware/go-vcloud-director/pull/420)) 694 * Added `LeaseSettingsSection` to `types.VApp` structure. ([#420](https://github.com/vmware/go-vcloud-director/pull/420)) 695 696 ### BUG FIXES 697 * Fixed Issue #728: `vm.UpdateInternalDisksAsync()` didn't send VM description and as a result would delete VM description ([#418](https://github.com/vmware/go-vcloud-director/pull/418)) 698 * Removed hardcoded 0 value for Weight field in `ChangeCPUCountWithCore` function to avoid overriding shares ([#419](https://github.com/vmware/go-vcloud-director/pull/419)) 699 * Fixed issue #421 "Wrong xml name in SourcedVmTemplateParams" ([#420](https://github.com/vmware/go-vcloud-director/pull/420)) 700 701 702 ## 2.13.0 (September 30, 2021) 703 704 ### FEATURES 705 * Added method `AdminVdc.AddStorageProfile` ([#393](https://github.com/vmware/go-vcloud-director/pull/393)) 706 * Added method `AdminVdc.AddStorageProfileWait` ([#393](https://github.com/vmware/go-vcloud-director/pull/393)) 707 * Added method `AdminVdc.RemoveStorageProfile` ([#393](https://github.com/vmware/go-vcloud-director/pull/393)) 708 * Added method `AdminVdc.RemoveStorageProfileWait` ([#393](https://github.com/vmware/go-vcloud-director/pull/393)) 709 * Added method `AdminVdc.SetDefaultStorageProfile` ([#393](https://github.com/vmware/go-vcloud-director/pull/393)) 710 * Added method `AdminVdc.GetDefaultStorageProfileReference` ([#393](https://github.com/vmware/go-vcloud-director/pull/393)) 711 * Added method `VCDClient.GetStorageProfileByHref` ([#393](https://github.com/vmware/go-vcloud-director/pull/393)) 712 * Added method `Client.GetStorageProfileByHref` ([#393](https://github.com/vmware/go-vcloud-director/pull/393)) 713 * Added method `VCDClient.QueryProviderVdcStorageProfileByName` ([#393](https://github.com/vmware/go-vcloud-director/pull/393)) 714 * Added method `Client.QueryAllProviderVdcStorageProfiles` ([#393](https://github.com/vmware/go-vcloud-director/pull/393)) 715 * Added method `Client.QueryProviderVdcStorageProfiles` ([#393](https://github.com/vmware/go-vcloud-director/pull/393)) 716 * Added types `NsxtAlbController` and `types.NsxtAlbController` for handling NSX-T ALB Controllers with corresponding 717 functions `GetAllAlbControllers`, `GetAlbControllerByName`, `GetAlbControllerById`, `GetAlbControllerByUrl`, 718 `CreateNsxtAlbController`, `Update`, `Delete` ([#398](https://github.com/vmware/go-vcloud-director/pull/398)) 719 * Added types `NsxtAlbCloud` and `types.NsxtAlbCloud` for handling NSX-T ALB Clouds with corresponding functions 720 `GetAllAlbClouds`, `GetAlbCloudByName`, `GetAlbCloudById`, `CreateAlbCloud`, `Delete` ([#398](https://github.com/vmware/go-vcloud-director/pull/398)) 721 * Added type `NsxtAlbImportableCloud` and `types.NsxtAlbImportableCloud` for listing NSX-T ALB Importable Clouds with 722 corresponding functions `GetAllAlbImportableClouds`, `GetAlbImportableCloudByName`, `GetAlbImportableCloudById` 723 ([#398](https://github.com/vmware/go-vcloud-director/pull/398)) 724 * Added types `NsxtAlbServiceEngineGroup` and `types.NsxtAlbServiceEngineGroup` for handling NSX-T ALB Service Engine 725 Groups with corresponding functions `GetAllNsxtAlbServiceEngineGroups`, `GetAlbServiceEngineGroupByName`, 726 `GetAlbServiceEngineGroupById`, `CreateNsxtAlbServiceEngineGroup`, `Update`, `Delete`, `Sync` ([#398](https://github.com/vmware/go-vcloud-director/pull/398)) 727 * Added types `NsxtAlbImportableServiceEngineGroups` and `types.NsxtAlbImportableServiceEngineGroups` for listing NSX-T 728 ALB Importable Service Engine Groups with corresponding functions `GetAllAlbImportableServiceEngineGroups`, 729 `GetAlbImportableServiceEngineGroupByName`, `GetAlbImportableServiceEngineGroupById` ([#398](https://github.com/vmware/go-vcloud-director/pull/398)) 730 731 ### IMPROVEMENTS 732 * External network type ExternalNetworkV2 automatically elevates API version to maximum available out of 33.0, 35.0 and 733 36.0, so that new functionality can be consumed. It uses a controlled version elevation mechanism to consume the newer 734 features, but at the same time remain tested by not choosing the latest untested version blindly (more information in 735 openapi_endpoints.go) ([#399](https://github.com/vmware/go-vcloud-director/pull/399)) 736 * Added new field BackingTypeValue in favor of deprecated BackingType to types.ExternalNetworkV2Backing ([#399](https://github.com/vmware/go-vcloud-director/pull/399)) 737 * Added new function `GetFilteredNsxtImportableSwitches` to query NSX-T Importable Switches (Segments) ([#399](https://github.com/vmware/go-vcloud-director/pull/399)) 738 * Added `.changes` directory for changelog items ([#391](https://github.com/vmware/go-vcloud-director/pull/391)) 739 740 * Aligned build tags to match go fmt with Go 1.17 ([#396](https://github.com/vmware/go-vcloud-director/pull/396)) 741 * Improved `test-tags.sh` script to handle new build tag format ([#396](https://github.com/vmware/go-vcloud-director/pull/396)) 742 743 ### BUG FIXES 744 * Fixed handling of `staticcheck` in GitGub Actions ([#391](https://github.com/vmware/go-vcloud-director/pull/391)) 745 746 * Fixed Issue #390: `catalog.Delete()` ignores returned task and responds immediately which could have caused failures ([#392](https://github.com/vmware/go-vcloud-director/pull/392)) 747 748 * Fixed Issue #395 "BUG: can't update EGW - there is no ownerRef field" ([#397](https://github.com/vmware/go-vcloud-director/pull/397)) 749 750 ### DEPRECATIONS 751 * Deprecated `GetStorageProfileByHref` in favor of either `client.GetStorageProfileByHref` or `vcdClient.GetStorageProfileByHref` ([#393](https://github.com/vmware/go-vcloud-director/pull/393)) 752 * Deprecated `QueryProviderVdcStorageProfileByName` in favor of `VCDClient.QueryProviderVdcStorageProfileByName` ([#393](https://github.com/vmware/go-vcloud-director/pull/393)) 753 * Deprecated `VCDClient.QueryProviderVdcStorageProfiles` in favor of either `client.QueryProviderVdcStorageProfiles` or `client.QueryAllProviderVdcStorageProfiles` ([#393](https://github.com/vmware/go-vcloud-director/pull/393)) 754 * Deprecated `Vdc.GetDefaultStorageProfileReference` in favor of `adminVdc.GetDefaultStorageProfileReference` ([#393](https://github.com/vmware/go-vcloud-director/pull/393)) 755 756 ## 2.12.1 (July 5, 2021) 757 758 BUGS FIXED: 759 * org.GetCatalogByName and org.GetCatalogById could not retrieve shared catalogs from different Orgs 760 [#389](https://github.com/vmware/go-vcloud-director/pull/389) 761 762 763 ## 2.12.0 (June 30, 2021) 764 765 * Improved error handling and function receiver name in client 766 [#379](https://github.com/vmware/go-vcloud-director/pull/379) 767 * Added method `vdc.QueryEdgeGateway` [#364](https://github.com/vmware/go-vcloud-director/pull/364) 768 * Deprecated `vdc.GetEdgeGatewayRecordsType` [#364](https://github.com/vmware/go-vcloud-director/pull/364) 769 * Dropped support for VCD 9.7 which is EOL now [#371](https://github.com/vmware/go-vcloud-director/pull/371) 770 * Bumped Default API Version to V33.0 [#371](https://github.com/vmware/go-vcloud-director/pull/371) 771 * Methods `GetVDCById` and `GetVDCByName` for `Org` now use queries behind the scenes because Org 772 structure does not list child VDCs anymore [#371](https://github.com/vmware/go-vcloud-director/pull/371), 773 [#376](https://github.com/vmware/go-vcloud-director/pull/376), [#382](https://github.com/vmware/go-vcloud-director/pull/382) 774 * Methods `GetCatalogById` and `GetCatalogByName` for `Org` now use queries behind the scenes because Org 775 structure does not list child Catalogs anymore [#371](https://github.com/vmware/go-vcloud-director/pull/371), 776 [#376](https://github.com/vmware/go-vcloud-director/pull/376) 777 * Drop legacy authentication mechanism (vcdAuthorize) and use only new Cloud API provided (vcdCloudApiAuthorize) as 778 API V33.0 is sufficient for it [#371](https://github.com/vmware/go-vcloud-director/pull/371) 779 * Added NSX-T Firewall Group type (which represents a Security Group or an IP Set) support by using 780 structures `NsxtFirewallGroup` and `NsxtFirewallGroupMemberVms`. The following methods are 781 introduced for managing Security Groups and Ip Sets: `Vdc.CreateNsxtFirewallGroup`, 782 `NsxtEdgeGateway.CreateNsxtFirewallGroup`, `Org.GetAllNsxtFirewallGroups`, 783 `Vdc.GetAllNsxtFirewallGroups`, `Org.GetNsxtFirewallGroupByName`, 784 `Vdc.GetNsxtFirewallGroupByName`, `NsxtEdgeGateway.GetNsxtFirewallGroupByName`, 785 `Org.GetNsxtFirewallGroupById`, `Vdc.GetNsxtFirewallGroupById`, 786 `NsxtEdgeGateway.GetNsxtFirewallGroupById`, `NsxtFirewallGroup.Update`, 787 `NsxtFirewallGroup.Delete`, `NsxtFirewallGroup.GetAssociatedVms`, 788 `NsxtFirewallGroup.IsSecurityGroup`, `NsxtFirewallGroup.IsIpSet` 789 [#368](https://github.com/vmware/go-vcloud-director/pull/368) 790 * Added methods Org.QueryVmList and Org.QueryVmById to find VM by ID in an Org 791 [#368](https://github.com/vmware/go-vcloud-director/pull/368) 792 * Added `NsxtAppPortProfile` and `types.NsxtAppPortProfile` for NSX-T Application Port Profile management 793 [#378](https://github.com/vmware/go-vcloud-director/pull/378) 794 * Deprecated methods `vdc.ComposeRawVApp` and `vdc.ComposeVApp` [#387](https://github.com/vmware/go-vcloud-director/pull/387) 795 * Added method `vdc.CreateRawVApp` [#387](https://github.com/vmware/go-vcloud-director/pull/387) 796 * Removed deprecated method `adminOrg.GetRole` 797 * Added Tenant Context management functions `Client.RemoveCustomHeader`, `Client.SetCustomHeader`, `WithHttpHeader`, 798 and many private methods to retrieve tenant context down the hierarchy. More details in `CODING_GUIDELINES.md` 799 [#380](https://github.com/vmware/go-vcloud-director/pull/380) 800 * Added Rights management methods `AdminOrg.GetAllRights`, `AdminOrg.GetAllRightsCategories`, `AdminOrg.GetRightById`, 801 `AdminOrg.GetRightByName`, `Client.GetAllRights`, `Client.GetAllRightsCategories`, `Client.GetRightById`, 802 `Client.GetRightByName`, `client.GetRightsCategoryById`, `AdminOrg.GetRightsCategoryById` [#380](https://github.com/vmware/go-vcloud-director/pull/380) 803 * Added Global Role management methods `Client.GetAllGlobalRoles`, `Client.CreateGlobalRole`, `Client.GetGlobalRoleById`, 804 `Client.GetGlobalRoleByName`, `GlobalRole.AddRights`, `GlobalRole.Delete`, `GlobalRole.GetRights`, 805 `GlobalRole.GetTenants`, `GlobalRole.PublishAllTenants`, `GlobalRole.PublishTenants`, `GlobalRole.RemoveAllRights`, 806 `GlobalRole.RemoveRights`, `GlobalRole.ReplacePublishedTenants`, `GlobalRole.UnpublishAllTenants`, 807 `GlobalRole.UnpublishTenants`, `GlobalRole.Update`, `GlobalRole.UpdateRights` [#380](https://github.com/vmware/go-vcloud-director/pull/380) 808 * Added Rights Bundle management methods `Client.CreateRightsBundle`, `Client.GetAllRightsBundles`, 809 `Client.GetRightsBundleById`, `Client.GetRightsBundleByName`, `RightsBundle.AddRights`, `RightsBundle.Delete`, 810 `RightsBundle.GetRights`, `RightsBundle.GetTenants`, `RightsBundle.PublishAllTenants`, `RightsBundle.PublishTenants`, 811 `RightsBundle.RemoveAllRights`, `RightsBundle.RemoveRights`, `RightsBundle.ReplacePublishedTenants`, 812 `RightsBundle.UnpublishAllTenants`, `RightsBundle.UnpublishTenants`, `RightsBundle.Update`, `RightsBundle.UpdateRights` 813 [#380](https://github.com/vmware/go-vcloud-director/pull/380) 814 * Added Role managemnt methods `AdminOrg.GetAllRoles`, `AdminOrg.GetRoleById`, `AdminOrg.GetRoleByName`, 815 `Client.GetAllRoles`, `Role.AddRights`, `Role.GetRights`, `Role.RemoveAllRights`, `Role.RemoveRights`, `Role.UpdateRights` 816 [#380](https://github.com/vmware/go-vcloud-director/pull/380) 817 * Added convenience function `FindMissingImpliedRights` [#380](https://github.com/vmware/go-vcloud-director/pull/380) 818 * Added methods `NsxtEdgeGateway.UpdateNsxtFirewall()`, `NsxtEdgeGateway.GetNsxtFirewall()`, `nsxtFirewall.DeleteAllRules()`, 819 `nsxtFirewall.DeleteRuleById` [#381](https://github.com/vmware/go-vcloud-director/pull/381) 820 * Added NSX-T NAT support with types `NsxtNatRule` and `types.NsxtNatRule` as well as methods `edge.GetAllNsxtNatRules`, 821 `edge.GetNsxtNatRuleByName`, `edge.GetNsxtNatRuleById`, `edge.CreateNatRule`, `nsxtNatRule.Update`, `nsxtNatRule.Delete`, 822 `nsxtNatRule.IsEqualTo` [#382](https://github.com/vmware/go-vcloud-director/pull/382) 823 * Added `NsxtIpSecVpnTunnel` and `types.NsxtIpSecVpnTunnel` for NSX-T IPsec VPN Tunnel configuration 824 [#385](https://github.com/vmware/go-vcloud-director/pull/385) 825 826 BREAKING CHANGES: 827 * Added parameter `description` to method `vdc.ComposeRawVapp` [#372](https://github.com/vmware/go-vcloud-director/pull/372) 828 * Added methods `vapp.Rename`, `vapp.UpdateDescription`, `vapp.UpdateNameDescription` [#372](https://github.com/vmware/go-vcloud-director/pull/372) 829 * Field `types.Disk.Size` is replaced with `types.Disk.SizeMb` as size in Kilobytes is not supported in V33.0 830 [#371](https://github.com/vmware/go-vcloud-director/pull/371) 831 * Field `types.DiskRecordType.SizeB` is replaced with `types.DiskRecordType.SizeMb` as size in Kilobytes is not 832 supported in V33.0 [#371](https://github.com/vmware/go-vcloud-director/pull/371) 833 * Added parameter `additionalHeader map[string]string` to functions `Client.OpenApiDeleteItem`, `Client.OpenApiGetAllItems`, 834 `Client.OpenApiGetItem`, `Client.OpenApiPostItem`, `Client.OpenApiPutItem`, `Client.OpenApiPutItemAsync`, 835 `Client.OpenApiPutItemSync` [#380](https://github.com/vmware/go-vcloud-director/pull/380) 836 * Renamed functions `GetOpenApiRoleById` -> `GetRoleById`, `GetOpenApiRoleByName` -> `GetRoleByName`, 837 `GetAllOpenApiRoles` -> `GetAllRoles` [#380](https://github.com/vmware/go-vcloud-director/pull/380) 838 839 IMPROVEMENTS: 840 * Only send xml.Header when payload is not empty (some WAFs block empty requests with XML header) 841 [#367](https://github.com/vmware/go-vcloud-director/pull/367) 842 * Improved test entity cleanup to find standalone VMs in any VDC (not only default NSX-V one) 843 [#368](https://github.com/vmware/go-vcloud-director/pull/368) 844 * Improved test entity cleanup to allow specifying parent VDC for vApp removals 845 [#368](https://github.com/vmware/go-vcloud-director/pull/368) 846 * Cleanup a few unnecessary type conversions detected by new staticcheck version 847 [#381](https://github.com/vmware/go-vcloud-director/pull/381) 848 * Improved `OpenApiGetAllItems` to still follow pages in VCD endpoints with BUG which don't return 'nextPage' link for 849 pagination [#378](https://github.com/vmware/go-vcloud-director/pull/378) 850 * Improved LDAP container related tests to use correct port mapping for latest LDAP container version 851 [#378](https://github.com/vmware/go-vcloud-director/pull/378) 852 853 854 ## 2.11.0 (March 10, 2021) 855 856 * Added structure and methods to handle Org VDC networks using OpenAPI - `OpenApiOrgVdcNetwork`. It supports VCD 9.7+ 857 for all networks types for NSX-V and NSX-T backed VDCs [#354](https://github.com/vmware/go-vcloud-director/pull/354) 858 * Added `NsxtImportableSwitch` structure with `GetNsxtImportableSwitchByName` and `GetAllNsxtImportableSwitches` to 859 lookup NSX-T segments for use in NSX-T Imported networks [#354](https://github.com/vmware/go-vcloud-director/pull/354) 860 * Added `vdc.IsNsxt` and `vdc.IsNsxv` methods to verify if VDC is backed by NSX-T or NSX-V [#354](https://github.com/vmware/go-vcloud-director/pull/354) 861 * Added types `types.CreateVmParams` and `types.InstantiateVmTemplateParams` [#356](https://github.com/vmware/go-vcloud-director/pull/356) 862 * Added VDC methods `CreateStandaloneVMFromTemplate`, `CreateStandaloneVMFromTemplateAsync` `CreateStandaloneVm`, 863 `CreateStandaloneVmAsync` [#356](https://github.com/vmware/go-vcloud-director/pull/356) 864 * Added VDC methods `QueryVmByName`, `QueryVmById`, `QueryVmList` [#356](https://github.com/vmware/go-vcloud-director/pull/356) 865 * Added VM methods `Delete`, `DeleteAsync` [#356](https://github.com/vmware/go-vcloud-director/pull/356) 866 * Added VDC methods `GetOpenApiOrgVdcNetworkDhcp`, `UpdateOpenApiOrgVdcNetworkDhcp` and `DeleteOpenApiOrgVdcNetworkDhcp` 867 for OpenAPI management of Org Network DHCP configurations [#357](https://github.com/vmware/go-vcloud-director/pull/357) 868 869 BREAKING CHANGES: 870 * Renamed `types.VM` to `types.Vm` to facilitate implementation of standalone VM 871 [#356](https://github.com/vmware/go-vcloud-director/pull/356) 872 873 BUGS FIXED: 874 * Converted IPAddress field for IPAddresses struct to array [#350](https://github.com/vmware/go-vcloud-director/pull/350) 875 876 IMPROVEMENTS: 877 * Added generic OpenAPI entity cleanup for tests [348](https://github.com/vmware/go-vcloud-director/pull/348) 878 879 ## 2.10.0 (December 18, 2020) 880 881 * Added functions to retrieve and use VCD version `client.GetVcdVersion`, `client.GetVcdShortVersion`, `client.GetVcdFullVersion`, `client.VersionEqualOrGreater` [#339](https://github.com/vmware/go-vcloud-director/pull/339) 882 * Added methods `VM.UpdateStorageProfile`, `VM.UpdateStorageProfileAsync` [#338](https://github.com/vmware/go-vcloud-director/pull/338) 883 * Added methods `adminVdc.UpdateStorageProfile` [#340](https://github.com/vmware/go-vcloud-director/pull/340) 884 * Added transparent support for bearer tokens [#341](https://github.com/vmware/go-vcloud-director/pull/341) 885 * Added transparent connection using `cloudapi/1.0.0/sessions` when access through `api/sessions` is disabled 886 * Added functions `edge.GetLbAppRules`, `edge.GetLbServerPools`, `edge.GetLbAppProfiles`, `edge.GetNsxvNatRules`, `client.GetOrgList` 887 * Exported private function `client.maxSupportedVersion` to `client.MaxSupportedVersion` 888 * Able to upload an OVF without ovf:size defined in File part. Some bug fix for uploading OVA/OVF. [#331](https://github.com/vmware/go-vcloud-director/pull/331) 889 * Add support for handling catalog storage profile (`adminOrg.CreateCatalogWithStorageProfile`, 890 `org.CreateCatalogWithStorageProfile`, `adminCatalog.Update`) [#345](https://github.com/vmware/go-vcloud-director/pull/345) 891 * Add convenience functions `AdminOrg.GetAllStorageProfileReferences`, `AdminOrg.GetStorageProfileReferenceById`, `AdminOrg.GetAllVDCs` [#345](https://github.com/vmware/go-vcloud-director/pull/345) 892 * Added VCD 10.1+ functions `(vdc *Vdc) GetNsxtEdgeClusterByName` and `(vdc *Vdc) GetAllNsxtEdgeClusters` for NSX-T Edge Cluster lookup [#344](https://github.com/vmware/go-vcloud-director/pull/344) 893 * Added VCD 10.1+ NSX-T Edge Gateway management functions `GetNsxtEdgeGatewayById`, `GetNsxtEdgeGatewayByName`, `GetAllNsxtEdgeGateways`, `CreateNsxtEdgeGateway`, `Update`, `Delete` [#344](https://github.com/vmware/go-vcloud-director/pull/344) 894 895 BREAKING CHANGES: 896 897 * type.VdcConfiguration (used for creation) changed the type for storage profile from `[]*VdcStorageProfile` to `[]*VdcStorageProfileConfiguration` 898 899 ## 2.9.0 (October 15, 2020) 900 901 * Improved testing tags isolation [#320](https://github.com/vmware/go-vcloud-director/pull/320) 902 * Added command `make tagverify` to check tags isolation tests [#320](https://github.com/vmware/go-vcloud-director/pull/320) 903 * Added methods `Client.GetAccessControl`, `Client.SetAccessControl`[#329](https://github.com/vmware/go-vcloud-director/pull/329) 904 * Added methods `VApp.GetAccessControl`, `VApp.SetAccessControl`, `VApp.RemoveAccessControl`, `VApp.IsShared` [#329](https://github.com/vmware/go-vcloud-director/pull/329) 905 * Added methods `AdminCatalog.GetAccessControl`, `AdminCatalog.SetAccessControl`, `AdminCatalog.RemoveAccessControl`, `AdminCatalog.IsShared` [#329](https://github.com/vmware/go-vcloud-director/pull/329) 906 * Added methods `Catalog.GetAccessControl`, `Catalog.SetAccessControl`, `Catalog.RemoveAccessControl`, `Catalog.IsShared` [#329](https://github.com/vmware/go-vcloud-director/pull/329) 907 * Added methods `Vdc.GetVappAccessControl`, `AdminOrg.GetCatalogAccessControl`, `Org.GetCatalogAccessControl` [#329](https://github.com/vmware/go-vcloud-director/pull/329) 908 * Added methods `Vdc.QueryVappList`, `Vdc.GetVappList`, `AdminVdc.GetVappList`, `client.GetQueryType` [#329](https://github.com/vmware/go-vcloud-director/pull/329) 909 * Added VM and vApp to search query engine [#329](https://github.com/vmware/go-vcloud-director/pull/329) 910 * Added tenant context for access control methods [#329](https://github.com/vmware/go-vcloud-director/pull/329) 911 * Loosen up `Test_LBAppRule` for invalid application script check to work with different error engine in VCD 10.2 912 [#326](https://github.com/vmware/go-vcloud-director/pull/326) 913 * Update VDC dynamic func to handle API version 35.0 [#327](https://github.com/vmware/go-vcloud-director/pull/327) 914 * Added methods `vm.UpdateVmCpuAndMemoryHotAdd` and `vm.UpdateVmCpuAndMemoryHotAddAsyc` [#324](https://github.com/vmware/go-vcloud-director/pull/324) 915 * Introduce low level OpenAPI client functions `OpenApiGetAllItems`,`OpenApiPostItemSync`,`OpenApiPostItemAsync`, 916 `OpenApiPostItem`, `OpenApiGetItem`, `OpenApiPutItem`, `OpenApiPutItemSync`, `OpenApiPutItemAsync`, 917 `OpenApiDeleteItem`, `OpenApiIsSupported`, `OpenApiBuildEndpoints` 918 [#325](https://github.com/vmware/go-vcloud-director/pull/325), [#333](https://github.com/vmware/go-vcloud-director/pull/333) 919 * Add OVF file upload support in UploadOvf function besides OVA. The input should be OVF file path inside the OVF folder. It will check if input file is XML content type, if yes, skip some OVA steps (like unpacking), if not, keep the old logic. [#323](https://github.com/vmware/go-vcloud-director/pull/323) 920 * Dropped support for VMware Cloud Director 9.5 [#330](https://github.com/vmware/go-vcloud-director/pull/330) 921 * Deprecated Vdc.UploadMediaImage because it no longer works with API V32.0+ [#330](https://github.com/vmware/go-vcloud-director/pull/330) 922 * Add methods `vapp.AddNewVMWithComputePolicy`, `org.GetVdcComputePolicyById`, `adminOrg.GetVdcComputePolicyById`, `org.GetAllVdcComputePolicies`, `adminOrg.GetAllVdcComputePolicies`, `adminOrg.CreateVdcComputePolicy`, `vdcComputePolicy.Update`, `vdcComputePolicy.Delete`, `adminVdc.GetAllAssignedVdcComputePolicies` and `adminVdc.SetAssignedComputePolicies` [#334] (https://github.com/vmware/go-vcloud-director/pull/334) 923 * Introduce NSX-T support for adminOrg.CreateOrgVdc() [#332](https://github.com/vmware/go-vcloud-director/pull/332) 924 * Introduce NSX-T support for external network using OpenAPI endpoint and `ExternalNetworkV2` type methods including `CreateExternalNetworkV2`, 925 `GetExternalNetworkById`, `GetAllExternalNetworks`, `ExternalNetworkV2.Update`, and `ExternalNetworkV2.DELETE` [#335](https://github.com/vmware/go-vcloud-director/pull/335) 926 * Introduce NSX-T Query functions `client.QueryNsxtManagerByName` and `client.GetImportableNsxtTier0RouterByName` [#335](https://github.com/vmware/go-vcloud-director/pull/335) 927 * Add HTTP User-Agent header `go-vcloud-director` to all API calls and allow to customize it using 928 `WithHttpUserAgent` configuration options function [#336](https://github.com/vmware/go-vcloud-director/pull/336) 929 930 ## 2.8.0 (June 30, 2020) 931 932 * Changed signature for `FindAdminCatalogRecords`, which now returns normalized type `[]*types.CatalogRecord` [#298](https://github.com/vmware/go-vcloud-director/pull/298) 933 * Added methods `catalog.QueryVappTemplateList`, `catalog.QueryCatalogItemList`, `client.queryWithMetadataFields`, `client.queryByMetadataFilter` [#298](https://github.com/vmware/go-vcloud-director/pull/298) 934 * Added query engine based on `client.SearchByFilter`, type `FilterDef`, and interface `QueryItem` [#298](https://github.com/vmware/go-vcloud-director/pull/298) 935 * Added methods `adminOrg.QueryCatalogList` and `org.QueryCatalogList` [#298](https://github.com/vmware/go-vcloud-director/pull/298) 936 * Removed code that handled specific cases for API 29.0 and 30.0. This library now supports VCD versions from 9.5 to 10.1 included. 937 * Added `vdc.QueryVappVmTemplate` and changed `vapp.AddNewVMWithStorageProfile` to allow creating VM from VM template. 938 * Enhanced tests command line with flags that can be used instead of environment variables. [#305](https://github.com/vmware/go-vcloud-director/pull/305) 939 * Improve logging security of debug output for API requests and responses [#306](https://github.com/vmware/go-vcloud-director/pull/306) 940 * Append log files by default instead of overwriting. `GOVCD_LOG_OVERWRITE=true` environment 941 variable can set to overwrite log file on every initialization 942 [#307](https://github.com/vmware/go-vcloud-director/pull/307) 943 * Add configuration option `WithSamlAdfs` to `NewVCDClient()` to support SAML authentication using 944 Active Directory Federations Services (ADFS) as IdP using WS-TRUST auth endpoint 945 "/adfs/services/trust/13/usernamemixed" 946 [#304](https://github.com/vmware/go-vcloud-director/pull/304) 947 * Implemented VM affinity rules CRUD: `vdc.CreateVmAffinityRuleAsync`, `vdc. CreateVmAffinityRule`, `vdc.GetAllVmAffinityRuleList`, `vdc.GetVmAffinityRuleList`, `vdc.GetVmAntiAffinityRuleList` 948 `vdc.GetVmAffinityRuleByHref`, `vdc.GetVmAffinityRulesByName`, `vdc.GetVmAffinityRuleById`, `vdc.GetVmAffinityRuleByNameOrId`, `VmAffinityRule.Delete`, `VmAffinityRule.Update`, 949 `VmAffinityRule.SetMandatory`, `VmAffinityRule.SetEnabled`, `VmAffinityRule.Refresh` [#313](https://github.com/vmware/go-vcloud-director/pull/313) 950 * Add method `client.QueryVmList` [#313](https://github.com/vmware/go-vcloud-director/pull/313) 951 * Add support for group management using `CreateGroup`, `GetGroupByHref`, `GetGroupById`, 952 `GetGroupByName`, `GetGroupByNameOrId`, `Delete`, `Update`, `NewGroup` functions [#314](https://github.com/vmware/go-vcloud-director/pull/314) 953 * Add LDAP administration functions for Org `LdapConfigure`, `GetLdapConfiguration`, and `LdapDisable` [#314](https://github.com/vmware/go-vcloud-director/pull/314) 954 * Added methods `vapp.UpdateNetworkFirewallRules`, `vapp.UpdateNetworkFirewallRulesAsync`, `vapp.GetVappNetworkById`, `vapp.GetVappNetworkByName` and `vapp.GetVappNetworkByNameOrId` [#308](https://github.com/vmware/go-vcloud-director/pull/308) 955 * Added methods `vapp.UpdateNetworkNatRulesAsync`, `vapp.UpdateNetworkNatRulesAsync`, `vapp.RemoveAllNetworkFirewallRules` and `vapp.RemoveAllNetworkNatRules` [#316](https://github.com/vmware/go-vcloud-director/pull/316) 956 * Added methods `vapp.UpdateNetworkStaticRouting`, `vapp.UpdateNetworkStaticRoutingAsync` and `vapp.RemoveAllNetworkStaticRoutes` [#318](https://github.com/vmware/go-vcloud-director/pull/318) 957 958 ## 2.7.0 (April 10,2020) 959 960 * Added methods `OrgVdcNetwork.Update`, `OrgVdcNetwork.UpdateAsync`, and `OrgVdcNetwork.Rename` [#292](https://github.com/vmware/go-vcloud-director/pull/292) 961 * Added methods `EdgeGateway.Update` and `EdgeGateway.UpdateAsync` [#292](https://github.com/vmware/go-vcloud-director/pull/292) 962 * Increment vCD API version used from 29.0 to 31.0 963 * Add fields `AdminVdc.UniversalNetworkPoolReference and VM.Media` 964 * Added methods `vapp.AddEmptyVm`, `vapp.AddEmptyVmAsync` and `vdc.QueryAllMedia` [#296](https://github.com/vmware/go-vcloud-director/pull/296) 965 966 NOTES: 967 968 * Improved test in function `deleteVapp()` to avoid deletion errors during test suite run 969 [#297](https://github.com/vmware/go-vcloud-director/pull/297) 970 971 BUGS FIXED: 972 * Fix issue in Queries with vCD 10 version, which do not return network pool or provider VDC[#293](https://github.com/vmware/go-vcloud-director/pull/293) 973 * Session timeout for media, catalog item upload [#294](https://github.com/vmware/go-vcloud-director/pull/294) 974 * Fix `vapp.RemoveNetwork`, `vapp.RemoveNetworkAsync` to use `DELETE` API call instead of update 975 which can apply incorrect remaining vApp network configurations [#299](https://github.com/vmware/go-vcloud-director/pull/299) 976 977 ## 2.6.0 (March 13, 2020) 978 979 * Moved `VCDClient.supportedVersions` to `VCDClient.Client.supportedVersions` [#274](https://github.com/vmware/go-vcloud-director/pull/274) 980 * Added methods `VM.AddInternalDisk`, `VM.GetInternalDiskById`, `VM.DeleteInternalDisk`, `VM.UpdateInternalDisks` and `VM.UpdateInternalDisksAsync` [#272](https://github.com/vmware/go-vcloud-director/pull/272) 981 * Added methods `vdc.GetEdgeGatewayReferenceList` and `catalog.GetVappTemplateByHref` [#278](https://github.com/vmware/go-vcloud-director/pull/278) 982 * Improved functions to not expect XML namespaces provided in argument structure [#284](https://github.com/vmware/go-vcloud-director/pull/284) 983 * Change `int` and `bool` fields from types.VAppTemplateLeaseSettings and VAppLeaseSettings into pointers 984 * Added method `catalog.GetVappTemplateByHref`, and expose methods `vdc.GetEdgeGatewayByHref` and `vdc.GetEdgeGatewayRecordsType` 985 * Added methods `adminOrg.CreateOrgVdc`, `adminOrg.CreateOrgVdcAsync` and improved existing to support Flex VDC model. These new methods are dynamic as they change invocation behind the scenes based on vCD version [#285](https://github.com/vmware/go-vcloud-director/pull/285) 986 * Deprecated functions `adminOrg.CreateVdc` and `adminOrg.CreateVdcWait` [#285](https://github.com/vmware/go-vcloud-director/pull/285) 987 * Added methods `EdgeGateway.GetAllNsxvDhcpLeases()`, `EdgeGateway.GetNsxvActiveDhcpLeaseByMac()` 988 `VM.WaitForDhcpIpByNicIndexes()`, `VM.GetParentVApp()`, `VM.GetParentVdc()` 989 [#283](https://github.com/vmware/go-vcloud-director/pull/283) 990 * `types.GetGuestCustomizationSection` now uses pointers for all bool values to distinguish between empty and false value [#291](https://github.com/vmware/go-vcloud-director/pull/291) 991 * Deprecated functions `Vapp.Customize()` and `VM.Customize()` in favor of `vm.SetGuestCustomizationSection` [#291](https://github.com/vmware/go-vcloud-director/pull/291) 992 * Added methods `vapp.AddNetwork`, `vapp.AddNetworkAsync`, `vapp.AddOrgNetwork`, `vapp.AddOrgNetworkAsync`, `vapp.UpdateNetwork`, `vapp.UpdateNetworkAsync`, `vapp.UpdateOrgNetwork`, `vapp.UpdateOrgNetworkAsync`, `vapp.RemoveNetwork`, `vapp.RemoveNetworkAsync` and `GetUuidFromHref` [#289](https://github.com/vmware/go-vcloud-director/pull/290) 993 * Deprecated functions `vapp.RemoveIsolatedNetwork`, `vapp.AddRAWNetworkConfig` and `vapp.AddIsolatedNetwork` [#289](https://github.com/vmware/go-vcloud-director/pull/290) 994 995 BUGS FIXED: 996 * A data race in catalog/media item upload status reporting [#288](https://github.com/vmware/go-vcloud-director/pull/288) 997 * `Vapp.Customize()` and `VM.Customize()` ignores `changeSid` value and always set it to true [#291](https://github.com/vmware/go-vcloud-director/pull/291) 998 999 ## 2.5.1 (December 12, 2019) 1000 1001 BUGS FIXED: 1002 * Fix a bug where functions `GetAnyVnicIndexByNetworkName` and `GetVnicIndexByNetworkNameAndType` 1003 would not find vNic index when user is authenticated as org admin (not sysadmin) 1004 [#275](https://github.com/vmware/go-vcloud-director/pull/275) 1005 1006 ## 2.5.0 (December 11, 2019) 1007 1008 * Change fields ResourceGuaranteedCpu, VCpuInMhz, IsThinProvision, NetworkPoolReference, 1009 ProviderVdcReference and UsesFastProvisioning in AdminVdc to pointers to allow understand if value 1010 was returned or not. 1011 * Added method VApp.AddNewVMWithStorageProfile that adds a VM with custom storage profile. 1012 * Added command `make static` to run staticcheck on all packages 1013 * Added `make static` to Travis regular checks 1014 * Added ability to connect to the vCD using an authorization token 1015 * Added method `VCDClient.SetToken` 1016 * Added method `VCDClient.GetAuthResponse` 1017 * Added script `scripts/get_token.sh` 1018 * Incremented vCD API version used from 27.0 to 29.0 1019 * Remove fields `VdcEnabled`, `VAppParentHREF`, `VAppParentName`, `HighestSupportedVersion`, `VmToolsVersion`, `TaskHREF`, `TaskStatusName`, `TaskDetails`, `TaskStatus` from `QueryResultVMRecordType` 1020 * Added fields `ID, Type, ContainerName, ContainerID, OwnerName, Owner, NetworkHref, IpAddress, CatalogName, VmToolsStatus, GcStatus, AutoUndeployDate, AutoDeleteDate, AutoUndeployNotified, AutoDeleteNotified, Link, MetaData` to `QueryResultVMRecordType`, `DistributedInterface` to `NetworkConfiguration` and `RegenerateBiosUuid` to `VMGeneralParams` 1021 * Change to pointers `DistributedRoutingEnabled` in `GatewayConfiguration` and 1022 `DistributedInterface` in `NetworkConfiguration` 1023 * Added new field to type `GatewayConfiguration`: `FipsModeEnabled` - 1024 [#267](https://github.com/vmware/go-vcloud-director/pull/267) 1025 * Change bool to bool pointer for fields in type `GatewayConfiguration`: `HaEnabled`, 1026 `UseDefaultRouteForDNSRelay`, `AdvancedNetworkingEnabled` - 1027 [#267](https://github.com/vmware/go-vcloud-director/pull/267) 1028 * Added method `EdgeGateway.GetLbVirtualServers` that gets all virtual servers configured on NSX load balancer. [#266](https://github.com/vmware/go-vcloud-director/pull/266) 1029 * Added method `EdgeGateway.GetLbServerPools` that gets all pools configured on NSX load balancer. [#266](https://github.com/vmware/go-vcloud-director/pull/266) 1030 * Added method `EdgeGateway.GetLbServiceMonitors` that gets all service monitors configured on NSX load balancer. [#266](https://github.com/vmware/go-vcloud-director/pull/266) 1031 * Added field `SubInterface` to `NetworkConfiguration`. [#321](https://github.com/terraform-providers/terraform-provider-vcd/issues/321) 1032 * Added methods `Vdc.FindEdgeGatewayNameByNetwork` and `Vdc.GetNetworkList` 1033 * Added IP set handling functions `CreateNsxvIpSet`, `UpdateNsxvIpSet`, `GetNsxvIpSetByName`, 1034 `GetNsxvIpSetById`, `GetNsxvIpSetByNameOrId`, `GetAllNsxvIpSets`, `DeleteNsxvIpSetById`, 1035 `DeleteNsxvIpSetByName` [#269](https://github.com/vmware/go-vcloud-director/pull/269) 1036 * Added `UpdateDhcpRelay`, `GetDhcpRelay` and `ResetDhcpRelay` methods for Edge Gatway DHCP relay 1037 management [#271](https://github.com/vmware/go-vcloud-director/pull/271) 1038 * Added methods which allow override API versions `NewRequestWitNotEncodedParamsWithApiVersion`, 1039 `ExecuteTaskRequestWithApiVersion`, `ExecuteRequestWithoutResponseWithApiVersion`, 1040 `ExecuteRequestWithApiVersion` [#274](https://github.com/vmware/go-vcloud-director/pull/274) 1041 1042 BUGS FIXED: 1043 * Remove parentheses from filtering since they weren't treated correctly in some environment [#256] 1044 (https://github.com/vmware/go-vcloud-director/pull/256) 1045 * Take into account all subnets (SubnetParticipation) on edge gateway interface instead of the first 1046 one [#260](https://github.com/vmware/go-vcloud-director/pull/260) 1047 * Fix `OrgVdcNetwork` data structure to retrieve description. Previously, the description would not be retrieved because it was misplaced in the sequence. 1048 1049 ## 2.4.0 (October 28, 2019) 1050 1051 * Deprecated functions `GetOrgByName` and `GetAdminOrgByName` 1052 * Deprecated methods `AdminOrg.FetchUserByName`, `AdminOrg.FetchUserById`, `AdminOrg.FetchUserByNameOrId`, `AdminOrg.GetRole`. 1053 * Added method `VCDClient.GetOrgByName` and related `GetOrgById`, `GetOrgByNameOrId` 1054 * Added method `VCDClient.GetAdminOrgByName` and related `GetAdminOrgById`, `GetAdminOrgByNameOrId` 1055 * Added methods `AdminOrg.GetUserByName`, `GetUserById`, `GetUserByNameOrId`, `GetRoleReference`. 1056 * Added method `VCDClient.QueryProviderVdcs` 1057 * Added method `VCDClient.QueryProviderVdcStorageProfiles` 1058 * Added method `VCDClient.QueryNetworkPools` 1059 * Added get/add/delete metadata functions for vApp template and media item [#225](https://github.com/vmware/go-vcloud-director/pull/225). 1060 * Added `UpdateNetworkConnectionSection` for updating VM network configuration [#229](https://gifiltering which in some env wasn'tthub.com/vmware/go-vcloud-director/pull/229) 1061 * Added `PowerOnAndForceCustomization`, `GetGuestCustomizationStatus`, `BlockWhileGuestCustomizationStatus` [#229](https://github.com/vmware/go-vcloud-director/pull/229) 1062 * Deprecated methods `AdminOrg.GetAdminVdcByName`, `AdminOrg.GetVdcByName`, `AdminOrg.FindAdminCatalog`, `AdminOrg.FindCatalog` 1063 * Deprecated methods `Catalog.FindCatalogItem`, `Org.FindCatalog`, `Org.GetVdcByName` 1064 * Deprecated function `GetExternalNetwork` 1065 * Added methods `Org.GetCatalogByName` and related `Org.GetCatalogById`, `GetCatalogItemByNameOrId` 1066 * Added methods `VCDClient.GetExternalNetworkByName` and related `GetExternalNetworkById` and `GetExternalNetworkByNameOrId` 1067 * Added methods `AdminOrg.GetCatalogByName` and related `Org.GetCatalogById`, `GetCatalogByNameOrId` 1068 * Added methods `AdminOrg.GetAdminCatalogByName` and related `Org.GetAdminCatalogById`, `GetAdminCatalogByNameOrId` 1069 * Added methods `Org.GetVDCByName` and related `GetVDCById`, `GetVDCByNameOrId` 1070 * Added methods `AdminOrg.GetVDCByName` and related `GetVDCById`, `GetVDCByNameOrId` 1071 * Added methods `AdminOrg.GetAdminVDCByName` and related `GetAdminVDCById`, `GetAdminVDCByNameOrId` 1072 * Added methods `Catalog.Refresh` and `AdminCatalog.Refresh` 1073 * Added method `vm.GetVirtualHardwareSection` to retrieve virtual hardware items [#200](https://github.com/vmware/go-vcloud-director/pull/200) 1074 * Added methods `vm.SetProductSectionList` and `vm.GetProductSectionList` allowing to manipulate VM 1075 guest properties [#235](https://github.com/vmware/go-vcloud-director/pull/235) 1076 * Added methods `vapp.SetProductSectionList` and `vapp.GetProductSectionList` allowing to manipulate 1077 vApp guest properties [#235](https://github.com/vmware/go-vcloud-director/pull/235) 1078 * Added method GetStorageProfileByHref 1079 * Added methods `CreateNsxvNatRule()`, `UpdateNsxvNatRule()`, `GetNsxvNatRuleById()`, `DeleteNsxvNatRuleById()` 1080 which use the proxied NSX-V API of advanced edge gateway for handling NAT rules [#241](https://github.com/vmware/go-vcloud-director/pull/241) 1081 * Added methods `GetVnicIndexByNetworkNameAndType()` and `GetNetworkNameAndTypeByVnicIndex()` [#241](https://github.com/vmware/go-vcloud-director/pull/241) 1082 * Added methods `Vdc.GetVappByHref`, `Vdc.GetVAppByName` and related `GetVAppById`, `GetVAppByNameOrId` 1083 * Added methods `Client.GetVMByHref` `Vapp.GetVAMByName` and related `GetVMById`, `GetVAMByNameOrId` 1084 * Deprecated methods `Client.FindVMByHREF`, `Vdc.FindVMByName`, `Vdc.FindVAppByID`, and `Vdc.FindVAppByName` 1085 * Added methods `Vm.GetGuestCustomizationSection` and `Vm.SetGuestCustomizationSection` 1086 * Added methods `CreateNsxvFirewallRule()`, `UpdateNsxvFirewallRule()`, `GetNsxvFirewallRuleById()`, `DeleteNsxvFirewallRuleById()` 1087 which use the proxied NSX-V API of advanced edge gateway for handling firewall rules [#247](https://github.com/vmware/go-vcloud-director/pull/247) 1088 * Added methods `GetFirewallParams()`, `UpdateFirewallParams()` for changing global firewall settings [#247](https://github.com/vmware/go-vcloud-director/pull/247) 1089 * Added method `GetAnyVnicIndexByNetworkName()` to for easier interface (vNic) lookup in edge gateway [#247](https://github.com/vmware/go-vcloud-director/pull/247) 1090 * Added method `ExecuteParamRequestWithCustomError()` which adds query parameter support on top of `ExecuteRequestWithCustomError()` [#247](https://github.com/vmware/go-vcloud-director/pull/247) 1091 * Deprecated methods `VDC.FindDiskByHREF` and `FindDiskByHREF` 1092 * Added methods `VDC.GetDiskByHref` `VDC.GetDisksByName` and related `GetDiskById` 1093 * Added new methods `Catalog.QueryMedia`, `Catalog.GetMediaByName`, `Catalog.GetMediaById`, `Catalog.GetMediaByNameOrId`, `AdminCatalog.QueryMedia`, `AdminCatalog.GetMediaByName`, `AdminCatalog.GetMediaById`, `AdminCatalog.GetMediaByNameOrId`, `MediaRecord.Refresh`, `MediaRecord.Delete`, `MediaRecord.GetMetadata`, `MediaRecord.AddMetadata`, `MediaRecord.AddMetadataAsync`, `MediaRecord.DeleteMetadata`, `MediaRecord.DeleteMetadataAsync`, `Media.GetMetadata`, `Media.AddMetadata`, `Media.AddMetadataAsync`, `Media.DeleteMetadata`, `Media.DeleteMetadataAsync` [#245](https://github.com/vmware/go-vcloud-director/pull/245) 1094 * Deprecated methods `Vdc.FindMediaImage`, `MediaItem`, `RemoveMediaImageIfExists`, `MediaItem.Delete`, `FindMediaAsCatalogItem`, `*MediaItem.Refresh`, `MediaItem.GetMetadata`, `MediaItem.AddMetadata`, `MediaItem.AddMetadataAsync`, `MediaItem.DeleteMetadata`, `MediaItem.DeleteMetadataAsync` [#245](https://github.com/vmware/go-vcloud-director/pull/245) 1095 * Added method `VDC.QueryDisks` [#255](https://github.com/vmware/go-vcloud-director/pull/255) 1096 1097 IMPROVEMENTS: 1098 1099 * Move methods for `AdminOrg`, `AdminCatalog`, `AdminVdc` to new files `adminorg.go`, 1100 `admincatalog.go`, `adminvdc.go`. 1101 * Added default value for HTTP timeout (600s) which is configurable 1102 1103 BUGS FIXED: 1104 1105 * Fix bug in AdminOrg.Update, where OrgGeneralSettings would not update correctly if it contained only one property 1106 * Fix bug in External network creation and get when description wasn't populated. 1107 * Fix bug in VDC creation when name with space caused an error 1108 * Fix bug in Org Delete, which would remove catalogs shared from other organizations. 1109 * Fix Vcd.StorageProfiles type from array to single. 1110 * Fix AdminOrg.CreateUserSimple, where the Telephone field was ignored. 1111 1112 ## 2.3.1 (July 29, 2019) 1113 1114 BUG FIXES: 1115 1116 * Remove `omitempty` struct tags from load balancer component boolean fields to allow sending `false` values to API [#222](https://github.com/vmware/go-vcloud-director/pull/222) 1117 1118 ## 2.3.0 (July 26, 2019) 1119 1120 * Added edge gateway create/delete functions [#130](https://github.com/vmware/go-vcloud-director/issues/130). 1121 * Added edge gateway global load balancer configuration support (e.g. enable/disable) [#219](https://github.com/vmware/go-vcloud-director/pull/219) 1122 * Added load balancer service monitor [#196](https://github.com/vmware/go-vcloud-director/pull/196) 1123 * Added load balancer server pool [#205](https://github.com/vmware/go-vcloud-director/pull/205) 1124 * Added load balancer application profile [#208](https://github.com/vmware/go-vcloud-director/pull/208) 1125 * Added load balancer application rule [#212](https://github.com/vmware/go-vcloud-director/pull/212) 1126 * Added load balancer virtual server [#215](https://github.com/vmware/go-vcloud-director/pull/215) 1127 * Added functions for refreshing, getting and update Org VDC [#206](https://github.com/vmware/go-vcloud-director/pull/206) 1128 * Added VDC meta data create/get/delete functions [#203](https://github.com/vmware/go-vcloud-director/pull/203) 1129 * Added org user create/delete/update functions [#18](https://github.com/vmware/go-vcloud-director/issues/18) 1130 * Added load balancer application profile [#208](https://github.com/vmware/go-vcloud-director/pull/208) 1131 * Added edge gateway SNAT/DNAT rule functions which support org VDC network and external network [#225](https://github.com/terraform-providers/terraform-provider-vcd/issues/225) 1132 * Added edge gateway SNAT/DNAT rule functions which work with IDs [#244](https://github.com/terraform-providers/terraform-provider-vcd/issues/244) 1133 1134 ## 2.2.0 (May 15, 2019) 1135 1136 FEATURES: 1137 1138 * Added external network get/create/delete functions 1139 * Added metadata add/remove functions to VM. 1140 * Added ability to do vCD version checks and comparison [#174](https://github.com/vmware/go-vcloud-director/pull/174) 1141 using VCDClient.APIVCDMaxVersionIs(string) and VCDClient.APIClientVersionIs(string). 1142 * Added ability to override currently used vCD API version WithAPIVersion(string) [#174](https://github.com/vmware/go-vcloud-director/pull/174). 1143 * Added ability to enable nested hypervisor option for VM with VM.ToggleNestedHypervisor(bool) [#219](https://github.com/terraform-providers/terraform-provider-vcd/issues/219). 1144 1145 1146 BREAKING CHANGES: 1147 1148 * vApp metadata now is attached to the vApp rather to first VM in vApp. 1149 * vApp metadata is no longer added to first VM in vApp it will be added to vApp directly instead. 1150 1151 IMPROVEMENTS: 1152 * Refactored code by introducing helper function to handle API calls. New functions ExecuteRequest, ExecuteTaskRequest, ExecuteRequestWithoutResponse 1153 * Added authorization request header for media file and catalog item upload 1154 * Tests files are now all tagged. Running them through Makefile works as before, but manual execution requires specific tags. Run `go test -v .` for tags list. 1155 1156 ## 2.1.0 (March 21, 2019) 1157 1158 ARCHITECTURAL: 1159 1160 * Project switched to using Go modules. It is worth having a 1161 look at [README.md](README.md) to understand how Go modules impact build and development. 1162 1163 FEATURES: 1164 1165 * New insert and eject media functions 1166 1167 IMPROVEMENTS: 1168 1169 * vApp vapp.PowerOn() implicitly waits for vApp to exit "UNRESOLVED" state which occurs shortly after creation and causes vapp.PowerOn() failure. 1170 * VM has new functions which allows to configure cores for CPU. VM.ChangeCPUCountWithCore() 1171 1172 BREAKING CHANGES: 1173 1174 * Deprecate vApp.ChangeCPUCountWithCore() and vApp.ChangeCPUCount()