Simple Python Library to control Citrix Netscaler 9.2+ load balancers with NITRO API. What we're trying here is to implement Citrix NITRO API SDK (that's available for Java and C#) in Python.
You can find a simple command-line interface using this library in contrib/. Feedback/comments welcome.
Very basic usage::
import time from nsnitro import *
nitro = NSNitro('localhost', 'api_user', 'api_user') nitro.login()
addserver = NSServer() addserver.set_name("mp-nitroserver") addserver.set_ipaddress("10.32.110.99") NSServer.add(nitro, addserver)
server = NSServer() server.set_name("mp-nitroserver") server = server.get(nitro, server) print server.get_name() + ": " + server.get_state()
server = NSServer() server.set_name("mp-nitroserver") NSServer.disable(nitro, server)
time.sleep(2)
server = NSServer() server.set_name("mp-nitroserver") server = server.get(nitro, server) print server.get_name() + ": " + server.get_state()
server = NSServer() server.set_name("mp-nitroserver") NSServer.enable(nitro, server)
time.sleep(2)
server = NSServer() server.set_name("mp-nitroserver") server = server.get(nitro, server) print server.get_name() + ": " + server.get_state()
addservice = NSService() addservice.set_name("aurora_testnitroadd") addservice.set_servername("mp-nitroserver") addservice.set_servicetype("HTTP") addservice.set_port(11111) NSService.add(nitro, addservice)
lbvserver = NSLBVServer() lbvserver.set_name("nitro_lbvserver_test") lbvserver.set_ipv46("10.32.110.55") lbvserver.set_port(11111) lbvserver.set_clttimeout(180) lbvserver.set_persistencetype("NONE") lbvserver.set_servicetype("HTTP") NSLBVServer.add(nitro, lbvserver) # print "LB vserver added"
lbbinding = NSLBVServerServiceBinding() lbbinding.set_name("nitro_lbvserver_test") lbbinding.set_servicename("aurora_testnitroadd") lbbinding.set_weight(40) NSLBVServerServiceBinding.add(nitro, lbbinding)
print "Binding added"
lbbinding = NSLBVServerServiceBinding() lbbinding.set_name("nitro_lbvserver_test") lbbindings = NSLBVServerServiceBinding.get(nitro, lbbinding)
for lbb in lbbindings: print "sgn: " + lbb.get_servicegroupname()
lbbinding = NSLBVServerServiceBinding() lbbinding.set_name("nitro_lbvserver_test") lbbinding.set_servicename("aurora_testnitroadd") NSLBVServerServiceBinding.delete(nitro, lbbinding)
print "Binding removed"
lbvserver = NSLBVServer() lbvserver.set_name("nitro_lbvserver_test") NSLBVServer.delete(nitro, lbvserver)
service = NSService() service.set_name("aurora_testnitroadd") service = service.get(nitro, service) print service.get_name() + ": " + service.get_svrstate() print service.get_name() + ": %s %s" % (service.get_port(), service.get_useproxyport())
updateservice = NSService() updateservice.set_name("aurora_testnitroadd") updateservice.set_comment("test comment") updateservice.set_useproxyport("NO") NSService.update(nitro, updateservice)
service = NSService() service.set_name("aurora_testnitroadd") service = service.get(nitro, service) print service.get_name() + ": " + service.get_svrstate() print service.get_name() + ": %s %s %s" % (service.get_port(), service.get_comment(), service.get_useproxyport())
disservice = NSService() disservice.set_name("aurora_testnitroadd") NSService.disable(nitro, disservice)
service = NSService() service.set_name("aurora_testnitroadd") service = service.get(nitro, service) print service.get_name() + ": " + service.get_svrstate()
enservice = NSService() enservice.set_name("aurora_testnitroadd") NSService.enable(nitro, enservice)
service = NSService() service.set_name("aurora_testnitroadd") service = service.get(nitro, service) print service.get_name() + ": " + service.get_svrstate()
renservice = NSService() renservice.set_name("aurora_testnitroadd") renservice.set_newname("aurora_testnitroadd_rename") NSService.rename(nitro, renservice)
renservice = NSService() renservice.set_name("aurora_testnitroadd_rename") renservice.set_newname("aurora_testnitroadd") NSService.rename(nitro, renservice)
delservice = NSService() delservice.set_name("aurora_testnitroadd") NSService.delete(nitro, delservice)
try: service = NSService() service.set_name("aurora_testnitroadd") service = service.get(nitro, service) print service.get_name() + ": " + service.get_svrstate() except NSNitroError, e: print e.message
delserver = NSServer() delserver.set_name("mp-nitroserver") NSServer.delete(nitro, delserver)
try: server = NSServer() server.set_name("mp-nitroserver") server = server.get(nitro, server) print server.get_name() + ": " + server.get_state() except NSNitroError, e: print e.message
cmdpol = NSSystemCMDPolicy() cmdpol.set_action('ALLOW') cmdpol.set_policyname('nitro-cmd-policy') cmdpol.set_cmdspec('show hardware') NSSystemCMDPolicy.add(nitro,cmdpol)
cmdpol = NSSystemCMDPolicy() cmdpol.set_action('DENY') cmdpol.set_policyname('nitro-cmd-policy') cmdpol.set_cmdspec('show hardware') NSSystemCMDPolicy.update(nitro,cmdpol)
cmdpol = NSSystemCMDPolicy() cmdpol.set_policyname('nitro-cmd-policy') NSSystemCMDPolicy.delete(nitro,cmdpol)