Property Relationships in vRA 7

In a previous post I described how to create a property relationship in vRA 6.2 using a value expression.

I thought I would attempt this using vRA 7 as the previous method is no longer valid. What we need to do now is create a vRO Action script to populate the vRA menu’s.

So to recap my requirements, I need to have a section on the request form that prompts users to select a management network for NIC0, and then depending on what the user selects they should be given specific options for NIC1, the table below shows the options.

Management vLAN (Primary NIC0) Production vLAN (Secondary NIC1)
vLANMAN_001 vLANPROD_001
vLANPROD_002
vLANMAN_002 vLANPROD_003
vLANPROD_004
vLANMAN_003 vLANPROD_005
vLANPROD_006

 

To get started we need to create our vRO action script, it’s at this point I must say a huge thanks to Simon Sparks from vcoflow.co.uk who showed me just how stupid I was being when trying this, and being pretty nice about it at the same time:

Open vRO client, select the Design view and then select the Actions tab:

 

You’re going to want to create a folder here for your custom actions, in my example I just used vra.custom.actions:

Create a new action and give it a name, for this example I have used “NetworkSelector”. Open the new action and go to the “Scripting” tab:

Change the Return Type to “Array of String”

Add a parameter I have just used netchoice for this example:

Now for the script area:


var arrOptions;
arrOptions = new Array();

if(netchoice)
{
switch(netchoice){
case "vlan_man001":
arrOptions.push("vlan_prod001");
arrOptions.push("vlan_prod002");
case "vlan_man002":
arrOptions.push("vlan_prod003");
arrOptions.push("vlan_prod004");
case "vlan_man003":
arrOptions.push("vlan_prod005");
arrOptions.push("vlan_prod006");
default:
arrOptions.push("");
}
}
else
{
arrOptions.push("");
}
return arrOptions

 

OK Save the vRO Action and go back to vRA. We now need to create the parent and child properties, we create the parent first:

  • Name: This is the custom property name that we are setting
  • Label: This is what appears on the request form
  • Order Index: This is the order the field will appear on the request form, as this is the parent we set this to 1
  • Data type – this is set to string
  • Display Advice: We need a dropdown for this example
  • Values: We predefine the values at this point, the values must match Network names

Save the property definition and then let create a new property definition for the child property:

First part of the property creation is pretty standard, I need to assign the correct order index here also:

For the values section choose Dropdown and then select “External Values” a box will appear where you can browse to your previously created vRO Action:

Now we need to bind the input parameter to the parent property:

Now we have both Property Definitions we need to create a property group assigning the two property definitions to the group:

Now you can assign the property group to your blueprint:

Now from the request form you can see the dropdowns with the appropriate options

Hope you find this helpful, and again massive thanks to Simon Sparks for his help with this, I am not a coder by any stretch and I’ll be studying javascript intensively over the next few weeks/months.

 

Facebooktwittergoogle_pluslinkedinby feather

2 comments

Leave a Reply

Your email address will not be published. Required fields are marked *