vRA: Returning a Catalog Item from a Blueprint ID in vRO
After creating a Blueprint in vRA it is necessary to publish the Blueprint into the Catalog so that it can be consumed by the appropriate set of users. This creates a link between the two different items since the Catalog Item is part of the vRA appliance and the Blueprint can be found in the Windows appliance.
Here’s the Blueprint details from the Inventory tab of vRO, with the virtualMachineTemplateID, a.k.a the Blueprint ID.
Now look at the Binding id on the Catalog Item in vRO to see matching IDs.
Say you now have the BlueprintID and need to return the Catalog Item, how would you do it? The following JavaScript code from a vRO Action I created for this shows you how:
[code language=“javascript”]
var vCACAdminCatalogItems = Server.findAllForType(“vCACCAFE:AdminCatalogItem”);
for each (var vCACAdminCatalogItem in vCACAdminCatalogItems) {
try {
var providerBinding = vCACAdminCatalogItem.providerBinding; var bindingId = providerBinding.getBindingId().toString();
if (bindingId == blueprintId) {
var adminCatalogItem = vCACAdminCatalogItem; break; } } catch(ex) {
} } return adminCatalogItem
[/code]
The getCatalogItemByBlueprintID Action can be downloaded from GitHub.
I put the action into a Test Workflow to demonstrate how it works. This is the Scripting Tab of the action.
Schema of the test workflow:
The Action will output an item of type vCACCAFE:AdminCatalogItem:
The Scriptable Task in the workflow will simply write the ID of the Catalog Item to the system log. We know we should be expecting to see 4e5fe6ee-e8c6-4fcb-8458-9cdbf2cfd465, the ID of the Catalog Item:
Success :-)