08-17-2019 02:50 PM
I use vRealize Orchestrator to create workflows everyday and was given a task to integrate with UCSC plugin and work on creating VLANs on our B200 M4 blades.
I see that there are only a few sample workflows but I have made my way to figuring out some of the issues I had initially. To add a VLAN there is already a workflow available. But to add that VLAN to vnic templates, I am having issues.
To add VLAN to vnic templates I used to use my Powershell script which is broken down to these steps -
1. Create VLAN in UCSC using “Add-UcsCentralVlan” cmdlet and then “Add-UcsCentralFabricVlanReq”. In vRO the included workflow did this part.
2. Add VLAN to vnic templates by using “Get-UcsCentralVnicTemplate” cmd and pipe “Add-UcsCentralVnicInterface” to it.
3. Add the port group in VMware using PowerCLI.
Step 2 is where I am stuck. When using “System.getModule(“com.cisco.ucs.central.vnic”).addVnicInterface() cmd, I have included these parameters - Ucsc handle, parent Vnic template, defaultnet, vlan name, etc.
Here is my code -
var name = "G-3490-Test"; var sID = name.split("-")[1]; var ID = parseInt(sID, 10); //Get LanCloud var UCSC = UcscActionUtils.getAllUcsCentral(); var ep = System.getModule("com.cisco.ucs.central.fabric").getFabricEp(UCSC[0]); var lanCloud = System.getModule("com.cisco.ucs.central.fabric").getLanCloud(UCSC[0],ep); //Create VLAN var vlan = System.getModule("com.cisco.ucs.central.fabric").addVlan(UCSC[0],lanCloud,null,null,ID,null,name,null,null,null,null,null); //Create VLAN req var org = System.getModule("com.cisco.ucs.central.org").getOrg(UCSC[0],null,null,null,null,"root",null,null); var vlanReq = System.getModule("com.cisco.ucs.central.fabric").addFabricVlanReq(UCSC[0],org,name,null,null); //Create Vnic Interfaces var vnictemplates = System.getModule("com.cisco.ucs.central.vnic").getVnicTemplate(UCSC[0]); var vnics = []; for each (vnictemplate in vnictemplates) { if (vnictemplate.name.match("-a") || vnictemplate.name.match("-b")) vnics.push(vnictemplate); } for each (vnic in vnics) { System.getModule("com.cisco.ucs.central.vnic").addVnicInterface(UCSC[0],vnic,null,name,false,false); }
I get this error -
“InternalError: No Object Added. (Dynamic Script Module name : addVnicInterface#31)”.
What am I doing wrong?
Solved! Go to Solution.
08-19-2019 02:38 PM - edited 08-19-2019 02:40 PM
Even though I opened up a case and Cisco replied stating they no longer support it, I got it figured out myself. It seems the second input parameter in addVnicInterface() is expecting an array instead of a variable.
I changed this -
//Add VnicInterface in each VNIC template for each (vnic in vnics) { System.getModule("com.cisco.ucs.central.vnic").addVnicInterface(Ucsc,vnic,null,name,null,null); }
to this -
//Add VnicInterface in each VNIC template for each (vnic in vnics) { var vnicarray = []; vnicarray.push(vnic); System.getModule("com.cisco.ucs.central.vnic").addVnicInterface(Ucsc,vnicarray,null,name,null,null); }
and it now works flawlessly!
08-19-2019 02:38 PM - edited 08-19-2019 02:40 PM
Even though I opened up a case and Cisco replied stating they no longer support it, I got it figured out myself. It seems the second input parameter in addVnicInterface() is expecting an array instead of a variable.
I changed this -
//Add VnicInterface in each VNIC template for each (vnic in vnics) { System.getModule("com.cisco.ucs.central.vnic").addVnicInterface(Ucsc,vnic,null,name,null,null); }
to this -
//Add VnicInterface in each VNIC template for each (vnic in vnics) { var vnicarray = []; vnicarray.push(vnic); System.getModule("com.cisco.ucs.central.vnic").addVnicInterface(Ucsc,vnicarray,null,name,null,null); }
and it now works flawlessly!
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide