0% found this document useful (0 votes)
337 views11 pages

A10 Networks aXAPI With Python

I recently joined A10 Networks Professional Services Engineer based in the Pacific Northwest. Being the Pythonminded Network Engineer that I am, the first thing I looked for is how to use Python to automate configuration tasks. A10 provides an aXAPI interface that utilizes REST Web services calls to make configuration changes. More information can be found here, http://www.a10networks.com/products/axseriesaXAPI. php.

Uploaded by

Jesse Dias
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
337 views11 pages

A10 Networks aXAPI With Python

I recently joined A10 Networks Professional Services Engineer based in the Pacific Northwest. Being the Pythonminded Network Engineer that I am, the first thing I looked for is how to use Python to automate configuration tasks. A10 provides an aXAPI interface that utilizes REST Web services calls to make configuration changes. More information can be found here, http://www.a10networks.com/products/axseriesaXAPI. php.

Uploaded by

Jesse Dias
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 11

21/01/2015

A10NetworksaXAPIwithPython|A10NetworksVirtualADCCommunity
Search

A10NetworksaXAPIwithPython
PostedonOctober3,2013byEricChou

IrecentlyjoinedA10NetworksProfessionalServicesEngineerbasedinthePacificNorthwest.Being
thePythonmindedNetworkEngineerthatIam,thefirstthingIlookedforishowtousePythonto
automateconfigurationtasks.A10providesanaXAPIinterfacethatutilizesRESTWebservicescalls
tomakeconfigurationchanges.Moreinformationcanbefound
here,http://www.a10networks.com/products/axseriesaXAPI.php.
Hereisaquickoverviewofhowitworks:
1. GetasessionIDviaanHTTPScallwithusernameandpassword.
2. ConstructyourHTTPSpostbodyintheformatspecifiedperguide(XMLorJSon).
3. MakePOSTrequesttothedevice.
Figure1.Sourcehttp://www.a10networks.com/products/axseriesaXAPI.php.

Hereisthecodebrokendownintosectionsinaccordancetotheoverviewatthetop:
Step1.GettheSessionID
#!/usr/bin/envpython
#
#v1,September27,2013
#byEricChou
#
https://www.a10networks.com/vadc/index.php/a10networksaxapiwithpython/

1/11

21/01/2015

A10NetworksaXAPIwithPython|A10NetworksVirtualADCCommunity

#Reference:AX_aXAPI_Ref_v220121010.pdf
#
importhttplib,json,urllib,urllib2
#GetsthesessionIDtohost172.31.31.121(Student12)
c=httplib.HTTPSConnection(172.31.31.121)
c.request(GET,/services/rest/V2/?
method=authenticate&username=admin&password=a10&format=json)
response=c.getresponse()
data=json.loads(response.read())
session_id=data['session_id']
printSessionCreated.SessionID:+session_id
Step2.ConstructtheHTTPPostbody
NotethatIreusethesessionIDbecauseithasnottimedoutyet.Iskiptherepeatedstepsto
createmorebecausetheonlythingthatisdifferentistheHTTPbody.Fullscriptisattheendof
thepost.
###############################
#Step1.CreateServers#
###############################
#Createslbserverss110.0.2.128
#ConstructHTTPURLandPostBody
post_body=json.dumps(
{server:
{
name:s1,
host:10.0.2.128,
health_monitor:(default),
port_list:[
{"port_num":80,

https://www.a10networks.com/vadc/index.php/a10networksaxapiwithpython/

2/11

21/01/2015

A10NetworksaXAPIwithPython|A10NetworksVirtualADCCommunity

"protocol":2,}
],
}
}
)
url=https://172.31.31.121/services/rest/V2/?&session_id=+session_id+
&format=json&method=slb.server.create
printURLCreated.URL:+url+body:+post_body
(repeatandrinseforallthenecessaryconfigurationtasks)

Step3.Maketherequest

#Makingrequest
req=urllib2.Request(url,post_body)
rsp=urllib2.urlopen(req)
content=rsp.read()
printResult:+content

Thatisit!Simple,elegant,andrepeatablewithminimaleffort.:)

Hereisthedeviceblankconfigurationbeforescript:

AX12#shrun|sslb
AX12#
AX12#

Hereistheoutputafterexecution:

https://www.a10networks.com/vadc/index.php/a10networksaxapiwithpython/

3/11

21/01/2015

A10NetworksaXAPIwithPython|A10NetworksVirtualADCCommunity

>>>
SessionCreated.SessionID:69be80219842402d45f0488c52b782
URLCreated.URL:https://172.31.31.121/services/rest/V2/?
&session_id=69be80219842402d45f0488c52b782&format=json&method=slb.server.createbody:{server:
{host:10.0.2.128,name:s1,port_list:[{"protocol":2,"port_num":80}],health_monitor:
(default)}}
Result:{response:{status:OK}}
URLCreated.URL:https://172.31.31.121/services/rest/V2/?
&session_id=69be80219842402d45f0488c52b782&format=json&method=slb.server.createbody:{server:
{host:10.0.2.129,name:s2,port_list:[{"protocol":2,"port_num":80}],health_monitor:
(default)}}
Result:{response:{status:OK}}
URLCreated.URL:https://172.31.31.121/services/rest/V2/?
&session_id=69be80219842402d45f0488c52b782&format=json&method=slb.service_group.createbody:
{service_group:{protocol:2,name:http,member_list:[{"port":80,"server":"s1"},{"port":80,
"server":"s2"}],health_monitor:ping}}
Result:{response:{status:OK}}
URLCreated.URL:https://172.31.31.121/services/rest/V2/?
&session_id=69be80219842402d45f0488c52b782&format=json&method=slb.virtual_server.createbody:
{virtual_server:{subnet:{mask_len:24,address:10.0.1.122},vport_list:[{"service_group":"http",
"protocol":2,"port":80}],name:vip1}}
Result:{response:{status:OK}}
>>>

Deviceconfigurationafter:

AX12#shrun|sslb
slbservers110.0.2.128
connlimit8000000nologging
port80tcp
slbservers210.0.2.129
connlimit8000000nologging

https://www.a10networks.com/vadc/index.php/a10networksaxapiwithpython/

4/11

21/01/2015

A10NetworksaXAPIwithPython|A10NetworksVirtualADCCommunity

port80tcp
slbservicegrouphttptcp
healthcheckping
members1:80
members2:80
slbvirtualservervip110.0.1.122/24
port80tcp
servicegrouphttp
AX12#
AndnowIcanseethefantasticwebpagebymakingarequesttotheVIPservicedbys1:

aXAPIisprettycool.Iwillprobablyplaywithitmoreandpostmyprogresshere.

HappyCoding!LeavemeacommentonhowyoudliketoseeaXAPIintegrationscripts.:)

Hereisthefullscript:
https://www.a10networks.com/vadc/index.php/a10networksaxapiwithpython/

5/11

21/01/2015

A10NetworksaXAPIwithPython|A10NetworksVirtualADCCommunity

Note.Asyoucansee,thenextsteptooptimizewouldbetomaketheHTTPbodyconstructa
functiontocutdownthecode.Alsousemultiprocesstothreadwouldbenicetoo.

#!/usr/bin/envpython

#
#v1,September27,2013
#byEricChou
#
#Reference:AX_aXAPI_Ref_v220121010.pdf
#

importhttplib,json,urllib,urllib2

#GetsthesessionIDtohost172.31.31.121(Student12)
c=httplib.HTTPSConnection(172.31.31.121)
c.request(GET,/services/rest/V2/?
method=authenticate&username=admin&password=a10&format=json)
response=c.getresponse()
data=json.loads(response.read())
session_id=data['session_id']
printSessionCreated.SessionID:+session_id

###############################
#Step1.CreateServers#
###############################

https://www.a10networks.com/vadc/index.php/a10networksaxapiwithpython/

6/11

21/01/2015

A10NetworksaXAPIwithPython|A10NetworksVirtualADCCommunity

#Createslbserverss110.0.2.128
#ConstructHTTPURLandPostBody
post_body=json.dumps(
{server:
{
name:s1,
host:10.0.2.128,
health_monitor:(default),
port_list:[
{"port_num":80,
"protocol":2,}
],
}
}
)
url=https://172.31.31.121/services/rest/V2/?&session_id=+session_id+
&format=json&method=slb.server.create
printURLCreated.URL:+url+body:+post_body

#Makingrequest
req=urllib2.Request(url,post_body)
rsp=urllib2.urlopen(req)
content=rsp.read()
printResult:+content

#Createslbservers210.0.2.129
post_body=json.dumps(

https://www.a10networks.com/vadc/index.php/a10networksaxapiwithpython/

7/11

21/01/2015

A10NetworksaXAPIwithPython|A10NetworksVirtualADCCommunity

{server:
{
name:s2,
host:10.0.2.129,
health_monitor:(default),
port_list:[
{"port_num":80,
"protocol":2,}
],
}
}
)
url=https://172.31.31.121/services/rest/V2/?&session_id=+session_id+
&format=json&method=slb.server.create
printURLCreated.URL:+url+body:+post_body

#Makingrequest
req=urllib2.Request(url,post_body)
rsp=urllib2.urlopen(req)
content=rsp.read()
printResult:+content

####################################
#Step2.CreateServiceGroup#
####################################

#Createservicegrouphttpwithmemberservers1ands2

https://www.a10networks.com/vadc/index.php/a10networksaxapiwithpython/

8/11

21/01/2015

A10NetworksaXAPIwithPython|A10NetworksVirtualADCCommunity

post_body=json.dumps(
{service_group:
{
name:http,
protocol:2,
health_monitor:ping,
member_list:[
{"server":"s1",
"port":80,},
{"server":"s2",
"port":80,},
],
}
}
)
url=https://172.31.31.121/services/rest/V2/?&session_id=+session_id+
&format=json&method=slb.service_group.create
printURLCreated.URL:+url+body:+post_body

#Makingrequest
req=urllib2.Request(url,post_body)
rsp=urllib2.urlopen(req)
content=rsp.read()
printResult:+content

#####################################
#Step3.CreateVirtualServer#

https://www.a10networks.com/vadc/index.php/a10networksaxapiwithpython/

9/11

21/01/2015

A10NetworksaXAPIwithPython|A10NetworksVirtualADCCommunity

#####################################

#Createvirtualserver
post_body=json.dumps(
{virtual_server:
{
name:vip1,
subnet:
{
address:10.0.1.122,
mask_len:24,
},
vport_list:[
{"protocol":2,
"port":80,
"service_group":"http",
},
],
}
}
)
url=https://172.31.31.121/services/rest/V2/?&session_id=+session_id+
&format=json&method=slb.virtual_server.create
printURLCreated.URL:+url+body:+post_body

#Makingrequest
req=urllib2.Request(url,post_body)

https://www.a10networks.com/vadc/index.php/a10networksaxapiwithpython/

10/11

21/01/2015

A10NetworksaXAPIwithPython|A10NetworksVirtualADCCommunity

rsp=urllib2.urlopen(req)
content=rsp.read()
printResult:+content

ThisentrywaspostedinBlogPostsandtaggedA10Networks,A10ThunderSeries,AXSeries,aXAPI,HTTPS,Python.Bookmarkthepermalink.

Copyright2014A10Networks'VirtualADC(ApplicationDeliveryCommunity)AllRightsReserved.|PrivacyPolicy|TermsofService

https://www.a10networks.com/vadc/index.php/a10networksaxapiwithpython/

11/11

You might also like