def check_status(self, client, lbv_name, svc_name) : try : #Retrieve state of a lbvserver obj_lbv = lbvserver_stats.get(client, lbv_name) print("statlbvserver_byname result::name="+obj_lbv.name+", servicetype="+obj_lbv.type +",state="+obj_lbv.state) #Retrieve state of a servicegroup obj_svc = service.get(client, svc_name) print("statsvcg_byname result::name="+obj_svc.name+", servicetype="+obj_svc.servicetype +",state="+obj_svc.svrstate) #filtered list of lbvservers filter_params = [] filter_params = [filtervalue() for _ in range(1)] filter_params[0] = filtervalue("effectivestate","DOWN") result_list = lbvserver.get_filtered(client, filter_params) if result_list : print("getlbvserver_svc_bindings result::length="+str(len(result_list))) for x in range(0, len(result_list)): print("x="+str(x)+",lbvserver_byfilter result::name="+result_list[x].name+", servicetype="+result_list[x].servicetype +",state="+result_list[x].effectivestate) else: print("getlbvserver_svc_bindings :: Done") print("check_status - Done") except nitro_exception as e : print("Exception::check_status::errorcode="+str(e.errorcode)+",message="+ e.message) except Exception as e: print("Exception::check_status::message="+str(e.args))
def statlbvserver_byname(self, client) : try : obj = lbvserver_stats.get(client, "lb_vip") print("statlbvserver_byname result::name="+obj.name+", servicetype="+obj.type +",totalpktsrecvd="+obj.totalpktsrecvd) except nitro_exception as e : print("Exception::statlbvserver_byname::errorcode="+str(e.errorcode)+",message="+ e.message) except Exception as e : print("Exception::statlbvserver_byname::message="+str(e.args))
def statlbvserver(self, client): try: result = lbvserver_stats.get(client) print("statlbvserver result::length="+str(len(result))) except nitro_exception as e: print("Exception::statlbvserver::errorcode="+str(e.errorcode)+",message="+ e.message) except Exception as e: print("Exception::statlbvserver::message="+str(e.args))
def statlbvserver(self, client): try: result = lbvserver_stats.get(client) print("statlbvserver result::length=" + str(len(result))) except nitro_exception as e: print("Exception::statlbvserver::errorcode=" + str(e.errorcode) + ",message=" + e.message) except Exception as e: print("Exception::statlbvserver::message=" + str(e.args))
def statlbvserver_byname(self, client): try: obj = lbvserver_stats.get(client, "lb_vip") print("statlbvserver_byname result::name=" + obj.name + ", servicetype=" + obj.type + ",totalpktsrecvd=" + obj.totalpktsrecvd) except nitro_exception as e: print("Exception::statlbvserver_byname::errorcode=" + str(e.errorcode) + ",message=" + e.message) except Exception as e: print("Exception::statlbvserver_byname::message=" + str(e.args))
def vserver(self, nsc, nsc_data="lb"): # Initialize (only two netscaler data types we deal with) data = [] if nsc_data != "lb": redis_key = "gslb" else: redis_key = "lbvserver" # Make sure we can connect if self.connect(nsc) == False: return False # Use Nitro SDK to retreive all vservers try: if nsc_data != "lb": results = gslbvserver_stats.get(self.session) else: results = lbvserver_stats.get(self.session) except nitro_exception as e: traceback.print_stack() print("Issue with {!s}".format(nsc)) print(sys.exc_info()[0]) print("Exception::errorcode=" + str(e.errorcode) + ",message=" + e.message) self.disconnect() return False # Build vserver list and store name and state into redis for r in results: if len(r.name) > 0: vserver = r.name state = r.state data.append(vserver) self.redis.set( "nsc>" + nsc + ">{!s}>".format(redis_key) + vserver, state) # Delete nonexisting vservers in redis for key in self.redis.keys("nsc>" + nsc + ">{!s}>*".format(redis_key)): vserver = key.split('>')[3] if vserver not in data: self.redis.delete(key) # Dump GSLB vserver list into redis if len(data) > 0: self.redis.set("nsc>" + nsc + ">{!s}".format(redis_key), json.dumps(data)) self.disconnect() return True
def change_state(self, client, lbv_name, svc_name) : try : if lbvserver_stats.get(client, lbv_name).state == "ENABLED": lbvserver.disable(client, lbv_name) else: lbvserver.enable(client, lbv_name) print("service result::state="+service.get(client, svc_name).svrstate) if service.get(client, svc_name).svrstate == "UP": service.disable(client, svc_name) else: service.enable(client, svc_name) print("change_state - Done") except nitro_exception as e : print("Exception::change_state::errorcode="+str(e.errorcode)+",message="+ e.message) except Exception as e: print("Exception::change_state::message="+str(e.args))
def stats(self, client, lbv_name, svc_name) : try : obj = lbvserver_stats.get(client, lbv_name) print("statlbvserver_byname result::name="+lbvserver.get(client, lbv_name).ipv46+", servicetype="+obj.type +",totalrequests="+obj.totalrequests) obj_svc = service_stats.get(client, svc_name) print("statservice_byname result::name="+obj_svc.name+", servicetype="+obj_svc.servicetype +",totalrequests="+obj_svc.totalrequests) #obj_svcgms = servicegroupmember_stats() #obj_svcgms.servicegroupname = svcg_name #obj_svcgms.ip = "192.168.2.10" #obj_svcgms.port = 80 #obj1_svcgms = servicegroupmember_stats.get(client, obj_svcgms) #print("statservicegrpmem result::req="+obj1_svcgms.servicegroupname+", curClintConnctions="+obj1_svcgms.curclntconnections) print("stats - Done") except nitro_exception as e : print("Exception::stats::errorcode="+str(e.errorcode)+",message="+ e.message) except Exception as e: print("Exception::stats::message="+str(e.args))
def main(cls, args_): if(len(args_) < 3): print("Usage: run.bat <ip> <username> <password>") return config = basic_lbvServer() config.ip = args_[1] config.username = args_[2] config.password = args_[3] try : #Create an instance of the nitro_service class to connect to the appliance ns_session = nitro_service("10.217.242.90","HTTP") ns_session.set_credential("nsroot", config.password) ns_session.timeout = 310 #Log on to the appliance using your credentials ns_session.login() #Enable the load balancing feature. features_to_be_enabled = "lb" ns_session.enable_features(features_to_be_enabled) #Create an instance of the server class server_obj = server() #Create an instance of the service class service_obj = service() #Create an instance of the virtual server class new_lbvserver_obj = lbvserver() #Create a new virtual server new_lbvserver_obj.name = "MyFirstLbVServer" new_lbvserver_obj.ipv46 = "10.102.29.88" new_lbvserver_obj.servicetype = "HTTP" new_lbvserver_obj.port = 80 new_lbvserver_obj.lbmethod = "ROUNDROBIN" #lbvserver.delete(ns_session, new_lbvserver_obj.name) #lbvserver.add(ns_session, new_lbvserver_obj) #Retrieve the details of the virtual server new_lbvserver_obj = lbvserver.get(ns_session,new_lbvserver_obj.name) print("Name : " +new_lbvserver_obj.name +"\n" +"Protocol : " +new_lbvserver_obj.servicetype) #Retrieve state of a lbvserver obj_lbv = lbvserver_stats.get(ns_session, "MyFirstLbVServer") print("statlbvserver_byname result::name="+obj_lbv.name+", servicetype="+obj_lbv.type +",state="+obj_lbv.state) #Retrieve state of a servicegroup obj_svcg = servicegroup.get(ns_session, "http_svcg") print("statsvcg_byname result::name="+obj_svcg.servicegroupname+", servicetype="+obj_svcg.servicetype +",state="+obj_svcg.servicegroupeffectivestate) #Delete the virtual server #lbvserver.delete(ns_session, new_lbvserver_obj.name) #Save the configurations ns_session.save_config() #Logout from the NetScaler appliance ns_session.logout() except nitro_exception as e: print("Exception::errorcode="+str(e.errorcode)+",message="+ e.message) except Exception as e: print("Exception::message="+str(e.args)) return
def get_csvserver(self, client, parament2): try: result_csvserver_state = csvserver_stats.get(client) result_cspolicy = cspolicy.get(client) result_lbvserver_state = lbvserver_stats.get(client) if result_csvserver_state: flag = False for i in range(0, len(result_csvserver_state)): #if parament2 == res if parament2 == result_csvserver_state[i].name: flag = True policy_count = csvserver_cspolicy_binding.count( client, result_csvserver_state[i].name) policy_name = csvserver_cspolicy_binding.get( client, result_csvserver_state[i].name) print(" Name :" + result_csvserver_state[i].name) print(" IP: " + result_csvserver_state[i].primaryipaddress + ":" + str(result_csvserver_state[i].primaryport)) print(" State:" + result_csvserver_state[i].state + " Type: " + result_csvserver_state[i].type) print(" Total hits:" + result_csvserver_state[i].tothits + " Hits rates:" + str(result_csvserver_state[i].hitsrate)) #print(" Established State : " + result[j].establishedconn) print(" Total requests :" + result_csvserver_state[i].totalrequests) print(" Total responses :" + result_csvserver_state[i].totalresponses) print( " Current server :" + str(result_csvserver_state[i].cursrvrconnections)) print #print("<-------------------------------------->") for k in range(0, policy_count): for j in range(0, len(result_cspolicy)): global URL if result_cspolicy[ j].policyname == policy_name[ k].policyname: URL = result_cspolicy[j].url #print("url:" + URL) print(" Policy:") print(" |--- Name: " + policy_name[k].policyname) print(" |--- Hits: " + policy_name[k].hits) print(" |--- URL: " + URL) print(" |--- Priority: " + policy_name[k].priority) print(" |--- Target LB: " + policy_name[k].targetlbvserver) print for k in range(0, policy_count): # for j in range(0,len(result_cspolicy)): print print(" Policy " + policy_name[k].policyname + " Target LBvserver:") global lbvserver_name lbvserver_name = policy_name[k].targetlbvserver for p in range(0, len(result_lbvserver_state)): if lbvserver_name == result_lbvserver_state[ p].name: # print(" LBvserver:") print(" |--- Name: " + result_lbvserver_state[p].name) print(" |--- IP: " + result_lbvserver_state[p]. primaryipaddress) print(" |--- Port:" + str( result_lbvserver_state[p].primaryport)) print(" |--- State: " + result_lbvserver_state[p].state) print(" |--- Type: " + result_lbvserver_state[p].type) print(" |--- Request bytes:" + result_lbvserver_state[p]. totalresponsebytes) print(" |--- Total packets sent:" + result_lbvserver_state[p]. totalpktssent) print(" |--- Health of the vserver:" + result_lbvserver_state[p].vslbhealth) print( " |--- Number of client connections in ESTABLISHED state:" + result_lbvserver_state[p]. establishedconn) result_lbv_service_binding = lbvserver_service_binding.get( client, result_lbvserver_state[p].name) for kk in range( 0, len(result_lbv_service_binding)): print(" |--- Service : ") print(" >--- Service Name : " + result_lbv_service_binding[kk]. servicename) print(" >--- Service IP :" + result_lbv_service_binding[kk]. ipv46) print(" >--- Service State: " + result_lbv_service_binding[kk]. curstate) #print("<<------------------------------------>>") elif (i == len(result_csvserver_state) - 1) & (flag == False): #print(isinstance(i,int)) #elif i == len(result_csvserver)-1: print( "There is no such csvserver name or policy, Exit!") # policy_count = csvserver_cspolicy_binding.count(client,result[i].name) # print("policy count:" + str(policy_count)) # policy_name = csvserver_cspolicy_binding.get(client,result[i].name) # for j in range(0,policy_count): # print("Policy name :" + policy_name[j].policyname) # for i in range(0,len(result)): # print("Name of csvserver:" + result[i].name) # print # print("Target Load Balance Virtual Server:" + result[i].lbvserver) # print # print("The State of csvserver:" + result[i].curstate) # print # print("Down State Flush" + result[i].downstateflush) # print # print("****************************************") print("****************************************") except nitro_exception as e: print("Exception:: errorcode=" + str(e.errorcode) + ", message=" + e.message) except Exception as e: print("Exception:: get_csvserver:: message=" + str(e.args))