Tag Archives: vRA API

For the current project I’m involved in, I was asked to deliver a list of vRA deployed machines that have a Production status.

At first I have been writing a short piece of code that obtained all vRA managed machines and for each machine gathered the customer properties. Creating this workflow actually took less time than the execution itself as the environment has about 4200 managed objects. Next to the fact that this is time consuming to wait for, it will also generate a lot of load on the vRO service and the vRA IaaS API.

The developer in me felt like improving this and move the functionality to the vRA IaaS API, the API nevertheless has the custom properties linked to the virtual machine entity object. Eventually, after some research on ODATA queries and how to query for properties within linked entities, I was able to write the following ODATA filter:

The third step is to actually perform the call to vRA IaaS to return an array of vCAC:Entity based on the filter.

The last step in the code is to System.log() the names of the VirtualMachines that match the query.

When necessary to have vCAC:VirtualMachine objects instead of vCAC:entity objects change the last part of the code to:

Map vCAC:Entity to vCAC:VirtualMachine

JavaScript

1

2

3

varvCACVirtualMachines=machines.map(function(machine){

returnmachine.getInventoryObject();

});

Conclusion

Gathering virtualmachines based on specific properties can be a hassle using ODATA queries as in some cases it is not completely clear on how to structure the query. Eventually when the query is ready and working it shows to be much faster than creating a script to “hammer” the API for data. The two screenshots below show the actually difference between the initial code and the improved code. The first screenshot is the original code, it errors out after 30 minutes of API calls. The second screenshot is a capture of the improved code, it runs for only 1 second to return the list of VirtualMachines matching the filter.

First attempt ended up in an error returned by the vRA IaaS API after 30 minutes of performing API calls.

Second attempt with improved code. The runtime of the script is now only a matter of seconds.

Recent Posts

Automate-IT Archive

Olivier is an automation consultant at ITQ since 2015. Before he worked for Atos on the automation of the Canopy Cloud solutions. Olivier touched VMware products for the first time in 2011 and has been a fan ever since. Today his expertise is mainly focused on automation with VMware products and designing and implementing the logic that the business requires.