NSX Automation Part 1 – Create Logical Switches from CSV

NSX is a great technology and automating it with the REST API allows us to quickly provision networking.  Here is a sample on how to create Logical Switches from a CSV file:

 

Contents of CSV file

ndaher@ubuntu:~$ cat ls.csv

name,description,tenantId
ls-1,ls-1 desc,virtual wire tenant
ls-2,ls-2 desc,virtual wire tenant
ls-3,ls-3 desc,virtual wire tenant
ls-4,ls-4 desc,virtual wire tenant
ls-5,ls-5 desc,virtual wire tenant

 

Contents of AWK script file, csv2xml2.awk

NR == 1 {for (i = 1; i <=NF; i++)
tag[i]=$i
}
NR != 1 {
printf "curl -k -u admin:Password! -H 'content-type: application/xml' -X " xtype " -d '"
if (node == "interface") printf "<interfaces>"
printf "<" node ">"
for (i = 1; i <= NF; i++) {
if (node == "interface" && tag[i] == "primaryAddress")
printf "<addressGroups><addressGroup>"
if (node == "interface" && tag[i] == "mtu")
printf "</addressGroup></addressGroups>"
printf "<" tag[i] ">" $i "</" tag[i] ">"
}
printf "</" node ">"
if (node == "interface") printf "</interfaces>"
printf "' "
print "https://" nsxmanager "/api/" api ".0" scope
}

 

 

How we execute command

 

ndaher@ubuntu:~$ awk -v xtype=POST -v node=virtualWireCreateSpec -v nsxmanager=nsxman.local -v scope=/vdn/scopes/vdnscope-1/virualwires -v api=2 -f csv2xml2.awk -F, ls.csv | sh

Output produced that is piped to SH

curl -k -u admin:Password! -H 'content-type: application/xml' -X POST -d '<virtualWireCreateSpec><name>ls-1</name><description>ls-1 desc</description><tenantId>virtual wire tenant</tenantId></virtualWireCreateSpec>' https//nsxman.local/api/2.0/vdn/scopes/vdnscope-1/virualwires

curl -k -u admin:Password! -H ‘content-type: application/xml’ -X POST -d ‘<virtualWireCreateSpec><name>ls-2</name><description>ls-2 desc</description><tenantId>virtual wire tenant</tenantId></virtualWireCreateSpec>’ https//nsxman.local/api/2.0/vdn/scopes/vdnscope-1/virualwires

curl -k -u admin:Password! -H ‘content-type: application/xml’ -X POST -d ‘<virtualWireCreateSpec><name>ls-3</name><description>ls-3 desc</description><tenantId>virtual wire tenant</tenantId></virtualWireCreateSpec>’ https//nsxman.local/api/2.0/vdn/scopes/vdnscope-1/virualwires

curl -k -u admin:Password! -H ‘content-type: application/xml’ -X POST -d ‘<virtualWireCreateSpec><name>ls-4</name><description>ls-4 desc</description><tenantId>virtual wire tenant</tenantId></virtualWireCreateSpec>’ https//nsxman.local/api/2.0/vdn/scopes/vdnscope-1/virualwires

curl -k -u admin:Password! -H ‘content-type: application/xml’ -X POST -d ‘<virtualWireCreateSpec><name>ls-5</name><description>ls-5 desc</description><tenantId>virtual wire tenant</tenantId></virtualWireCreateSpec>’ https//nsxman.local/api/2.0/vdn/scopes/vdnscope-1/virualwires

 

Permanent link to this article: https://daherlabs.mywire.org/wordpress/?p=461

Leave a Reply

Your email address will not be published.