def configureIP(RouterInst,Interface,IP_address):				#Configures IP address

	flushBuffer(1,RouterInst)
	RouterInst.sendcontrol('m')
	RouterInst.expect(['/w+@.*/#',pexpect.EOF,pexpect.TIMEOUT],timeout=2)
	config = """curl -H "Content-Type: application/json" -d '{"IpAddr": "%s", "IntfRef": "%s"}' http://localhost:8080/public/v1/config/IPv4Intf""" % (IP_address,Interface)
	RouterInst = executeCmd(RouterInst,config)
	outputCheck(RouterInst,Interface,IP_address,config)
	return RouterInst
示例#2
0
def checkBGPRoute(RouterInst):

    var = 'checkBGPRoute'
    flushBuffer(1, RouterInst)
    RouterInst.expect(['/w+@.*/#', pexpect.EOF, pexpect.TIMEOUT], timeout=3)
    config = """curl -i -H "Content-Type: application/json" "http://*****:*****@.*/#', pexpect.EOF, pexpect.TIMEOUT], timeout=3)
    logger.info(RouterInst.before, also_console=True)
    output = RouterInst.before
    outputCheck(RouterInst, var, output)
    return RouterInst
示例#3
0
def checkAllBGPNeighbors(RouterInst):

    var = 'checkAllBGPNeighbors'
    flushBuffer(1, RouterInst)
    RouterInst.expect(['/w+@.*/#', pexpect.EOF, pexpect.TIMEOUT], timeout=3)
    config = """curl -H "Accept: application/json" "http://*****:*****@.*/#', pexpect.EOF, pexpect.TIMEOUT], timeout=3)
    logger.info(RouterInst.before, also_console=True)
    output = RouterInst.before
    outputCheck(RouterInst, var, output)
    return RouterInst
示例#4
0
def checkIPV4Route(
        RouterInst
):  #Check BGP Neighbors are learnt and populated in IPv4table

    var = 'checkIPV4Route'
    flushBuffer(1, RouterInst)
    RouterInst.expect(['/w+@.*/#', pexpect.EOF, pexpect.TIMEOUT], timeout=3)
    config = """curl  -H "Accept: application/json" "http://*****:*****@.*/#', pexpect.EOF, pexpect.TIMEOUT], timeout=3)
    logger.info(RouterInst.before)
    output = RouterInst.before
    outputCheck(RouterInst, var, output)
    return RouterInst
示例#5
0
def BGPglobal(RouterInst, AS_Num,
              RouterId):  #Performs Global BGP configuration

    var = 'BGPglobal'
    flushBuffer(1, RouterInst)
    RouterInst.expect(['/w+@.*/#', pexpect.EOF, pexpect.TIMEOUT], timeout=3)
    config = """curl -X PATCH "Content-Type: application/json" -d '{"ASNum":"%s","RouterId":"%s"}' http://localhost:8080/public/v1/config/BGPGlobal""" % (
        AS_Num, RouterId)
    RouterInst = executeCmd(RouterInst, config)
    RouterInst.expect(['/w+@.*/#', pexpect.EOF, pexpect.TIMEOUT], timeout=3)
    logger.info(RouterInst.before, also_console=True)
    output = RouterInst.before
    outputCheck(RouterInst, var, output)
    return RouterInst
示例#6
0
def createBGPV4Neighbor(RouterInst,
                        PeerAS,
                        NeighborAddress,
                        Interface,
                        BfdEnable=False,
                        PeerGroup='',
                        MultiHopTTL=0,
                        LocalAS='',
                        KeepaliveTime=0,
                        AddPathsRx=False,
                        UpdateSource='',
                        RouteReflectorClient=False,
                        MaxPrefixesRestartTimer=0,
                        Description='',
                        MultiHopEnable=False,
                        AuthPassword='',
                        RouteReflectorClusterId=0,
                        AdjRIBOutFilter='',
                        MaxPrefixesDisconnect=False,
                        AddPathsMaxTx=0,
                        AdjRIBInFilter='',
                        MaxPrefixes=0,
                        MaxPrefixesThresholdPct=80,
                        BfdSessionParam='default',
                        NextHopSelf=False,
                        Disabled=False,
                        HoldTime=0,
                        ConnectRetryTime=0):

    var = 'createBGPV4Neighbor'
    flushBuffer(1, RouterInst)
    RouterInst.expect(['/w+@.*/#', pexpect.EOF, pexpect.TIMEOUT], timeout=3)
    config = """curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{"PeerAS":"%s", "NeighborAddress":"%s","IntfRef":"%s", "IfIndex":0,"RouteReflectorClusterId":0, "MultiHopTTL":0,"ConnectRetryTime":60,"HoldTime":180,"KeepaliveTime":60,"AddPathsMaxTx":0}' 'http://*****:*****@.*/#', pexpect.EOF, pexpect.TIMEOUT], timeout=3)
    logger.info(RouterInst.before, also_console=True)
    output = RouterInst.before
    outputCheck(RouterInst, var, output)
    return RouterInst
def outputCheck(RouterInst,Interface,IP_address,config):			#Interprets Output
	
	li = IP_address.split('/')
	count = 3
	RouterInst.expect(['/w+@.*/#',pexpect.EOF,pexpect.TIMEOUT],timeout=3)
	logger.info(RouterInst.before,also_console=True)
	output = RouterInst.before

	while count >= 0:

		if re.search('\"Result\"\:\"Success\"',output):
			checkInterface(RouterInst,Interface,li[0])
			break

		elif re.search('Failed to connect to localhost port 8080',output):

			logger.info("***        ERROR:Failed to connect to localhost port 8080               ***",also_console=True)
			logger.info( '***   Flexswitch not started properly : Please restart the flexswitch   ***',also_console=True)
			restartSwitch(RouterInst)
			RouterInst = executeCmd(RouterInst,config)
			RouterInst.expect(['/w+@.*/#',pexpect.EOF,pexpect.TIMEOUT],timeout=3)
			logger.info(RouterInst.before,also_console=True)
			output = RouterInst.before
			count = count - 1
			if count == -1:
				logToFile.debug("Error: Unable to start the flexswitch")
				raise RuntimeError("Some error : Unable to start the Flexswitch")
			else:
				continue


		elif re.search('System not ready',output):

			logger.info("***         ERROR:System not ready,Daemons still restarting		***",also_console=True)
			time.sleep(20)
			RouterInst = executeCmd(RouterInst,config)
			RouterInst.expect(['/w+@.*/#',pexpect.EOF,pexpect.TIMEOUT],timeout=3)
			logger.info(RouterInst.before,also_console=True)
			output = RouterInst.before
			count = count - 1
			if count == -1:
				logToFile.debug("Error: Unable to start the flexswitch")
				raise RuntimeError("Some error : Unable to start the Flexswitch")
			else:
				continue

		elif re.search("Invalid interface reference provided in ip intf config object", output):
			
			logToFile.debug("Invalid interface reference provided in ip intf config object")
			raise RuntimeError("Error : Interface reference provided, is incorrect(Check interface is up for that particular device)")

		elif re.search("ip address validation failed",output):

			logToFile.debug("ip address validation failed")
			raise RuntimeError("Error : IP address not specified correctly")

		elif re.search('\"Result\"\:\"Error\: Already configured\.',output):
			
			logToFile.info("IP address already configured")
			break

		elif re.search('curl : command not found',output):

			preliminaryInstalls(RouterInst)
			count = count -1
			if count == -1:
				logToFile.debug("Unable to install CURL : Check the internet connection")
				raise RuntimeError("Some error : Unable to install curl")
			else:
				continue
	return