vRO : Retrieve NSX edge load balancer VIP provisioned by vRA

Ce message est également disponible en : French

Today, on this blog post i will show you how to retrieve the NSX Edge Load Balancer VIP provisioned by vRA.

Currently i am using 3 VMware components in my LAB : vRealize Automation 7.0 , vRealize Orchestrator 7.0.1 and NSX 6.2.

I have created a blueprint for the provisioning of 2 VMs behind a load balancer.

In my lab, i want to retrieve all the load balancer’s VIP provisioned by vRA in NSX. I will used API call for this work and vRO script to achieve my goal.

So, the first thing to do :

In vRO you have to create a HTTP Rest HOST. In my exemple , it will be https://NSXMANAGER/API/

NSXVRAVRO1

 

Create a new workflow and use a generic “Scriptable Task“.  I will simply named it “Retrieve Edge”.

NSXVRAVRO2

The only input that i will add on this generic scriptable task is the “rest host” (My NSX Manager).

NSXVRAVRO3

In the “Scripting” tab, we will first retrieve all the Edge located in the NSX Manager. We will use this URL . https://NSXMANAGER/API/4.0/edges/

var request = restHost.createRequest("GET", "4.0/edges/");  //Get all Edge
request.contentType = "application/xml";
System.log("Check all Edge - Request URL: " + request.fullUrl); //Display request URL
var response = request.execute();

if(response.statusCode != 200) throw("Could not GET edge list ! : " + response.statusCode + "\n" + response.contentAsString);
var edgelistXML = new XML(response.contentAsString); //Convert response as String

 

Then, we have to create a list of Edges created by vRA. In this case, vRA create a description with the value “Edge provisioned and managed by VMware vRealize Automation”. So basically , we just have to found a match.

We will have a list of Edge’s ID provisioned by VRA.


// Get EdgeSummary node 

var EdgeList = edgelistXML.edgePage.edgeSummary;

//Check for EdgeID provisioned by vRA.

var EdgeID = [];

for each (var edge in EdgeList) {
if (edge.description.text() == "Edge provisioned and managed by VMware vRealize Automation") {
EdgeID.push(edge.objectId.text().toString());
}
}

if (EdgeID.length == null) throw("No Edge found");

System.log("Edge-Id found :"+EdgeID);

Finally, if a match is found, we have to retrieve the VIP of our Edge based on our Edge ID. We have to call a “GET” on this URL : https://NSXMANAGER/API/4.0/edges/edge-id


//Check for VIP

var EdgeIP = [];

for each(var ID in EdgeID) {
var request = restHost.createRequest("GET", "4.0/edges/"+ID);
request.contentType = "application/xml";
System.log("Check VIP on Request URL: " + request.fullUrl);
var response = request.execute();
if(response.statusCode != 200) throw("Could not GET edge from ID ! : " + response.statusCode + "\n" + response.contentAsString);
var edgeconfXML = new XML(response.contentAsString);
EdgeIP.push(edgeconfXML.features.loadBalancer.virtualServer.ipAddress.text().toString());
}

System.log("Edge IP :"+EdgeIP);

 

Then you will display the VIP of your NSX Edge Load Balancer provisioned by vRA.

NSXVRAVRO4

On my next post, i will show you how to add a VM in a existing load balancer.

 

Julien Varela
Follow me

Julien Varela

Virtualisation & Cloud manager at Excellium Services
Consultant Virtualisation/Cloud au sein de Excellium Services et blogger @vThink. Je suis passionné par les nouvelles technologies. Et tout particulièrement, celles concernant la virtualisation. j'ai su apporter par mon autonomie, ma curiosité, ma pugnacité et ma technicité mon expertise dans ce domaine.
Julien Varela
Follow me

Leave a Reply