Package: nsnitro
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 timefrom nsnitro import *nitro = NSNitro('localhost', 'api_user', 'api_user')nitro.login()# add server testaddserver = 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()# disable server testserver = 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()# enable server testserver = 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()# add service testaddservice = NSService()addservice.set_name("aurora_testnitroadd")addservice.set_servername("mp-nitroserver")addservice.set_servicetype("HTTP")addservice.set_port(11111)NSService.add(nitro, addservice)# add lbvserver testlbvserver = 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"# bind service to lbvserver testlbbinding = 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()# delete binding testlbbinding = NSLBVServerServiceBinding()lbbinding.set_name("nitro_lbvserver_test")lbbinding.set_servicename("aurora_testnitroadd")NSLBVServerServiceBinding.delete(nitro, lbbinding)print "Binding removed"# delete lbvserver testlbvserver = NSLBVServer()lbvserver.set_name("nitro_lbvserver_test")NSLBVServer.delete(nitro, lbvserver)# get service testservice = 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())#update service testupdateservice = NSService()updateservice.set_name("aurora_testnitroadd")updateservice.set_comment("test comment")updateservice.set_useproxyport("NO")NSService.update(nitro, updateservice)# get service testservice = 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())# disable service testdisservice = 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()# enable service testenservice = 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()# rename service testrenservice = NSService()renservice.set_name("aurora_testnitroadd")renservice.set_newname("aurora_testnitroadd_rename")NSService.rename(nitro, renservice)# rename service back testrenservice = NSService()renservice.set_name("aurora_testnitroadd_rename")renservice.set_newname("aurora_testnitroadd")NSService.rename(nitro, renservice)# delete service testdelservice = 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# delete server testdelserver = 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#add system cmd policycmdpol = NSSystemCMDPolicy()cmdpol.set_action('ALLOW')cmdpol.set_policyname('nitro-cmd-policy')cmdpol.set_cmdspec('show hardware')NSSystemCMDPolicy.add(nitro,cmdpol)#update system cmd policycmdpol = NSSystemCMDPolicy()cmdpol.set_action('DENY')cmdpol.set_policyname('nitro-cmd-policy')cmdpol.set_cmdspec('show hardware')NSSystemCMDPolicy.update(nitro,cmdpol)#delete system cmd policycmdpol = NSSystemCMDPolicy()cmdpol.set_policyname('nitro-cmd-policy')NSSystemCMDPolicy.delete(nitro,cmdpol)