3 Replies Latest reply on Jan 31, 2017 7:53 AM by Brian Knutsson

    How to associate a tag using vAPI

    oendelm Novice

      Hi guys,

       

      I'm trying to associate a vCenter tag to some VMs using the vAPI in orchestrator.

       

      I've found the "com_vmware_cis_tagging_tag_association" object that has the attach method. The input parametes to the method are tag_id (string) and object_id (com_vmware_vapi_std_dynamic_id).

       

      I've found a way to get the tag_id but I was not able to get the object_id. How can I get an object of the type "com_vmware_vapi_std_dynamic_id" from a VcVirtualMachine?

       

      Thanks.

        • 1. Re: How to associate a tag using vAPI
          iiliev Champion
          Community WarriorsVMware Employees

          Hi,

           

          Here is some sample code (dynamic ID creation is on lines 33-35). It also shows how you can search for a VM using vAPI if VC:VirtualMachine object is not available.

           

          // Input parameters
          //  endpoint - vAPI endpoint
          //  vm - VC:VirtualMachine (optional)
          
          if (endpoint == null) {
            throw "'endpoint' parameter should not be null";
          }
          
          var client = endpoint.client();
          
          var vmid;
          if (vm != null) {
            // VC:VirtualMachine input parameter is provided; get VM ID from it
            vmid = vm.id;
          } else {
            // Find VM by name using vAPI; you can find it also by other properties
            var vmsvc = new com_vmware_vcenter_VM(client);
            var spec = new com_vmware_vcenter_VM_filter__spec();
            spec.names = ["your-vm-name"]; // replace with the name of VM you wan to find
            var found = vmsvc.list(spec);
            if (found == null || found.length == 0) {
              throw "No VM found";
            }
            if (found.length > 1) {
              System.log("Multiple VMs found; will use the first one");
            }
            vmid = found[0].vm;
          }
          
          // Attach the tag
          var tagsvc = new com_vmware_cis_tagging_tag__association(client);
          var tagid = "urn:vmomi:InventoryServiceTag:63c7dd25-af15-4020-9c9a-6490b4c5f40b:GLOBAL"; // replace with your tag ID
          var dynid = new com_vmware_vapi_std_dynamic__ID();
          dynid.id = vmid;
          dynid.type = "VirtualMachine";
          tagsvc.attach(tagid, dynid);
          
          1 person found this helpful
          • 2. Re: How to associate a tag using vAPI
            oendelm Novice

            Hi,

             

            Thank you very much again.

            • 3. Re: How to associate a tag using vAPI
              Brian Knutsson Enthusiast
              vExpert

              I wrote a short article about how to do this. https://vm.knutsson.it/2017/01/assigning-vcenter-tags-using-vrealize-orchestrator/

               

              There are also links to a vRO package with example workflows.