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 }