Beispiel #1
0
	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))
Beispiel #2
0
	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))
Beispiel #3
0
	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))
Beispiel #4
0
 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))
Beispiel #5
0
 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))
Beispiel #6
0
    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
Beispiel #7
0
	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))
Beispiel #8
0
	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))
Beispiel #9
0
	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
Beispiel #10
0
    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))