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

     1  /*
     2   * Copyright 2022 VMware, Inc.  All rights reserved.  Licensed under the Apache v2 License.
     3   */
     4  
     5  package govcd
     6  
     7  import (
     8  	"fmt"
     9  	"net/http"
    10  	"strings"
    11  
    12  	"github.com/vmware/go-vcloud-director/v2/types/v56"
    13  )
    14  
    15  // All functions here should not be used as they are deprecated in favor of those present in "metadata_v2".
    16  // Remove this file once go-vcloud-director v3.0 is released.
    17  
    18  // AddMetadataEntryByHref adds metadata typedValue and key/value pair provided as input to the given resource reference,
    19  // then waits for the task to finish.
    20  // Deprecated: Use VCDClient.AddMetadataEntryWithVisibilityByHref instead
    21  func (vcdClient *VCDClient) AddMetadataEntryByHref(href, typedValue, key, value string) error {
    22  	task, err := vcdClient.AddMetadataEntryByHrefAsync(href, typedValue, key, value)
    23  	if err != nil {
    24  		return err
    25  	}
    26  	return task.WaitTaskCompletion()
    27  }
    28  
    29  // AddMetadataEntryByHrefAsync adds metadata typedValue and key/value pair provided as input to the given resource reference
    30  // and returns the task.
    31  // Deprecated: Use VCDClient.AddMetadataEntryWithVisibilityByHrefAsync instead.
    32  func (vcdClient *VCDClient) AddMetadataEntryByHrefAsync(href, typedValue, key, value string) (Task, error) {
    33  	return addMetadataDeprecated(&vcdClient.Client, typedValue, key, value, href)
    34  }
    35  
    36  // MergeMetadataByHrefAsync merges metadata provided as a key-value map of type `typedValue` with the already present in VCD,
    37  // and returns the task.
    38  // Deprecated: Use VCDClient.MergeMetadataWithVisibilityByHrefAsync instead.
    39  func (vcdClient *VCDClient) MergeMetadataByHrefAsync(href, typedValue string, metadata map[string]interface{}) (Task, error) {
    40  	return mergeAllMetadataDeprecated(&vcdClient.Client, typedValue, metadata, href)
    41  }
    42  
    43  // MergeMetadataByHref merges metadata provided as a key-value map of type `typedValue` with the already present in VCD,
    44  // then waits for the task to complete.
    45  func (vcdClient *VCDClient) MergeMetadataByHref(href, typedValue string, metadata map[string]interface{}) error {
    46  	task, err := vcdClient.MergeMetadataByHrefAsync(href, typedValue, metadata)
    47  	if err != nil {
    48  		return err
    49  	}
    50  	return task.WaitTaskCompletion()
    51  }
    52  
    53  // DeleteMetadataEntryByHref deletes metadata from the given resource reference, depending on key provided as input
    54  // and waits for the task to finish.
    55  // Deprecated: Use VCDClient.DeleteMetadataEntryWithDomainByHref
    56  func (vcdClient *VCDClient) DeleteMetadataEntryByHref(href, key string) error {
    57  	task, err := vcdClient.DeleteMetadataEntryByHrefAsync(href, key)
    58  	if err != nil {
    59  		return err
    60  	}
    61  
    62  	return task.WaitTaskCompletion()
    63  }
    64  
    65  // DeleteMetadataEntryByHrefAsync deletes metadata from the given resource reference, depending on key provided as input
    66  // and returns a task.
    67  // Deprecated: Use VCDClient.DeleteMetadataEntryWithDomainByHrefAsync
    68  func (vcdClient *VCDClient) DeleteMetadataEntryByHrefAsync(href, key string) (Task, error) {
    69  	return deleteMetadata(&vcdClient.Client, href, "", key, false)
    70  }
    71  
    72  // AddMetadataEntry adds VM metadata typedValue and key/value pair provided as input
    73  // and waits for the task to finish.
    74  // Deprecated: Use VM.AddMetadataEntryWithVisibility instead
    75  func (vm *VM) AddMetadataEntry(typedValue, key, value string) error {
    76  	task, err := vm.AddMetadataEntryAsync(typedValue, key, value)
    77  	if err != nil {
    78  		return err
    79  	}
    80  
    81  	err = task.WaitTaskCompletion()
    82  	if err != nil {
    83  		return err
    84  	}
    85  
    86  	err = vm.Refresh()
    87  	if err != nil {
    88  		return err
    89  	}
    90  
    91  	return nil
    92  }
    93  
    94  // AddMetadataEntryAsync adds VM metadata typedValue and key/value pair provided as input
    95  // and returns the task.
    96  // Deprecated: Use VM.AddMetadataEntryWithVisibilityAsync instead
    97  func (vm *VM) AddMetadataEntryAsync(typedValue, key, value string) (Task, error) {
    98  	return addMetadataDeprecated(vm.client, typedValue, key, value, vm.VM.HREF)
    99  }
   100  
   101  // MergeMetadataAsync merges VM metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   102  // then returns the task.
   103  // Deprecated: Use VM.MergeMetadataWithMetadataValuesAsync instead
   104  func (vm *VM) MergeMetadataAsync(typedValue string, metadata map[string]interface{}) (Task, error) {
   105  	return mergeAllMetadataDeprecated(vm.client, typedValue, metadata, vm.VM.HREF)
   106  }
   107  
   108  // MergeMetadata merges VM metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   109  // then waits for the task to complete.
   110  // Deprecated: Use VM.MergeMetadataWithMetadataValues
   111  func (vm *VM) MergeMetadata(typedValue string, metadata map[string]interface{}) error {
   112  	task, err := vm.MergeMetadataAsync(typedValue, metadata)
   113  	if err != nil {
   114  		return err
   115  	}
   116  	return task.WaitTaskCompletion()
   117  }
   118  
   119  // DeleteMetadataEntry deletes VM metadata by key provided as input and waits for the task to finish.
   120  // Deprecated: Use VM.DeleteMetadataEntryWithDomain instead
   121  func (vm *VM) DeleteMetadataEntry(key string) error {
   122  	task, err := vm.DeleteMetadataEntryAsync(key)
   123  	if err != nil {
   124  		return err
   125  	}
   126  
   127  	err = task.WaitTaskCompletion()
   128  	if err != nil {
   129  		return err
   130  	}
   131  
   132  	err = vm.Refresh()
   133  	if err != nil {
   134  		return err
   135  	}
   136  
   137  	return nil
   138  }
   139  
   140  // DeleteMetadataEntryAsync deletes VM metadata depending on key provided as input
   141  // and returns the task.
   142  // Deprecated: Use VM.DeleteMetadataEntryWithDomainAsync instead
   143  func (vm *VM) DeleteMetadataEntryAsync(key string) (Task, error) {
   144  	return deleteMetadata(vm.client, vm.VM.HREF, vm.VM.Name, key, false)
   145  }
   146  
   147  // AddMetadataEntry adds VDC metadata typedValue and key/value pair provided as input
   148  // and waits for the task to finish.
   149  // Note: Requires system administrator privileges.
   150  // Deprecated: Use AdminVdc.AddMetadataEntryWithVisibility instead
   151  func (vdc *Vdc) AddMetadataEntry(typedValue, key, value string) error {
   152  	task, err := vdc.AddMetadataEntryAsync(typedValue, key, value)
   153  	if err != nil {
   154  		return err
   155  	}
   156  
   157  	err = task.WaitTaskCompletion()
   158  	if err != nil {
   159  		return err
   160  	}
   161  
   162  	err = vdc.Refresh()
   163  	if err != nil {
   164  		return err
   165  	}
   166  
   167  	return nil
   168  }
   169  
   170  // AddMetadataEntry adds VDC metadata typedValue and key/value pair provided as input
   171  // and waits for the task to finish.
   172  // Deprecated: Use AdminVdc.AddMetadataEntryWithVisibility instead
   173  func (adminVdc *AdminVdc) AddMetadataEntry(typedValue, key, value string) error {
   174  	task, err := adminVdc.AddMetadataEntryAsync(typedValue, key, value)
   175  	if err != nil {
   176  		return err
   177  	}
   178  
   179  	return task.WaitTaskCompletion()
   180  }
   181  
   182  // AddMetadataEntryAsync adds VDC metadata typedValue and key/value pair provided as input and returns the task.
   183  // Note: Requires system administrator privileges.
   184  // Deprecated: Use AdminVdc.AddMetadataEntryWithVisibilityAsync instead
   185  func (vdc *Vdc) AddMetadataEntryAsync(typedValue, key, value string) (Task, error) {
   186  	return addMetadataDeprecated(vdc.client, typedValue, key, value, getAdminURL(vdc.Vdc.HREF))
   187  }
   188  
   189  // AddMetadataEntryAsync adds AdminVdc metadata typedValue and key/value pair provided as input and returns the task.
   190  // Deprecated: Use AdminVdc.AddMetadataEntryWithVisibilityAsync instead
   191  func (adminVdc *AdminVdc) AddMetadataEntryAsync(typedValue, key, value string) (Task, error) {
   192  	return addMetadataDeprecated(adminVdc.client, typedValue, key, value, adminVdc.AdminVdc.HREF)
   193  }
   194  
   195  // MergeMetadataAsync merges VDC metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   196  // then waits for the task to complete.
   197  // Note: Requires system administrator privileges.
   198  // Deprecated: Use AdminVdc.MergeMetadataWithMetadataValuesAsync
   199  func (vdc *Vdc) MergeMetadataAsync(typedValue string, metadata map[string]interface{}) (Task, error) {
   200  	return mergeAllMetadataDeprecated(vdc.client, typedValue, metadata, getAdminURL(vdc.Vdc.HREF))
   201  }
   202  
   203  // MergeMetadataAsync merges AdminVdc metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   204  // then waits for the task to complete.
   205  // Deprecated: Use AdminVdc.MergeMetadataWithMetadataValuesAsync
   206  func (adminVdc *AdminVdc) MergeMetadataAsync(typedValue string, metadata map[string]interface{}) (Task, error) {
   207  	return mergeAllMetadataDeprecated(adminVdc.client, typedValue, metadata, adminVdc.AdminVdc.HREF)
   208  }
   209  
   210  // MergeMetadata merges VDC metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   211  // then waits for the task to complete.
   212  // Note: Requires system administrator privileges.
   213  // Deprecated: Use AdminVdc.MergeMetadataWithMetadataValues
   214  func (vdc *Vdc) MergeMetadata(typedValue string, metadata map[string]interface{}) error {
   215  	task, err := vdc.MergeMetadataAsync(typedValue, metadata)
   216  	if err != nil {
   217  		return err
   218  	}
   219  	return task.WaitTaskCompletion()
   220  }
   221  
   222  // MergeMetadata merges AdminVdc metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   223  // then waits for the task to complete.
   224  // Deprecated: Use AdminVdc.MergeMetadataWithMetadataValues
   225  func (adminVdc *AdminVdc) MergeMetadata(typedValue string, metadata map[string]interface{}) error {
   226  	task, err := adminVdc.MergeMetadataAsync(typedValue, metadata)
   227  	if err != nil {
   228  		return err
   229  	}
   230  	return task.WaitTaskCompletion()
   231  }
   232  
   233  // DeleteMetadataEntry deletes VDC metadata by key provided as input and waits for
   234  // the task to finish.
   235  // Note: Requires system administrator privileges.
   236  // Deprecated: Use AdminVdc.DeleteMetadataEntryWithDomain
   237  func (vdc *Vdc) DeleteMetadataEntry(key string) error {
   238  	task, err := vdc.DeleteMetadataEntryAsync(key)
   239  	if err != nil {
   240  		return err
   241  	}
   242  
   243  	err = task.WaitTaskCompletion()
   244  	if err != nil {
   245  		return err
   246  	}
   247  
   248  	err = vdc.Refresh()
   249  	if err != nil {
   250  		return err
   251  	}
   252  
   253  	return nil
   254  }
   255  
   256  // DeleteMetadataEntry deletes AdminVdc metadata by key provided as input and waits for
   257  // the task to finish.
   258  // Note: Requires system administrator privileges.
   259  // Deprecated: Use AdminVdc.DeleteMetadataEntryWithDomain
   260  func (adminVdc *AdminVdc) DeleteMetadataEntry(key string) error {
   261  	task, err := adminVdc.DeleteMetadataEntryAsync(key)
   262  	if err != nil {
   263  		return err
   264  	}
   265  
   266  	err = task.WaitTaskCompletion()
   267  	if err != nil {
   268  		return err
   269  	}
   270  
   271  	err = adminVdc.Refresh()
   272  	if err != nil {
   273  		return err
   274  	}
   275  
   276  	return nil
   277  }
   278  
   279  // DeleteMetadataEntryAsync deletes VDC metadata depending on key provided as input and returns the task.
   280  // Note: Requires system administrator privileges.
   281  // Deprecated: Use AdminVdc.DeleteMetadataEntryWithDomainAsync
   282  func (vdc *Vdc) DeleteMetadataEntryAsync(key string) (Task, error) {
   283  	return deleteMetadata(vdc.client, getAdminURL(vdc.Vdc.HREF), vdc.Vdc.Name, key, false)
   284  }
   285  
   286  // DeleteMetadataEntryAsync deletes VDC metadata depending on key provided as input and returns the task.
   287  // Note: Requires system administrator privileges.
   288  // Deprecated: Use AdminVdc.DeleteMetadataEntryWithDomainAsync
   289  func (adminVdc *AdminVdc) DeleteMetadataEntryAsync(key string) (Task, error) {
   290  	return deleteMetadata(adminVdc.client, adminVdc.AdminVdc.HREF, adminVdc.AdminVdc.Name, key, false)
   291  }
   292  
   293  // AddMetadataEntry adds Provider VDC metadata typedValue and key/value pair provided as input
   294  // and waits for the task to finish.
   295  // Note: Requires system administrator privileges.
   296  // Deprecated: Use ProviderVdc.AddMetadataEntryWithVisibility instead
   297  func (providerVdc *ProviderVdc) AddMetadataEntry(typedValue, key, value string) error {
   298  	task, err := providerVdc.AddMetadataEntryAsync(typedValue, key, value)
   299  	if err != nil {
   300  		return err
   301  	}
   302  
   303  	err = task.WaitTaskCompletion()
   304  	if err != nil {
   305  		return err
   306  	}
   307  
   308  	err = providerVdc.Refresh()
   309  	if err != nil {
   310  		return err
   311  	}
   312  
   313  	return nil
   314  }
   315  
   316  // AddMetadataEntryAsync adds Provider VDC metadata typedValue and key/value pair provided as input and returns the task.
   317  // Note: Requires system administrator privileges.
   318  // Deprecated: Use ProviderVdc.AddMetadataEntryWithVisibilityAsync instead
   319  func (providerVdc *ProviderVdc) AddMetadataEntryAsync(typedValue, key, value string) (Task, error) {
   320  	return addMetadataDeprecated(providerVdc.client, typedValue, key, value, providerVdc.ProviderVdc.HREF)
   321  }
   322  
   323  // MergeMetadataAsync merges Provider VDC metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   324  // then waits for the task to complete.
   325  // Note: Requires system administrator privileges.
   326  // Deprecated: Use ProviderVdc.MergeMetadataWithMetadataValuesAsync
   327  func (providerVdc *ProviderVdc) MergeMetadataAsync(typedValue string, metadata map[string]interface{}) (Task, error) {
   328  	return mergeAllMetadataDeprecated(providerVdc.client, typedValue, metadata, providerVdc.ProviderVdc.HREF)
   329  }
   330  
   331  // MergeMetadata merges Provider VDC metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   332  // then waits for the task to complete.
   333  // Note: Requires system administrator privileges.
   334  // Deprecated: Use ProviderVdc.MergeMetadataWithMetadataValues
   335  func (providerVdc *ProviderVdc) MergeMetadata(typedValue string, metadata map[string]interface{}) error {
   336  	task, err := providerVdc.MergeMetadataAsync(typedValue, metadata)
   337  	if err != nil {
   338  		return err
   339  	}
   340  	return task.WaitTaskCompletion()
   341  }
   342  
   343  // DeleteMetadataEntry deletes Provider VDC metadata by key provided as input and waits for
   344  // the task to finish.
   345  // Note: Requires system administrator privileges.
   346  // Deprecated: Use ProviderVdc.DeleteMetadataEntryWithDomain
   347  func (providerVdc *ProviderVdc) DeleteMetadataEntry(key string) error {
   348  	task, err := providerVdc.DeleteMetadataEntryAsync(key)
   349  	if err != nil {
   350  		return err
   351  	}
   352  
   353  	err = task.WaitTaskCompletion()
   354  	if err != nil {
   355  		return err
   356  	}
   357  
   358  	err = providerVdc.Refresh()
   359  	if err != nil {
   360  		return err
   361  	}
   362  
   363  	return nil
   364  }
   365  
   366  // DeleteMetadataEntryAsync deletes Provider VDC metadata depending on key provided as input and returns the task.
   367  // Note: Requires system administrator privileges.
   368  // Deprecated: Use ProviderVdc.DeleteMetadataEntryWithDomainAsync
   369  func (providerVdc *ProviderVdc) DeleteMetadataEntryAsync(key string) (Task, error) {
   370  	return deleteMetadata(providerVdc.client, providerVdc.ProviderVdc.HREF, providerVdc.ProviderVdc.Name, key, false)
   371  }
   372  
   373  // AddMetadataEntry adds VApp metadata typedValue and key/value pair provided as input
   374  // and waits for the task to finish.
   375  // Deprecated: Use VApp.AddMetadataEntryWithVisibility instead
   376  func (vapp *VApp) AddMetadataEntry(typedValue, key, value string) error {
   377  	task, err := vapp.AddMetadataEntryAsync(typedValue, key, value)
   378  	if err != nil {
   379  		return err
   380  	}
   381  
   382  	err = task.WaitTaskCompletion()
   383  	if err != nil {
   384  		return err
   385  	}
   386  
   387  	err = vapp.Refresh()
   388  	if err != nil {
   389  		return err
   390  	}
   391  
   392  	return nil
   393  }
   394  
   395  // AddMetadataEntryAsync adds VApp metadata typedValue and key/value pair provided as input and returns the task.
   396  // Deprecated: Use VApp.AddMetadataEntryWithVisibilityAsync instead
   397  func (vapp *VApp) AddMetadataEntryAsync(typedValue, key, value string) (Task, error) {
   398  	return addMetadataDeprecated(vapp.client, typedValue, key, value, vapp.VApp.HREF)
   399  }
   400  
   401  // MergeMetadataAsync merges VApp metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   402  // then waits for the task to complete.
   403  // Deprecated: Use VApp.MergeMetadataWithMetadataValuesAsync
   404  func (vapp *VApp) MergeMetadataAsync(typedValue string, metadata map[string]interface{}) (Task, error) {
   405  	return mergeAllMetadataDeprecated(vapp.client, typedValue, metadata, vapp.VApp.HREF)
   406  }
   407  
   408  // MergeMetadata merges VApp metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   409  // then waits for the task to complete.
   410  // Deprecated: Use VApp.MergeMetadataWithMetadataValues
   411  func (vapp *VApp) MergeMetadata(typedValue string, metadata map[string]interface{}) error {
   412  	task, err := vapp.MergeMetadataAsync(typedValue, metadata)
   413  	if err != nil {
   414  		return err
   415  	}
   416  	return task.WaitTaskCompletion()
   417  }
   418  
   419  // DeleteMetadataEntry deletes VApp metadata by key provided as input and waits for
   420  // the task to finish.
   421  // Deprecated: Use VApp.DeleteMetadataEntryWithDomain instead
   422  func (vapp *VApp) DeleteMetadataEntry(key string) error {
   423  	task, err := vapp.DeleteMetadataEntryAsync(key)
   424  	if err != nil {
   425  		return err
   426  	}
   427  
   428  	err = task.WaitTaskCompletion()
   429  	if err != nil {
   430  		return err
   431  	}
   432  
   433  	err = vapp.Refresh()
   434  	if err != nil {
   435  		return err
   436  	}
   437  
   438  	return nil
   439  }
   440  
   441  // DeleteMetadataEntryAsync deletes VApp metadata depending on key provided as input and returns the task.
   442  // Deprecated: Use VApp.DeleteMetadataEntryWithDomainAsync instead
   443  func (vapp *VApp) DeleteMetadataEntryAsync(key string) (Task, error) {
   444  	return deleteMetadata(vapp.client, vapp.VApp.HREF, vapp.VApp.Name, key, false)
   445  }
   446  
   447  // AddMetadataEntry adds VAppTemplate metadata typedValue and key/value pair provided as input and
   448  // waits for the task to finish.
   449  // Deprecated: Use VAppTemplate.AddMetadataEntryWithVisibility instead
   450  func (vAppTemplate *VAppTemplate) AddMetadataEntry(typedValue, key, value string) error {
   451  	task, err := vAppTemplate.AddMetadataEntryAsync(typedValue, key, value)
   452  	if err != nil {
   453  		return err
   454  	}
   455  	err = task.WaitTaskCompletion()
   456  	if err != nil {
   457  		return err
   458  	}
   459  
   460  	err = vAppTemplate.Refresh()
   461  	if err != nil {
   462  		return err
   463  	}
   464  
   465  	return nil
   466  }
   467  
   468  // AddMetadataEntryAsync adds VAppTemplate metadata typedValue and key/value pair provided as input
   469  // and returns the task.
   470  // Deprecated: Use VAppTemplate.AddMetadataEntryWithVisibilityAsync instead
   471  func (vAppTemplate *VAppTemplate) AddMetadataEntryAsync(typedValue, key, value string) (Task, error) {
   472  	return addMetadataDeprecated(vAppTemplate.client, typedValue, key, value, vAppTemplate.VAppTemplate.HREF)
   473  }
   474  
   475  // MergeMetadataAsync merges VAppTemplate metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   476  // then waits for the task to complete.
   477  // Deprecated: Use VAppTemplate.MergeMetadataWithMetadataValuesAsync
   478  func (vAppTemplate *VAppTemplate) MergeMetadataAsync(typedValue string, metadata map[string]interface{}) (Task, error) {
   479  	return mergeAllMetadataDeprecated(vAppTemplate.client, typedValue, metadata, vAppTemplate.VAppTemplate.HREF)
   480  }
   481  
   482  // MergeMetadata merges VAppTemplate metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   483  // then waits for the task to complete.
   484  // Deprecated: Use VAppTemplate.MergeMetadataWithMetadataValues
   485  func (vAppTemplate *VAppTemplate) MergeMetadata(typedValue string, metadata map[string]interface{}) error {
   486  	task, err := vAppTemplate.MergeMetadataAsync(typedValue, metadata)
   487  	if err != nil {
   488  		return err
   489  	}
   490  	return task.WaitTaskCompletion()
   491  }
   492  
   493  // DeleteMetadataEntry deletes VAppTemplate metadata depending on key provided as input
   494  // and waits for the task to finish.
   495  // Deprecated: Use VAppTemplate.DeleteMetadataEntryWithDomain instead
   496  func (vAppTemplate *VAppTemplate) DeleteMetadataEntry(key string) error {
   497  	task, err := vAppTemplate.DeleteMetadataEntryAsync(key)
   498  	if err != nil {
   499  		return err
   500  	}
   501  
   502  	err = task.WaitTaskCompletion()
   503  	if err != nil {
   504  		return err
   505  	}
   506  
   507  	err = vAppTemplate.Refresh()
   508  	if err != nil {
   509  		return err
   510  	}
   511  
   512  	return nil
   513  }
   514  
   515  // DeleteMetadataEntryAsync deletes VAppTemplate metadata depending on key provided as input
   516  // and returns the task.
   517  // Deprecated: Use VAppTemplate.DeleteMetadataEntryWithDomainAsync instead
   518  func (vAppTemplate *VAppTemplate) DeleteMetadataEntryAsync(key string) (Task, error) {
   519  	return deleteMetadata(vAppTemplate.client, vAppTemplate.VAppTemplate.HREF, vAppTemplate.VAppTemplate.Name, key, false)
   520  }
   521  
   522  // AddMetadataEntry adds MediaRecord metadata typedValue and key/value pair provided as input and
   523  // waits for the task to finish.
   524  // Deprecated: Use MediaRecord.AddMetadataEntryWithVisibility instead
   525  func (mediaRecord *MediaRecord) AddMetadataEntry(typedValue, key, value string) error {
   526  	task, err := mediaRecord.AddMetadataEntryAsync(typedValue, key, value)
   527  	if err != nil {
   528  		return err
   529  	}
   530  	err = task.WaitTaskCompletion()
   531  	if err != nil {
   532  		return err
   533  	}
   534  
   535  	err = mediaRecord.Refresh()
   536  	if err != nil {
   537  		return err
   538  	}
   539  
   540  	return nil
   541  }
   542  
   543  // AddMetadataEntryAsync adds MediaRecord metadata typedValue and key/value pair provided as input
   544  // and returns the task.
   545  // Deprecated: Use MediaRecord.AddMetadataEntryWithVisibilityAsync instead
   546  func (mediaRecord *MediaRecord) AddMetadataEntryAsync(typedValue, key, value string) (Task, error) {
   547  	return addMetadataDeprecated(mediaRecord.client, typedValue, key, value, mediaRecord.MediaRecord.HREF)
   548  }
   549  
   550  // MergeMetadataAsync merges MediaRecord metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   551  // then waits for the task to complete.
   552  // Deprecated: Use MediaRecord.MergeMetadataWithMetadataValuesAsync
   553  func (mediaRecord *MediaRecord) MergeMetadataAsync(typedValue string, metadata map[string]interface{}) (Task, error) {
   554  	return mergeAllMetadataDeprecated(mediaRecord.client, typedValue, metadata, mediaRecord.MediaRecord.HREF)
   555  }
   556  
   557  // MergeMetadata merges MediaRecord metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   558  // then waits for the task to complete.
   559  // Deprecated: Use MediaRecord.MergeMetadataWithMetadataValues
   560  func (mediaRecord *MediaRecord) MergeMetadata(typedValue string, metadata map[string]interface{}) error {
   561  	task, err := mediaRecord.MergeMetadataAsync(typedValue, metadata)
   562  	if err != nil {
   563  		return err
   564  	}
   565  	return task.WaitTaskCompletion()
   566  }
   567  
   568  // DeleteMetadataEntry deletes MediaRecord metadata depending on key provided as input
   569  // and waits for the task to finish.
   570  // Deprecated: Use MediaRecord.DeleteMetadataEntryWithDomain instead
   571  func (mediaRecord *MediaRecord) DeleteMetadataEntry(key string) error {
   572  	task, err := mediaRecord.DeleteMetadataEntryAsync(key)
   573  	if err != nil {
   574  		return err
   575  	}
   576  	err = task.WaitTaskCompletion()
   577  	if err != nil {
   578  		return err
   579  	}
   580  
   581  	err = mediaRecord.Refresh()
   582  	if err != nil {
   583  		return err
   584  	}
   585  
   586  	return nil
   587  }
   588  
   589  // DeleteMetadataEntryAsync deletes MediaRecord metadata depending on key provided as input
   590  // and returns the task.
   591  // Deprecated: Use MediaRecord.DeleteMetadataEntryWithDomainAsync instead
   592  func (mediaRecord *MediaRecord) DeleteMetadataEntryAsync(key string) (Task, error) {
   593  	return deleteMetadata(mediaRecord.client, mediaRecord.MediaRecord.HREF, mediaRecord.MediaRecord.Name, key, false)
   594  }
   595  
   596  // AddMetadataEntry adds Media metadata typedValue and key/value pair provided as input
   597  // and waits for the task to finish.
   598  // Deprecated: Use Media.AddMetadataEntryWithVisibility instead
   599  func (media *Media) AddMetadataEntry(typedValue, key, value string) error {
   600  	task, err := media.AddMetadataEntryAsync(typedValue, key, value)
   601  	if err != nil {
   602  		return err
   603  	}
   604  	err = task.WaitTaskCompletion()
   605  	if err != nil {
   606  		return err
   607  	}
   608  
   609  	err = media.Refresh()
   610  	if err != nil {
   611  		return err
   612  	}
   613  
   614  	return nil
   615  }
   616  
   617  // AddMetadataEntryAsync adds Media metadata typedValue and key/value pair provided as input
   618  // and returns the task.
   619  // Deprecated: Use Media.AddMetadataEntryWithVisibilityAsync instead
   620  func (media *Media) AddMetadataEntryAsync(typedValue, key, value string) (Task, error) {
   621  	return addMetadataDeprecated(media.client, typedValue, key, value, media.Media.HREF)
   622  }
   623  
   624  // MergeMetadataAsync merges Media metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   625  // then waits for the task to complete.
   626  // Deprecated: Use Media.MergeMetadataWithMetadataValuesAsync
   627  func (media *Media) MergeMetadataAsync(typedValue string, metadata map[string]interface{}) (Task, error) {
   628  	return mergeAllMetadataDeprecated(media.client, typedValue, metadata, media.Media.HREF)
   629  }
   630  
   631  // MergeMetadata merges Media metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   632  // then waits for the task to complete.
   633  // Deprecated: Use Media.MergeMetadataWithMetadataValues
   634  func (media *Media) MergeMetadata(typedValue string, metadata map[string]interface{}) error {
   635  	task, err := media.MergeMetadataAsync(typedValue, metadata)
   636  	if err != nil {
   637  		return err
   638  	}
   639  	return task.WaitTaskCompletion()
   640  }
   641  
   642  // DeleteMetadataEntry deletes Media metadata depending on key provided as input
   643  // and waits for the task to finish.
   644  // Deprecated: Use Media.DeleteMetadataEntryWithDomain instead
   645  func (media *Media) DeleteMetadataEntry(key string) error {
   646  	task, err := media.DeleteMetadataEntryAsync(key)
   647  	if err != nil {
   648  		return err
   649  	}
   650  
   651  	err = task.WaitTaskCompletion()
   652  	if err != nil {
   653  		return err
   654  	}
   655  
   656  	err = media.Refresh()
   657  	if err != nil {
   658  		return err
   659  	}
   660  
   661  	return nil
   662  }
   663  
   664  // DeleteMetadataEntryAsync deletes Media metadata depending on key provided as input
   665  // and returns the task.
   666  // Deprecated: Use Media.DeleteMetadataEntryWithDomainAsync instead
   667  func (media *Media) DeleteMetadataEntryAsync(key string) (Task, error) {
   668  	return deleteMetadata(media.client, media.Media.HREF, media.Media.Name, key, false)
   669  }
   670  
   671  // AddMetadataEntry adds AdminCatalog metadata typedValue and key/value pair provided as input
   672  // and waits for the task to finish.
   673  // Deprecated: Use AdminCatalog.AddMetadataEntryWithVisibility instead
   674  func (adminCatalog *AdminCatalog) AddMetadataEntry(typedValue, key, value string) error {
   675  	task, err := adminCatalog.AddMetadataEntryAsync(typedValue, key, value)
   676  	if err != nil {
   677  		return err
   678  	}
   679  	err = task.WaitTaskCompletion()
   680  	if err != nil {
   681  		return err
   682  	}
   683  
   684  	err = adminCatalog.Refresh()
   685  	if err != nil {
   686  		return err
   687  	}
   688  
   689  	return nil
   690  }
   691  
   692  // AddMetadataEntryAsync adds AdminCatalog metadata typedValue and key/value pair provided as input
   693  // and returns the task.
   694  // Deprecated: Use AdminCatalog.AddMetadataEntryWithVisibilityAsync instead
   695  func (adminCatalog *AdminCatalog) AddMetadataEntryAsync(typedValue, key, value string) (Task, error) {
   696  	return addMetadataDeprecated(adminCatalog.client, typedValue, key, value, adminCatalog.AdminCatalog.HREF)
   697  }
   698  
   699  // MergeMetadataAsync merges AdminCatalog metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   700  // then waits for the task to complete.
   701  // Deprecated: Use AdminCatalog.MergeMetadataWithMetadataValuesAsync
   702  func (adminCatalog *AdminCatalog) MergeMetadataAsync(typedValue string, metadata map[string]interface{}) (Task, error) {
   703  	return mergeAllMetadataDeprecated(adminCatalog.client, typedValue, metadata, adminCatalog.AdminCatalog.HREF)
   704  }
   705  
   706  // MergeMetadata merges AdminCatalog metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   707  // then waits for the task to complete.
   708  // Deprecated: Use AdminCatalog.MergeMetadataWithMetadataValues
   709  func (adminCatalog *AdminCatalog) MergeMetadata(typedValue string, metadata map[string]interface{}) error {
   710  	task, err := adminCatalog.MergeMetadataAsync(typedValue, metadata)
   711  	if err != nil {
   712  		return err
   713  	}
   714  	return task.WaitTaskCompletion()
   715  }
   716  
   717  // DeleteMetadataEntry deletes AdminCatalog metadata depending on key provided as input
   718  // and waits for the task to finish.
   719  // Deprecated: Use AdminCatalog.DeleteMetadataEntryWithDomain instead
   720  func (adminCatalog *AdminCatalog) DeleteMetadataEntry(key string) error {
   721  	task, err := adminCatalog.DeleteMetadataEntryAsync(key)
   722  	if err != nil {
   723  		return err
   724  	}
   725  
   726  	err = task.WaitTaskCompletion()
   727  	if err != nil {
   728  		return err
   729  	}
   730  
   731  	err = adminCatalog.Refresh()
   732  	if err != nil {
   733  		return err
   734  	}
   735  
   736  	return nil
   737  }
   738  
   739  // DeleteMetadataEntryAsync deletes AdminCatalog metadata depending on key provided as input
   740  // and returns a task.
   741  // Deprecated: Use AdminCatalog.DeleteMetadataEntryWithDomainAsync instead
   742  func (adminCatalog *AdminCatalog) DeleteMetadataEntryAsync(key string) (Task, error) {
   743  	return deleteMetadata(adminCatalog.client, adminCatalog.AdminCatalog.HREF, adminCatalog.AdminCatalog.Name, key, false)
   744  }
   745  
   746  // AddMetadataEntry adds AdminOrg metadata key/value pair provided as input to the corresponding organization seen as administrator
   747  // and waits for completion.
   748  // Deprecated: Use AdminOrg.AddMetadataEntryWithVisibility instead
   749  func (adminOrg *AdminOrg) AddMetadataEntry(typedValue, key, value string) error {
   750  	task, err := adminOrg.AddMetadataEntryAsync(typedValue, key, value)
   751  	if err != nil {
   752  		return err
   753  	}
   754  	return task.WaitTaskCompletion()
   755  }
   756  
   757  // AddMetadataEntryAsync adds AdminOrg metadata key/value pair provided as input to the corresponding organization seen as administrator
   758  // and returns a task.
   759  // Deprecated: Use AdminOrg.AddMetadataEntryWithVisibilityAsync instead
   760  func (adminOrg *AdminOrg) AddMetadataEntryAsync(typedValue, key, value string) (Task, error) {
   761  	return addMetadataDeprecated(adminOrg.client, typedValue, key, value, adminOrg.AdminOrg.HREF)
   762  }
   763  
   764  // MergeMetadataAsync merges AdminOrg metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   765  // then waits for the task to complete.
   766  // Deprecated: Use AdminOrg.MergeMetadataWithMetadataValuesAsync
   767  func (adminOrg *AdminOrg) MergeMetadataAsync(typedValue string, metadata map[string]interface{}) (Task, error) {
   768  	return mergeAllMetadataDeprecated(adminOrg.client, typedValue, metadata, adminOrg.AdminOrg.HREF)
   769  }
   770  
   771  // MergeMetadata merges AdminOrg metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   772  // then waits for the task to complete.
   773  // Deprecated: Use AdminOrg.MergeMetadataWithMetadataValues
   774  func (adminOrg *AdminOrg) MergeMetadata(typedValue string, metadata map[string]interface{}) error {
   775  	task, err := adminOrg.MergeMetadataAsync(typedValue, metadata)
   776  	if err != nil {
   777  		return err
   778  	}
   779  	return task.WaitTaskCompletion()
   780  }
   781  
   782  // DeleteMetadataEntry deletes metadata of the corresponding organization with the given key, and waits for completion
   783  // Deprecated: Use AdminOrg.DeleteMetadataEntryWithDomain instead
   784  func (adminOrg *AdminOrg) DeleteMetadataEntry(key string) error {
   785  	task, err := adminOrg.DeleteMetadataEntryAsync(key)
   786  	if err != nil {
   787  		return err
   788  	}
   789  	err = task.WaitTaskCompletion()
   790  	if err != nil {
   791  		return fmt.Errorf("error completing delete metadata for organization task: %s", err)
   792  	}
   793  
   794  	return nil
   795  }
   796  
   797  // DeleteMetadataEntryAsync deletes metadata of the corresponding organization with the given key, and returns
   798  // a task.
   799  // Deprecated: Use AdminOrg.DeleteMetadataEntryWithDomainAsync instead
   800  func (adminOrg *AdminOrg) DeleteMetadataEntryAsync(key string) (Task, error) {
   801  	return deleteMetadata(adminOrg.client, adminOrg.AdminOrg.HREF, adminOrg.AdminOrg.Name, key, false)
   802  }
   803  
   804  // AddMetadataEntry adds metadata key/value pair provided as input to the corresponding independent disk and waits for completion.
   805  // Deprecated: Use Disk.AddMetadataEntryWithVisibility instead
   806  func (disk *Disk) AddMetadataEntry(typedValue, key, value string) error {
   807  	task, err := disk.AddMetadataEntryAsync(typedValue, key, value)
   808  	if err != nil {
   809  		return err
   810  	}
   811  	return task.WaitTaskCompletion()
   812  }
   813  
   814  // AddMetadataEntryAsync adds metadata key/value pair provided as input to the corresponding independent disk and returns a task.
   815  // Deprecated: Use Disk.AddMetadataEntryWithVisibilityAsync instead
   816  func (disk *Disk) AddMetadataEntryAsync(typedValue, key, value string) (Task, error) {
   817  	return addMetadataDeprecated(disk.client, typedValue, key, value, disk.Disk.HREF)
   818  }
   819  
   820  // MergeMetadataAsync merges Disk metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   821  // then waits for the task to complete.
   822  // Deprecated: Use Disk.MergeMetadataWithMetadataValuesAsync
   823  func (disk *Disk) MergeMetadataAsync(typedValue string, metadata map[string]interface{}) (Task, error) {
   824  	return mergeAllMetadataDeprecated(disk.client, typedValue, metadata, disk.Disk.HREF)
   825  }
   826  
   827  // MergeMetadata merges Disk metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   828  // then waits for the task to complete.
   829  // Deprecated: Use Disk.MergeMetadataWithMetadataValues
   830  func (disk *Disk) MergeMetadata(typedValue string, metadata map[string]interface{}) error {
   831  	task, err := disk.MergeMetadataAsync(typedValue, metadata)
   832  	if err != nil {
   833  		return err
   834  	}
   835  	return task.WaitTaskCompletion()
   836  }
   837  
   838  // DeleteMetadataEntry deletes metadata of the corresponding independent disk with the given key, and waits for completion
   839  // Deprecated: Use Disk.DeleteMetadataEntryWithDomain instead
   840  func (disk *Disk) DeleteMetadataEntry(key string) error {
   841  	task, err := disk.DeleteMetadataEntryAsync(key)
   842  	if err != nil {
   843  		return err
   844  	}
   845  	err = task.WaitTaskCompletion()
   846  	if err != nil {
   847  		return fmt.Errorf("error completing delete metadata for independent disk task: %s", err)
   848  	}
   849  
   850  	return nil
   851  }
   852  
   853  // DeleteMetadataEntryAsync deletes metadata of the corresponding independent disk with the given key, and returns
   854  // a task.
   855  // Deprecated: Use Disk.DeleteMetadataEntryWithDomainAsync instead
   856  func (disk *Disk) DeleteMetadataEntryAsync(key string) (Task, error) {
   857  	return deleteMetadata(disk.client, disk.Disk.HREF, disk.Disk.Name, key, false)
   858  }
   859  
   860  // AddMetadataEntry adds OrgVDCNetwork metadata typedValue and key/value pair provided as input
   861  // and waits for the task to finish.
   862  // Note: Requires system administrator privileges.
   863  // Deprecated: Use OrgVDCNetwork.AddMetadataEntryWithVisibility instead
   864  func (orgVdcNetwork *OrgVDCNetwork) AddMetadataEntry(typedValue, key, value string) error {
   865  	task, err := orgVdcNetwork.AddMetadataEntryAsync(typedValue, key, value)
   866  	if err != nil {
   867  		return err
   868  	}
   869  	return task.WaitTaskCompletion()
   870  }
   871  
   872  // AddMetadataEntryAsync adds OrgVDCNetwork metadata typedValue and key/value pair provided as input
   873  // and returns the task.
   874  // Note: Requires system administrator privileges.
   875  // Deprecated: Use OrgVDCNetwork.AddMetadataEntryWithVisibilityAsync instead
   876  func (orgVdcNetwork *OrgVDCNetwork) AddMetadataEntryAsync(typedValue, key, value string) (Task, error) {
   877  	return addMetadataDeprecated(orgVdcNetwork.client, typedValue, key, value, getAdminURL(orgVdcNetwork.OrgVDCNetwork.HREF))
   878  }
   879  
   880  // MergeMetadataAsync merges OrgVDCNetwork metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   881  // then waits for the task to complete.
   882  // Note: Requires system administrator privileges.
   883  // Deprecated: Use OrgVDCNetwork.MergeMetadataWithMetadataValuesAsync
   884  func (orgVdcNetwork *OrgVDCNetwork) MergeMetadataAsync(typedValue string, metadata map[string]interface{}) (Task, error) {
   885  	return mergeAllMetadataDeprecated(orgVdcNetwork.client, typedValue, metadata, getAdminURL(orgVdcNetwork.OrgVDCNetwork.HREF))
   886  }
   887  
   888  // MergeMetadata merges OrgVDCNetwork metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   889  // then waits for the task to complete.
   890  // Note: Requires system administrator privileges.
   891  // Deprecated: Use OrgVDCNetwork.MergeMetadataWithMetadataValues
   892  func (orgVdcNetwork *OrgVDCNetwork) MergeMetadata(typedValue string, metadata map[string]interface{}) error {
   893  	task, err := orgVdcNetwork.MergeMetadataAsync(typedValue, metadata)
   894  	if err != nil {
   895  		return err
   896  	}
   897  	return task.WaitTaskCompletion()
   898  }
   899  
   900  // AddMetadataEntry adds CatalogItem metadata typedValue and key/value pair provided as input
   901  // and waits for the task to finish.
   902  // Deprecated: Use CatalogItem.AddMetadataEntryWithVisibility instead
   903  func (catalogItem *CatalogItem) AddMetadataEntry(typedValue, key, value string) error {
   904  	task, err := catalogItem.AddMetadataEntryAsync(typedValue, key, value)
   905  	if err != nil {
   906  		return err
   907  	}
   908  	return task.WaitTaskCompletion()
   909  }
   910  
   911  // AddMetadataEntryAsync adds CatalogItem metadata typedValue and key/value pair provided as input
   912  // and returns the task.
   913  // Deprecated: Use CatalogItem.AddMetadataEntryWithVisibilityAsync instead
   914  func (catalogItem *CatalogItem) AddMetadataEntryAsync(typedValue, key, value string) (Task, error) {
   915  	return addMetadataDeprecated(catalogItem.client, typedValue, key, value, catalogItem.CatalogItem.HREF)
   916  }
   917  
   918  // MergeMetadataAsync merges CatalogItem metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   919  // then waits for the task to complete.
   920  // Deprecated: Use CatalogItem.MergeMetadataWithMetadataValuesAsync
   921  func (catalogItem *CatalogItem) MergeMetadataAsync(typedValue string, metadata map[string]interface{}) (Task, error) {
   922  	return mergeAllMetadataDeprecated(catalogItem.client, typedValue, metadata, catalogItem.CatalogItem.HREF)
   923  }
   924  
   925  // MergeMetadata merges CatalogItem metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   926  // then waits for the task to complete.
   927  // Deprecated: Use CatalogItem.MergeMetadataWithMetadataValues
   928  func (catalogItem *CatalogItem) MergeMetadata(typedValue string, metadata map[string]interface{}) error {
   929  	task, err := catalogItem.MergeMetadataAsync(typedValue, metadata)
   930  	if err != nil {
   931  		return err
   932  	}
   933  	return task.WaitTaskCompletion()
   934  }
   935  
   936  // DeleteMetadataEntry deletes CatalogItem metadata depending on key provided as input
   937  // and waits for the task to finish.
   938  // Deprecated: Use CatalogItem.DeleteMetadataEntryWithDomain instead
   939  func (catalogItem *CatalogItem) DeleteMetadataEntry(key string) error {
   940  	task, err := catalogItem.DeleteMetadataEntryAsync(key)
   941  	if err != nil {
   942  		return err
   943  	}
   944  
   945  	return task.WaitTaskCompletion()
   946  }
   947  
   948  // DeleteMetadataEntryAsync deletes CatalogItem metadata depending on key provided as input
   949  // and returns a task.
   950  // Deprecated: Use CatalogItem.DeleteMetadataEntryWithDomainAsync instead
   951  func (catalogItem *CatalogItem) DeleteMetadataEntryAsync(key string) (Task, error) {
   952  	return deleteMetadata(catalogItem.client, catalogItem.CatalogItem.HREF, catalogItem.CatalogItem.Name, key, false)
   953  }
   954  
   955  // DeleteMetadataEntry deletes OrgVDCNetwork metadata depending on key provided as input
   956  // and waits for the task to finish.
   957  // Note: Requires system administrator privileges.
   958  // Deprecated: Use OrgVDCNetwork.DeleteMetadataEntryWithDomain instead
   959  func (orgVdcNetwork *OrgVDCNetwork) DeleteMetadataEntry(key string) error {
   960  	task, err := orgVdcNetwork.DeleteMetadataEntryAsync(key)
   961  	if err != nil {
   962  		return err
   963  	}
   964  
   965  	return task.WaitTaskCompletion()
   966  }
   967  
   968  // DeleteMetadataEntryAsync deletes OrgVDCNetwork metadata depending on key provided as input
   969  // and returns a task.
   970  // Note: Requires system administrator privileges.
   971  // Deprecated: Use OrgVDCNetwork.DeleteMetadataEntryWithDomainAsync instead
   972  func (orgVdcNetwork *OrgVDCNetwork) DeleteMetadataEntryAsync(key string) (Task, error) {
   973  	return deleteMetadata(orgVdcNetwork.client, getAdminURL(orgVdcNetwork.OrgVDCNetwork.HREF), orgVdcNetwork.OrgVDCNetwork.Name, key, false)
   974  }
   975  
   976  // ----------------
   977  // OpenAPI metadata functions
   978  
   979  // AddMetadataEntry adds OpenApiOrgVdcNetwork metadata typedValue and key/value pair provided as input
   980  // and waits for the task to finish.
   981  // Deprecated: Use OpenApiOrgVdcNetwork.AddMetadataEntryWithVisibility instead
   982  func (openApiOrgVdcNetwork *OpenApiOrgVdcNetwork) AddMetadataEntry(typedValue, key, value string) error {
   983  	task, err := addMetadataDeprecated(openApiOrgVdcNetwork.client, typedValue, key, value, fmt.Sprintf("%s/admin/network/%s", openApiOrgVdcNetwork.client.VCDHREF.String(), strings.ReplaceAll(openApiOrgVdcNetwork.OpenApiOrgVdcNetwork.ID, "urn:vcloud:network:", "")))
   984  	if err != nil {
   985  		return err
   986  	}
   987  	return task.WaitTaskCompletion()
   988  }
   989  
   990  // MergeMetadata merges OpenApiOrgVdcNetwork metadata provided as a key-value map of type `typedValue` with the already present in VCD,
   991  // and waits for the task to finish.
   992  // Deprecated: Use OpenApiOrgVdcNetwork.MergeMetadataWithMetadataValues
   993  func (openApiOrgVdcNetwork *OpenApiOrgVdcNetwork) MergeMetadata(typedValue string, metadata map[string]interface{}) error {
   994  	task, err := mergeAllMetadataDeprecated(openApiOrgVdcNetwork.client, typedValue, metadata, fmt.Sprintf("%s/admin/network/%s", openApiOrgVdcNetwork.client.VCDHREF.String(), strings.ReplaceAll(openApiOrgVdcNetwork.OpenApiOrgVdcNetwork.ID, "urn:vcloud:network:", "")))
   995  	if err != nil {
   996  		return err
   997  	}
   998  	return task.WaitTaskCompletion()
   999  }
  1000  
  1001  // DeleteMetadataEntry deletes OpenApiOrgVdcNetwork metadata depending on key provided as input
  1002  // and waits for the task to finish.
  1003  // Deprecated: Use OpenApiOrgVdcNetwork.DeleteMetadataEntryWithDomain
  1004  func (openApiOrgVdcNetwork *OpenApiOrgVdcNetwork) DeleteMetadataEntry(key string) error {
  1005  	task, err := deleteMetadata(openApiOrgVdcNetwork.client, fmt.Sprintf("%s/admin/network/%s", openApiOrgVdcNetwork.client.VCDHREF.String(), strings.ReplaceAll(openApiOrgVdcNetwork.OpenApiOrgVdcNetwork.ID, "urn:vcloud:network:", "")), openApiOrgVdcNetwork.OpenApiOrgVdcNetwork.Name, key, false)
  1006  	if err != nil {
  1007  		return err
  1008  	}
  1009  
  1010  	return task.WaitTaskCompletion()
  1011  }
  1012  
  1013  // ----------------
  1014  // Generic private functions
  1015  
  1016  // addMetadata adds metadata to an entity.
  1017  // The function supports passing a typedValue. Use one of the constants defined.
  1018  // Constants are types.MetadataStringValue, types.MetadataNumberValue, types.MetadataDateTimeValue and types.MetadataBooleanValue.
  1019  // Only tested with types.MetadataStringValue and types.MetadataNumberValue.
  1020  // Deprecated
  1021  func addMetadataDeprecated(client *Client, typedValue, key, value, requestUri string) (Task, error) {
  1022  	newMetadata := &types.MetadataValue{
  1023  		Xmlns: types.XMLNamespaceVCloud,
  1024  		Xsi:   types.XMLNamespaceXSI,
  1025  		TypedValue: &types.MetadataTypedValue{
  1026  			XsiType: typedValue,
  1027  			Value:   value,
  1028  		},
  1029  	}
  1030  
  1031  	apiEndpoint := urlParseRequestURI(requestUri)
  1032  	apiEndpoint.Path += "/metadata/" + key
  1033  
  1034  	// Return the task
  1035  	return client.ExecuteTaskRequest(apiEndpoint.String(), http.MethodPut,
  1036  		types.MimeMetaDataValue, "error adding metadata: %s", newMetadata)
  1037  }
  1038  
  1039  // mergeAllMetadataDeprecated merges the metadata key-values provided as parameter with existing entity metadata
  1040  // Deprecated
  1041  func mergeAllMetadataDeprecated(client *Client, typedValue string, metadata map[string]interface{}, requestUri string) (Task, error) {
  1042  	var metadataToMerge []*types.MetadataEntry
  1043  	for key, value := range metadata {
  1044  		metadataToMerge = append(metadataToMerge, &types.MetadataEntry{
  1045  			Xmlns: types.XMLNamespaceVCloud,
  1046  			Xsi:   types.XMLNamespaceXSI,
  1047  			Key:   key,
  1048  			TypedValue: &types.MetadataTypedValue{
  1049  				XsiType: typedValue,
  1050  				Value:   value.(string),
  1051  			},
  1052  		})
  1053  	}
  1054  
  1055  	newMetadata := &types.Metadata{
  1056  		Xmlns:         types.XMLNamespaceVCloud,
  1057  		Xsi:           types.XMLNamespaceXSI,
  1058  		MetadataEntry: metadataToMerge,
  1059  	}
  1060  
  1061  	apiEndpoint := urlParseRequestURI(requestUri)
  1062  	apiEndpoint.Path += "/metadata"
  1063  
  1064  	// Return the task
  1065  	return client.ExecuteTaskRequest(apiEndpoint.String(), http.MethodPost,
  1066  		types.MimeMetaData, "error adding metadata: %s", newMetadata)
  1067  }
  1068  
  1069  // ----------------
  1070  // Deprecations
  1071  
  1072  // Deprecated: use VM.DeleteMetadataEntry.
  1073  func (vm *VM) DeleteMetadata(key string) (Task, error) {
  1074  	return deleteMetadata(vm.client, vm.VM.HREF, vm.VM.Name, key, false)
  1075  }
  1076  
  1077  // Deprecated: use VM.AddMetadataEntry.
  1078  func (vm *VM) AddMetadata(key string, value string) (Task, error) {
  1079  	return addMetadataDeprecated(vm.client, types.MetadataStringValue, key, value, vm.VM.HREF)
  1080  }
  1081  
  1082  // Deprecated: use Vdc.DeleteMetadataEntry.
  1083  func (vdc *Vdc) DeleteMetadata(key string) (Vdc, error) {
  1084  	task, err := deleteMetadata(vdc.client, getAdminURL(vdc.Vdc.HREF), vdc.Vdc.Name, key, false)
  1085  	if err != nil {
  1086  		return Vdc{}, err
  1087  	}
  1088  
  1089  	err = task.WaitTaskCompletion()
  1090  	if err != nil {
  1091  		return Vdc{}, err
  1092  	}
  1093  
  1094  	err = vdc.Refresh()
  1095  	if err != nil {
  1096  		return Vdc{}, err
  1097  	}
  1098  
  1099  	return *vdc, nil
  1100  }
  1101  
  1102  // Deprecated: use Vdc.AddMetadataEntry.
  1103  func (vdc *Vdc) AddMetadata(key string, value string) (Vdc, error) {
  1104  	task, err := addMetadataDeprecated(vdc.client, types.MetadataStringValue, key, value, getAdminURL(vdc.Vdc.HREF))
  1105  	if err != nil {
  1106  		return Vdc{}, err
  1107  	}
  1108  
  1109  	err = task.WaitTaskCompletion()
  1110  	if err != nil {
  1111  		return Vdc{}, err
  1112  	}
  1113  
  1114  	err = vdc.Refresh()
  1115  	if err != nil {
  1116  		return Vdc{}, err
  1117  	}
  1118  
  1119  	return *vdc, nil
  1120  }
  1121  
  1122  // Deprecated: use Vdc.AddMetadataEntryAsync.
  1123  func (vdc *Vdc) AddMetadataAsync(key string, value string) (Task, error) {
  1124  	return addMetadataDeprecated(vdc.client, types.MetadataStringValue, key, value, getAdminURL(vdc.Vdc.HREF))
  1125  }
  1126  
  1127  // Deprecated: use Vdc.DeleteMetadataEntryAsync.
  1128  func (vdc *Vdc) DeleteMetadataAsync(key string) (Task, error) {
  1129  	return deleteMetadata(vdc.client, getAdminURL(vdc.Vdc.HREF), vdc.Vdc.Name, key, false)
  1130  }
  1131  
  1132  // Deprecated: use VApp.DeleteMetadataEntry.
  1133  func (vapp *VApp) DeleteMetadata(key string) (Task, error) {
  1134  	return deleteMetadata(vapp.client, vapp.VApp.HREF, vapp.VApp.Name, key, false)
  1135  }
  1136  
  1137  // Deprecated: use VApp.AddMetadataEntry
  1138  func (vapp *VApp) AddMetadata(key string, value string) (Task, error) {
  1139  	return addMetadataDeprecated(vapp.client, types.MetadataStringValue, key, value, vapp.VApp.HREF)
  1140  }
  1141  
  1142  // Deprecated: use VAppTemplate.AddMetadataEntry.
  1143  func (vAppTemplate *VAppTemplate) AddMetadata(key string, value string) (*VAppTemplate, error) {
  1144  	task, err := vAppTemplate.AddMetadataAsync(key, value)
  1145  	if err != nil {
  1146  		return nil, err
  1147  	}
  1148  	err = task.WaitTaskCompletion()
  1149  	if err != nil {
  1150  		return nil, fmt.Errorf("error completing add metadata for vApp template task: %s", err)
  1151  	}
  1152  
  1153  	err = vAppTemplate.Refresh()
  1154  	if err != nil {
  1155  		return nil, fmt.Errorf("error refreshing vApp template: %s", err)
  1156  	}
  1157  
  1158  	return vAppTemplate, nil
  1159  }
  1160  
  1161  // Deprecated: use VAppTemplate.AddMetadataEntryAsync.
  1162  func (vAppTemplate *VAppTemplate) AddMetadataAsync(key string, value string) (Task, error) {
  1163  	return addMetadataDeprecated(vAppTemplate.client, types.MetadataStringValue, key, value, vAppTemplate.VAppTemplate.HREF)
  1164  }
  1165  
  1166  // Deprecated: use VAppTemplate.DeleteMetadataEntry.
  1167  func (vAppTemplate *VAppTemplate) DeleteMetadata(key string) error {
  1168  	task, err := vAppTemplate.DeleteMetadataAsync(key)
  1169  	if err != nil {
  1170  		return err
  1171  	}
  1172  	err = task.WaitTaskCompletion()
  1173  	if err != nil {
  1174  		return fmt.Errorf("error completing delete metadata for vApp template task: %s", err)
  1175  	}
  1176  
  1177  	return nil
  1178  }
  1179  
  1180  // Deprecated: use VAppTemplate.DeleteMetadataEntryAsync.
  1181  func (vAppTemplate *VAppTemplate) DeleteMetadataAsync(key string) (Task, error) {
  1182  	return deleteMetadata(vAppTemplate.client, vAppTemplate.VAppTemplate.HREF, vAppTemplate.VAppTemplate.Name, key, false)
  1183  }
  1184  
  1185  // Deprecated: use Media.AddMetadataEntry.
  1186  func (media *Media) AddMetadata(key string, value string) (*Media, error) {
  1187  	task, err := media.AddMetadataAsync(key, value)
  1188  	if err != nil {
  1189  		return nil, err
  1190  	}
  1191  	err = task.WaitTaskCompletion()
  1192  	if err != nil {
  1193  		return nil, fmt.Errorf("error completing add metadata for media item task: %s", err)
  1194  	}
  1195  
  1196  	err = media.Refresh()
  1197  	if err != nil {
  1198  		return nil, fmt.Errorf("error refreshing media item: %s", err)
  1199  	}
  1200  
  1201  	return media, nil
  1202  }
  1203  
  1204  // Deprecated: use Media.AddMetadataEntryAsync.
  1205  func (media *Media) AddMetadataAsync(key string, value string) (Task, error) {
  1206  	return addMetadataDeprecated(media.client, types.MetadataStringValue, key, value, media.Media.HREF)
  1207  }
  1208  
  1209  // Deprecated: use Media.DeleteMetadataEntry.
  1210  func (media *Media) DeleteMetadata(key string) error {
  1211  	task, err := media.DeleteMetadataAsync(key)
  1212  	if err != nil {
  1213  		return err
  1214  	}
  1215  	err = task.WaitTaskCompletion()
  1216  	if err != nil {
  1217  		return fmt.Errorf("error completing delete metadata for media item task: %s", err)
  1218  	}
  1219  
  1220  	return nil
  1221  }
  1222  
  1223  // Deprecated: use Media.DeleteMetadataEntryAsync.
  1224  func (media *Media) DeleteMetadataAsync(key string) (Task, error) {
  1225  	return deleteMetadata(media.client, media.Media.HREF, media.Media.Name, key, false)
  1226  }
  1227  
  1228  // GetMetadata returns MediaItem metadata.
  1229  // Deprecated: Use MediaRecord.GetMetadata.
  1230  func (mediaItem *MediaItem) GetMetadata() (*types.Metadata, error) {
  1231  	return getMetadata(mediaItem.vdc.client, mediaItem.MediaItem.HREF, mediaItem.MediaItem.Name)
  1232  }
  1233  
  1234  // AddMetadata adds metadata key/value pair provided as input.
  1235  // Deprecated: Use MediaRecord.AddMetadata.
  1236  func (mediaItem *MediaItem) AddMetadata(key string, value string) (*MediaItem, error) {
  1237  	task, err := mediaItem.AddMetadataAsync(key, value)
  1238  	if err != nil {
  1239  		return nil, err
  1240  	}
  1241  	err = task.WaitTaskCompletion()
  1242  	if err != nil {
  1243  		return nil, fmt.Errorf("error completing add metadata for media item task: %s", err)
  1244  	}
  1245  
  1246  	err = mediaItem.Refresh()
  1247  	if err != nil {
  1248  		return nil, fmt.Errorf("error refreshing media item: %s", err)
  1249  	}
  1250  
  1251  	return mediaItem, nil
  1252  }
  1253  
  1254  // Deprecated: use MediaItem.AddMetadataEntryAsync.
  1255  func (mediaItem *MediaItem) AddMetadataAsync(key string, value string) (Task, error) {
  1256  	return addMetadataDeprecated(mediaItem.vdc.client, types.MetadataStringValue, key, value, mediaItem.MediaItem.HREF)
  1257  }
  1258  
  1259  // DeleteMetadata deletes metadata depending on key provided as input from media item.
  1260  // Deprecated: Use MediaRecord.DeleteMetadata.
  1261  func (mediaItem *MediaItem) DeleteMetadata(key string) error {
  1262  	task, err := mediaItem.DeleteMetadataAsync(key)
  1263  	if err != nil {
  1264  		return err
  1265  	}
  1266  	err = task.WaitTaskCompletion()
  1267  	if err != nil {
  1268  		return fmt.Errorf("error completing delete metadata for media item task: %s", err)
  1269  	}
  1270  
  1271  	return nil
  1272  }
  1273  
  1274  // DeleteMetadataAsync deletes metadata depending on key provided as input from MediaItem.
  1275  // Deprecated: Use MediaRecord.DeleteMetadataAsync.
  1276  func (mediaItem *MediaItem) DeleteMetadataAsync(key string) (Task, error) {
  1277  	return deleteMetadata(mediaItem.vdc.client, mediaItem.MediaItem.HREF, mediaItem.MediaItem.Name, key, false)
  1278  }
  1279  
  1280  // Deprecated: use MediaRecord.AddMetadataEntry.
  1281  func (mediaRecord *MediaRecord) AddMetadata(key string, value string) (*MediaRecord, error) {
  1282  	task, err := mediaRecord.AddMetadataAsync(key, value)
  1283  	if err != nil {
  1284  		return nil, err
  1285  	}
  1286  	err = task.WaitTaskCompletion()
  1287  	if err != nil {
  1288  		return nil, fmt.Errorf("error completing add metadata for media item task: %s", err)
  1289  	}
  1290  
  1291  	err = mediaRecord.Refresh()
  1292  	if err != nil {
  1293  		return nil, fmt.Errorf("error refreshing media item: %s", err)
  1294  	}
  1295  
  1296  	return mediaRecord, nil
  1297  }
  1298  
  1299  // Deprecated: use MediaRecord.AddMetadataEntryAsync.
  1300  func (mediaRecord *MediaRecord) AddMetadataAsync(key string, value string) (Task, error) {
  1301  	return addMetadataDeprecated(mediaRecord.client, types.MetadataStringValue, key, value, mediaRecord.MediaRecord.HREF)
  1302  }
  1303  
  1304  // Deprecated: use MediaRecord.DeleteMetadataEntry.
  1305  func (mediaRecord *MediaRecord) DeleteMetadata(key string) error {
  1306  	task, err := mediaRecord.DeleteMetadataAsync(key)
  1307  	if err != nil {
  1308  		return err
  1309  	}
  1310  	err = task.WaitTaskCompletion()
  1311  	if err != nil {
  1312  		return fmt.Errorf("error completing delete metadata for media item task: %s", err)
  1313  	}
  1314  
  1315  	return nil
  1316  }
  1317  
  1318  // Deprecated: use MediaRecord.DeleteMetadataEntryAsync.
  1319  func (mediaRecord *MediaRecord) DeleteMetadataAsync(key string) (Task, error) {
  1320  	return deleteMetadata(mediaRecord.client, mediaRecord.MediaRecord.HREF, mediaRecord.MediaRecord.Name, key, false)
  1321  }