Skip to content

Commit 775d6ec

Browse files
authored
Add MergeMetadata and MergeMetadataAsync functions for metadata (#473)
Also refactor metadata CRUD functions Signed-off-by: abarreiro <abarreiro@vmware.com>
1 parent 9667903 commit 775d6ec

File tree

5 files changed

+885
-1054
lines changed

5 files changed

+885
-1054
lines changed

.changes/v2.16.0/473-features.md

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
* Added `AdminCatalog.MergeMetadata`,`AdminCatalog.MergeMetadataAsync`, `AdminOrg.MergeMetadata`, `AdminOrg.MergeMetadataAsync`,
2+
`CatalogItem.MergeMetadata`, `CatalogItem.MergeMetadataAsync`, `Disk.MergeMetadata`, `Disk.MergeMetadataAsync`, `Media.MergeMetadata`,
3+
`Media.MergeMetadataAsync`, `MediaRecord.MergeMetadata`, `MediaRecord.MergeMetadataAsync`, `OpenAPIOrgVdcNetwork.MergeMetadata`,
4+
`OpenAPIOrgVdcNetwork.MergeMetadataAsync`, `OrgVDCNetwork.MergeMetadata`, `OrgVDCNetwork.MergeMetadataAsync`,
5+
`VApp.MergeMetadata`, `VApp.MergeMetadataAsync`, `VAppTemplate.MergeMetadata`, `VAppTemplate.MergeMetadataAsync`,
6+
`VM.MergeMetadata`, `VM.MergeMetadataAsync`, `Vdc.MergeMetadata`, `Vdc.MergeMetadataAsync` to merge metadata,
7+
which both updates existing metadata with same key and adds new entries for the non-existent ones [GH-473]

govcd/api.go

+5
Original file line numberDiff line numberDiff line change
@@ -768,6 +768,11 @@ func (client *Client) RemoveProvidedCustomHeaders(values map[string]string) {
768768
}
769769
}
770770

771+
// Retrieves the administrator URL of a given HREF
772+
func getAdminURL(href string) string {
773+
return strings.ReplaceAll(href, "/api/", "/api/admin/")
774+
}
775+
771776
// ---------------------------------------------------------------------
772777
// The following functions are needed to avoid strict Coverity warnings
773778
// ---------------------------------------------------------------------

govcd/api_vcd_test.go

+7-14
Original file line numberDiff line numberDiff line change
@@ -1703,28 +1703,21 @@ func (vcd *TestVCD) findFirstVapp() VApp {
17031703
return VApp{}
17041704
}
17051705
wantedVapp := vcd.vapp.VApp.Name
1706-
vappName := ""
1707-
for _, res := range vdc.Vdc.ResourceEntities {
1708-
for _, item := range res.ResourceEntity {
1709-
// Finding a named vApp, if it was defined in config
1710-
if wantedVapp != "" {
1711-
if item.Name == wantedVapp {
1712-
vappName = item.Name
1713-
break
1714-
}
1715-
} else {
1716-
// Otherwise, we get the first vApp from the vDC list
1706+
if wantedVapp == "" {
1707+
// As no vApp is defined in config, we search for one randomly
1708+
for _, res := range vdc.Vdc.ResourceEntities {
1709+
for _, item := range res.ResourceEntity {
17171710
if item.Type == "application/vnd.vmware.vcloud.vApp+xml" {
1718-
vappName = item.Name
1711+
wantedVapp = item.Name
17191712
break
17201713
}
17211714
}
17221715
}
17231716
}
1724-
if wantedVapp == "" {
1717+
vapp, err := vdc.GetVAppByName(wantedVapp, false)
1718+
if err != nil {
17251719
return VApp{}
17261720
}
1727-
vapp, _ := vdc.GetVAppByName(vappName, false)
17281721
return *vapp
17291722
}
17301723

0 commit comments

Comments
 (0)