Initial pep8 compliant driver
diff --git a/TestON/drivers/common/cli/quaggaclidriver.py.fixed b/TestON/drivers/common/cli/quaggaclidriver.py.fixed
deleted file mode 100644
index 09b7614..0000000
--- a/TestON/drivers/common/cli/quaggaclidriver.py.fixed
+++ /dev/null
@@ -1,596 +0,0 @@
-#!/usr/bin/env python
-
-import time
-import pexpect
-import struct
-import fcntl
-import os
-import sys
-import signal
-import sys
-import re
-import json
-sys.path.append( "../" )
-from drivers.common.clidriver import CLI
-
-
-class QuaggaCliDriver( CLI ):
-
- def __init__( self ):
- super( CLI, self ).__init__()
-
- # TODO: simplify this method
- def connect( self, **connectargs ):
- for key in connectargs:
- vars( self )[ key ] = connectargs[ key ]
-
- self.name = self.options[ 'name' ]
- # self.handle = super( QuaggaCliDriver,self ).connect(
- # user_name=self.user_name, ip_address=self.ip_address,port=self.port,
- # pwd=self.pwd )
- self.handle = super(
- QuaggaCliDriver,
- self ).connect(
- user_name=self.user_name,
- ip_address="1.1.1.1",
- port=self.port,
- pwd=self.pwd )
- main.log.info(
- "connect parameters:" + str(
- self.user_name ) + ";" + str(
- self.ip_address ) + ";" + str(
- self.port ) + ";" + str(
- self.pwd ) )
-
- if self.handle:
- # self.handle.expect( "",timeout=10 )
- # self.handle.expect( "\$",timeout=10 )
- self.handle.sendline( "telnet localhost 2605" )
- # self.handle.expect( "Password:", timeout=5 )
- self.handle.expect( "Password:" )
- self.handle.sendline( "hello" )
- # self.handle.expect( "bgpd", timeout=5 )
- self.handle.expect( "bgpd" )
- self.handle.sendline( "enable" )
- # self.handle.expect( "bgpd#", timeout=5 )
- self.handle.expect( "bgpd#" )
- return self.handle
- else:
- main.log.info( "NO HANDLE" )
- return main.FALSE
-
- def loginQuagga( self, ip_address ):
- self.name = self.options[ 'name' ]
- self.handle = super( QuaggaCliDriver, self ).connect(
- user_name=self.user_name, ip_address=ip_address,
- port=self.port, pwd=self.pwd )
- main.log.info( "connect parameters:" + str( self.user_name ) + ";"
- + str( self.ip_address ) + ";" + str( self.port ) + ";" + str( self.pwd ) )
-
- if self.handle:
- # self.handle.expect( "" )
- # self.handle.expect( "\$" )
- self.handle.sendline( "telnet localhost 2605" )
- # self.handle.expect( "Password:", timeout=5 )
- self.handle.expect( "Password:" )
- self.handle.sendline( "hello" )
- # self.handle.expect( "bgpd", timeout=5 )
- self.handle.expect( "bgpd" )
- self.handle.sendline( "enable" )
- # self.handle.expect( "bgpd#", timeout=5 )
- self.handle.expect( "bgpd#" )
- main.log.info( "I in quagga on host " + str( ip_address ) )
-
- return self.handle
- else:
- main.log.info( "NO HANDLE" )
- return main.FALSE
-
- def enter_config( self, asn ):
- main.log.info( "I am in enter_config method!" )
- try:
- self.handle.sendline( "" )
- self.handle.expect( "bgpd#" )
- except:
- main.log.warn( "Probably not currently in enable mode!" )
- self.disconnect()
- return main.FALSE
- self.handle.sendline( "configure terminal" )
- self.handle.expect( "config", timeout=5 )
- routerAS = "router bgp " + str( asn )
- try:
- self.handle.sendline( routerAS )
- self.handle.expect( "config-router", timeout=5 )
- return main.TRUE
- except:
- return main.FALSE
-
- def generate_prefixes( self, net, numRoutes ):
- main.log.info( "I am in generate_prefixes method!" )
-
- # each IP prefix will be composed by "net" + "." + m + "." + n + "." + x
- # the length of each IP prefix is 24
- routes = []
- routes_gen = 0
- m = numRoutes / 256
- n = numRoutes % 256
-
- for i in range( 0, m ):
- for j in range( 0, 256 ):
- network = str(
- net ) + "." + str(
- i ) + "." + str(
- j ) + ".0/24"
- routes.append( network )
- routes_gen = routes_gen + 1
-
- for j in range( 0, n ):
- network = str( net ) + "." + str( m ) + "." + str( j ) + ".0/24"
- routes.append( network )
- routes_gen = routes_gen + 1
-
- if routes_gen == numRoutes:
- main.log.info( "Successfully generated " + str( numRoutes )
- + " prefixes!" )
- return routes
- return main.FALSE
-
- # This method generates a multiple to single point intent(
- # MultiPointToSinglePointIntent ) for a given route
- def generate_expected_singleRouteIntent(
- self,
- prefix,
- nextHop,
- nextHopMac,
- sdnip_data ):
-
- ingress = []
- egress = ""
- for peer in sdnip_data[ 'bgpPeers' ]:
- if peer[ 'ipAddress' ] == nextHop:
- egress = "of:" + str(
- peer[ 'attachmentDpid' ] ).replace( ":",
- "" ) + ":" + str( peer[ 'attachmentPort' ] )
- else:
- ingress.append(
- "of:" + str( peer[ 'attachmentDpid' ] ).replace( ":",
- "" ) + ":" + str( peer[ 'attachmentPort' ] ) )
-
- selector = "ETH_TYPE{ethType=800},IPV4_DST{ip=" + prefix + "}"
- treatment = "[ETH_DST{mac=" + str( nextHopMac ) + "}]"
-
- intent = egress + "/" + \
- str( sorted( ingress ) ) + "/" + selector + "/" + treatment
- return intent
-
- def generate_expected_onePeerRouteIntents(
- self,
- prefixes,
- nextHop,
- nextHopMac,
- sdnip_json_file_path ):
- intents = []
- sdnip_json_file = open( sdnip_json_file_path ).read()
-
- sdnip_data = json.loads( sdnip_json_file )
-
- for prefix in prefixes:
- intents.append(
- self.generate_expected_singleRouteIntent(
- prefix,
- nextHop,
- nextHopMac,
- sdnip_data ) )
- return sorted( intents )
-
- # TODO
- # This method generates all expected route intents for all BGP peers
- def generate_expected_routeIntents( self ):
- intents = []
- return intents
-
- # This method extracts all actual routes from ONOS CLI
- def extract_actual_routes( self, get_routes_result ):
- routes_json_obj = json.loads( get_routes_result )
-
- allRoutes_actual = []
- for route in routes_json_obj:
- if route[ 'prefix' ] == '172.16.10.0/24':
- continue
- allRoutes_actual.append(
- route[ 'prefix' ] + "/" + route[ 'nextHop' ] )
-
- return sorted( allRoutes_actual )
-
- # This method extracts all actual route intents from ONOS CLI
- def extract_actual_routeIntents( self, get_intents_result ):
- intents = []
- # TODO: delete the line below when change to Mininet demo script
- # get_intents_result=open( "../tests/SdnIpTest/intents.json" ).read()
- intents_json_obj = json.loads( get_intents_result )
-
- for intent in intents_json_obj:
- if intent[ 'appId' ] != "org.onosproject.sdnip":
- continue
- if intent[ 'type' ] == "MultiPointToSinglePointIntent" and intent[ 'state' ] == 'INSTALLED':
- egress = str( intent[ 'egress' ][ 'device' ] ) + ":" + str(
- intent[ 'egress' ][ 'port' ] )
- ingress = []
- for attachmentPoint in intent[ 'ingress' ]:
- ingress.append(
- str( attachmentPoint[ 'device' ] ) + ":" + str( attachmentPoint[ 'port' ] ) )
-
- selector = intent[ 'selector' ].replace(
- "[", "" ).replace( "]", "" ).replace( " ", "" )
- if str( selector ).startswith( "IPV4" ):
- str1, str2 = str( selector ).split( "," )
- selector = str2 + "," + str1
-
- intent = egress + "/" + \
- str( sorted( ingress ) ) + "/" + \
- selector + "/" + intent[ 'treatment' ]
- intents.append( intent )
- return sorted( intents )
-
- # This method extracts all actual BGP intents from ONOS CLI
- def extract_actual_bgpIntents( self, get_intents_result ):
- intents = []
- # TODO: delete the line below when change to Mininet demo script
- # get_intents_result=open( "../tests/SdnIpTest/intents.json" ).read()
- intents_json_obj = json.loads( get_intents_result )
-
- for intent in intents_json_obj:
- if intent[ 'appId' ] != "org.onosproject.sdnip":
- continue
- if intent[ 'type' ] == "PointToPointIntent" and "protocol=6" in str( intent[ 'selector' ] ):
- ingress = str( intent[ 'ingress' ][ 'device' ] ) + ":" + str(
- intent[ 'ingress' ][ 'port' ] )
- egress = str( intent[ 'egress' ][ 'device' ] ) + ":" + str(
- intent[ 'egress' ][ 'port' ] )
- selector = str(
- intent[ 'selector' ] ).replace( " ",
- "" ).replace( "[",
- "" ).replace( "]",
- "" ).split( "," )
- intent = ingress + "/" + egress + \
- "/" + str( sorted( selector ) )
- intents.append( intent )
-
- return sorted( intents )
-
- # This method generates a single point to single point intent(
- # PointToPointIntent ) for BGP path
- def generate_expected_bgpIntents( self, sdnip_json_file_path ):
- from operator import eq
-
- sdnip_json_file = open( sdnip_json_file_path ).read()
- sdnip_data = json.loads( sdnip_json_file )
-
- intents = []
- bgpPeerAttachmentPoint = ""
- bgpSpeakerAttachmentPoint = "of:" + str(
- sdnip_data[ 'bgpSpeakers' ][ 0 ][ 'attachmentDpid' ] ).replace( ":",
- "" ) + ":" + str( sdnip_data[ 'bgpSpeakers' ][ 0 ][ 'attachmentPort' ] )
- for peer in sdnip_data[ 'bgpPeers' ]:
- bgpPeerAttachmentPoint = "of:" + str(
- peer[ 'attachmentDpid' ] ).replace( ":",
- "" ) + ":" + str( peer[ 'attachmentPort' ] )
- # find out the BGP speaker IP address for this BGP peer
- bgpSpeakerIpAddress = ""
- for interfaceAddress in sdnip_data[ 'bgpSpeakers' ][ 0 ][ 'interfaceAddresses' ]:
- # if eq( interfaceAddress[ 'interfaceDpid' ],sdnip_data[
- # 'bgpSpeakers' ][ 0 ][ 'attachmentDpid' ] ) and eq(
- # interfaceAddress[ 'interfacePort' ], sdnip_data[
- # 'bgpSpeakers' ][ 0 ][ 'attachmentPort' ] ):
- if eq( interfaceAddress[ 'interfaceDpid' ], peer[ 'attachmentDpid' ] ) and eq( interfaceAddress[ 'interfacePort' ], peer[ 'attachmentPort' ] ):
- bgpSpeakerIpAddress = interfaceAddress[ 'ipAddress' ]
- break
- else:
- continue
-
- # from bgpSpeakerAttachmentPoint to bgpPeerAttachmentPoint
- # direction
- selector_str = "IPV4_SRC{ip=" + bgpSpeakerIpAddress + "/32}," + "IPV4_DST{ip=" + peer[
- 'ipAddress' ] + "/32}," + "IP_PROTO{protocol=6}, ETH_TYPE{ethType=800}, TCP_DST{tcpPort=179}"
- selector = selector_str.replace( " ", "" ).replace(
- "[", "" ).replace( "]", "" ).split( "," )
- intent = bgpSpeakerAttachmentPoint + "/" + \
- bgpPeerAttachmentPoint + "/" + str( sorted( selector ) )
- intents.append( intent )
-
- selector_str = "IPV4_SRC{ip=" + bgpSpeakerIpAddress + "/32}," + "IPV4_DST{ip=" + peer[
- 'ipAddress' ] + "/32}," + "IP_PROTO{protocol=6}, ETH_TYPE{ethType=800}, TCP_SRC{tcpPort=179}"
- selector = selector_str.replace( " ", "" ).replace(
- "[", "" ).replace( "]", "" ).split( "," )
- intent = bgpSpeakerAttachmentPoint + "/" + \
- bgpPeerAttachmentPoint + "/" + str( sorted( selector ) )
- intents.append( intent )
-
- # from bgpPeerAttachmentPoint to bgpSpeakerAttachmentPoint
- # direction
- selector_str = "IPV4_SRC{ip=" + peer[ 'ipAddress' ] + "/32}," + "IPV4_DST{ip=" + bgpSpeakerIpAddress + "/32}," + \
- "IP_PROTO{protocol=6}, ETH_TYPE{ethType=800}, TCP_DST{tcpPort=179}"
- selector = selector_str.replace( " ", "" ).replace(
- "[", "" ).replace( "]", "" ).split( "," )
- intent = bgpPeerAttachmentPoint + "/" + \
- bgpSpeakerAttachmentPoint + "/" + str( sorted( selector ) )
- intents.append( intent )
-
- selector_str = "IPV4_SRC{ip=" + peer[ 'ipAddress' ] + "/32}," + "IPV4_DST{ip=" + bgpSpeakerIpAddress + "/32}," + \
- "IP_PROTO{protocol=6}, ETH_TYPE{ethType=800}, TCP_SRC{tcpPort=179}"
- selector = selector_str.replace( " ", "" ).replace(
- "[", "" ).replace( "]", "" ).split( "," )
- intent = bgpPeerAttachmentPoint + "/" + \
- bgpSpeakerAttachmentPoint + "/" + str( sorted( selector ) )
- intents.append( intent )
-
- return sorted( intents )
-
- def add_routes( self, routes, routeRate ):
- main.log.info( "I am in add_routes method!" )
-
- routes_added = 0
- try:
- self.handle.sendline( "" )
- # self.handle.expect( "config-router" )
- self.handle.expect( "config-router", timeout=5 )
- except:
- main.log.warn( "Probably not in config-router mode!" )
- self.disconnect()
- main.log.info( "Start to add routes" )
-
- for i in range( 0, len( routes ) ):
- routeCmd = "network " + routes[ i ]
- try:
- self.handle.sendline( routeCmd )
- self.handle.expect( "bgpd", timeout=5 )
- except:
- main.log.warn( "Failed to add route" )
- self.disconnect()
- waitTimer = 1.00 / routeRate
- time.sleep( waitTimer )
- if routes_added == len( routes ):
- main.log.info( "Finished adding routes" )
- return main.TRUE
- return main.FALSE
-
- def delete_routes( self, routes, routeRate ):
- main.log.info( "I am in delete_routes method!" )
-
- routes_added = 0
- try:
- self.handle.sendline( "" )
- # self.handle.expect( "config-router" )
- self.handle.expect( "config-router", timeout=5 )
- except:
- main.log.warn( "Probably not in config-router mode!" )
- self.disconnect()
- main.log.info( "Start to delete routes" )
-
- for i in range( 0, len( routes ) ):
- routeCmd = "no network " + routes[ i ]
- try:
- self.handle.sendline( routeCmd )
- self.handle.expect( "bgpd", timeout=5 )
- except:
- main.log.warn( "Failed to add route" )
- self.disconnect()
- waitTimer = 1.00 / routeRate
- time.sleep( waitTimer )
- if routes_added == len( routes ):
- main.log.info( "Finished deleting routes" )
- return main.TRUE
- return main.FALSE
-
- def ping_test( self, ip_address, ping_test_file, ping_test_result_file ):
- main.log.info( "Start the ping test on host:" + str( ip_address ) )
-
- self.name = self.options[ 'name' ]
- self.handle = super( QuaggaCliDriver, self ).connect(
- user_name=self.user_name, ip_address=ip_address,
- port=self.port, pwd=self.pwd )
- main.log.info( "connect parameters:" + str( self.user_name ) + ";"
- + str( self.ip_address ) + ";" + str( self.port ) + ";" + str( self.pwd ) )
-
- if self.handle:
- # self.handle.expect( "" )
- # self.handle.expect( "\$" )
- main.log.info( "I in host " + str( ip_address ) )
- main.log.info(
- ping_test_file +
- " > " +
- ping_test_result_file +
- " &" )
- self.handle.sendline(
- ping_test_file +
- " > " +
- ping_test_result_file +
- " &" )
- self.handle.expect( "\$", timeout=60 )
- handle = self.handle.before
-
- return handle
- else:
- main.log.info( "NO HANDLE" )
- return main.FALSE
-
- # Please use the generate_routes plus add_routes instead of this one
- def add_route( self, net, numRoutes, routeRate ):
- try:
- self.handle.sendline( "" )
- self.handle.expect( "config-router" )
- except:
- main.log.warn( "Probably not in config-router mode!" )
- self.disconnect()
- main.log.info( "Adding Routes" )
- j = 0
- k = 0
- while numRoutes > 255:
- numRoutes = numRoutes - 255
- j = j + 1
- k = numRoutes % 254
- routes_added = 0
- if numRoutes > 255:
- numRoutes = 255
- for m in range( 1, j + 1 ):
- for n in range( 1, numRoutes + 1 ):
- network = str(
- net ) + "." + str(
- m ) + "." + str(
- n ) + ".0/24"
- routeCmd = "network " + network
- try:
- self.handle.sendline( routeCmd )
- self.handle.expect( "bgpd" )
- except:
- main.log.warn( "failed to add route" )
- self.disconnect()
- waitTimer = 1.00 / routeRate
- time.sleep( waitTimer )
- routes_added = routes_added + 1
- for d in range( j + 1, j + 2 ):
- for e in range( 1, k + 1 ):
- network = str(
- net ) + "." + str(
- d ) + "." + str(
- e ) + ".0/24"
- routeCmd = "network " + network
- try:
- self.handle.sendline( routeCmd )
- self.handle.expect( "bgpd" )
- except:
- main.log.warn( "failed to add route" )
- self.disconnect
- waitTimer = 1.00 / routeRate
- time.sleep( waitTimer )
- routes_added = routes_added + 1
- if routes_added == numRoutes:
- return main.TRUE
- return main.FALSE
-
- def del_route( self, net, numRoutes, routeRate ):
- try:
- self.handle.sendline( "" )
- self.handle.expect( "config-router" )
- except:
- main.log.warn( "Probably not in config-router mode!" )
- self.disconnect()
- main.log.info( "Deleting Routes" )
- j = 0
- k = 0
- while numRoutes > 255:
- numRoutes = numRoutes - 255
- j = j + 1
- k = numRoutes % 254
- routes_deleted = 0
- if numRoutes > 255:
- numRoutes = 255
- for m in range( 1, j + 1 ):
- for n in range( 1, numRoutes + 1 ):
- network = str(
- net ) + "." + str(
- m ) + "." + str(
- n ) + ".0/24"
- routeCmd = "no network " + network
- try:
- self.handle.sendline( routeCmd )
- self.handle.expect( "bgpd" )
- except:
- main.log.warn( "Failed to delete route" )
- self.disconnect()
- waitTimer = 1.00 / routeRate
- time.sleep( waitTimer )
- routes_deleted = routes_deleted + 1
- for d in range( j + 1, j + 2 ):
- for e in range( 1, k + 1 ):
- network = str(
- net ) + "." + str(
- d ) + "." + str(
- e ) + ".0/24"
- routeCmd = "no network " + network
- try:
- self.handle.sendline( routeCmd )
- self.handle.expect( "bgpd" )
- except:
- main.log.warn( "Failed to delete route" )
- self.disconnect()
- waitTimer = 1.00 / routeRate
- time.sleep( waitTimer )
- routes_deleted = routes_deleted + 1
- if routes_deleted == numRoutes:
- return main.TRUE
- return main.FALSE
-
- def check_routes( self, brand, ip, user, pw ):
- def pronto( ip, user, passwd ):
- print "Connecting to Pronto switch"
- child = pexpect.spawn( "telnet " + ip )
- i = child.expect( [ "login:", "CLI#", pexpect.TIMEOUT ] )
- if i == 0:
- print "Username and password required. Passing login info."
- child.sendline( user )
- child.expect( "Password:" )
- child.sendline( passwd )
- child.expect( "CLI#" )
- print "Logged in, getting flowtable."
- child.sendline( "flowtable brief" )
- for t in range( 9 ):
- t2 = 9 - t
- print "\r" + str( t2 )
- sys.stdout.write( "\033[F" )
- time.sleep( 1 )
- print "Scanning flowtable"
- child.expect( "Flow table show" )
- count = 0
- while True:
- i = child.expect(
- [ '17\d\.\d{1,3}\.\d{1,3}\.\d{1,3}',
- 'CLI#',
- pexpect.TIMEOUT ] )
- if i == 0:
- count = count + 1
- elif i == 1:
- print "Pronto flows: " + str( count ) + "\nDone\n"
- break
- else:
- break
-
- def cisco( ip, user, passwd ):
- print "Establishing Cisco switch connection"
- child = pexpect.spawn( "ssh " + user + "@" + ip )
- i = child.expect( [ "Password:", "CLI#", pexpect.TIMEOUT ] )
- if i == 0:
- print "Password required. Passing now."
- child.sendline( passwd )
- child.expect( "#" )
- print "Logged in. Retrieving flow table then counting flows."
- child.sendline( "show openflow switch all flows all" )
- child.expect( "Logical Openflow Switch" )
- print "Flow table retrieved. Counting flows"
- count = 0
- while True:
- i = child.expect( [ "nw_src=17", "#", pexpect.TIMEOUT ] )
- if i == 0:
- count = count + 1
- elif i == 1:
- print "Cisco flows: " + str( count ) + "\nDone\n"
- break
- else:
- break
- if brand == "pronto" or brand == "PRONTO":
- pronto( ip, user, passwd )
- # elif brand == "cisco" or brand == "CISCO":
- # cisco( ip,user,passwd )
-
- def disconnect( self ):
- """
- Called when Test is complete to disconnect the Quagga handle.
- """
- response = ''
- try:
- self.handle.close()
- except:
- main.log.error( "Connection failed to the host" )
- response = main.FALSE
- return response
-
diff --git a/TestON/drivers/common/cli/remotetestbed/hpswitchclidriver.py b/TestON/drivers/common/cli/remotetestbed/hpswitchclidriver.py
deleted file mode 100644
index 24d9696..0000000
--- a/TestON/drivers/common/cli/remotetestbed/hpswitchclidriver.py
+++ /dev/null
@@ -1,230 +0,0 @@
-#!/usr/bin/env python
-'''
-Created on 24-June-2013
-
-@author: Anil Kumar (anilkumar.s@paxterrasolutions.com)
-
- TestON is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- TestON is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with TestON. If not, see <http://www.gnu.org/licenses/>.
-
-
-'''
-import time
-import pexpect
-import struct, fcntl, os, sys, signal
-import sys
-import re
-sys.path.append("../")
-from drivers.common.clidriver import CLI
-
-class HPSwitch(CLI):
-
- def __init__(self):
- super(CLI, self).__init__()
-
- def connect(self,**connectargs):
- for key in connectargs:
- vars(self)[key] = connectargs[key]
-
- self.name = self.options['name']
- self.handle = super(HPSwitch,self).connect(user_name = self.user_name, ip_address = self.ip_address,port = self.port, pwd = self.pwd)
-
- return main.TRUE
-
- def configure(self):
- self.execute(cmd='configure', prompt = '\(config\)',timeout = 3)
- if re.search('\(config\)', main.last_response):
- main.log.info("Configure mode enabled"+main.last_response)
- else :
- main.log.warn("Fail to enable configure mode"+main.last_response)
-
-
- def set_up_vlan(self,**vlanargs):
- '''
- Configure vlan.
- '''
- for key in vlanargs:
- vars(self)[key] = vlanargs[key]
-
- self.execute(cmd='vlan '+self.vlan_id, prompt = '\(vlan-'+self.vlan_id+'\)',timeout = 3)
- if re.search('\(vlan-'+self.vlan_id+'\)', main.last_response):
- main.log.info("Configuring VLAN "+self.vlan_id)
- else :
- main.log.warn("Fail to configure Vlan"+self.vlan_id+main.last_response)
- return main.FALSE
-
- if self.vlan_name :
- self.execute(cmd='name '+self.vlan_name, prompt = '\(vlan-'+self.vlan_id+'\)',timeout = 3)
- if re.search('\(vlan-'+self.vlan_id+'\)', main.last_response):
- main.log.info("Configuring "+self.vlan_id)
- return main.TRUE
- else :
- main.log.warn("Fail to configure Vlan"+self.vlan_id+main.last_response)
- return main.FALSE
- else :
- main.log.error("Vlan Name not specified")
- return main.FALSE
-
- def vlan_tagged(self, **taggedargs):
- for key in taggedargs:
- vars(self)[key] = taggedargs[key]
- if self.vlan_id :
- self.execute(cmd='vlan '+self.vlan_id, prompt = '\(vlan-'+self.vlan_id+'\)',timeout = 3)
-
- if re.search('\(vlan-'+self.vlan_id+'\)', main.last_response):
- main.log.info("Configuring "+self.vlan_id)
- else :
- main.log.warn("Fail to configure Vlan"+self.vlan_id+main.last_response)
- return main.FALSE
- if self.tagged :
- self.execute(cmd='tagged '+self.vlan_id, prompt = '\(vlan-'+self.vlan_id+'\)',timeout = 3)
- if re.search('\(vlan-'+self.vlan_id+'\)', main.last_response):
- main.log.info("VLAN tagged done "+self.tagged)
- return main.TRUE
- else :
- main.log.warn("Fail to tagged Vlan"+self.vlan_id+main.last_response)
- return main.FALSE
-
- def vlan_untagged(self, **untaggedargs):
- for key in untaggedargs:
- vars(self)[key] = untaggedargs[key]
- if self.vlan_id :
- self.execute(cmd='vlan '+self.vlan_id, prompt = '\(vlan-'+self.vlan_id+'\)',timeout = 3)
-
- if re.search('\(vlan-'+self.vlan_id+'\)', main.last_response):
- main.log.info("Configuring "+self.vlan_id)
- else :
- main.log.warn("Fail to configure Vlan"+self.vlan_id+main.last_response)
- return main.FALSE
- if self.tagged :
- self.execute(cmd='untagged '+self.vlan_id, prompt = '\(vlan-'+self.vlan_id+'\)',timeout = 3)
- if re.search('\(vlan-'+self.vlan_id+'\)', main.last_response):
- main.log.info("VLAN untagged done "+self.tagged)
- return main.TRUE
- else :
- main.log.warn("Fail to untagged Vlan"+self.vlan_id+main.last_response)
- return main.FALSE
-
- def openflow_mode(self):
- self.configure()
- self.execute(cmd='openflow', prompt = '\(openflow\)',timeout = 3)
- if re.search('\(openflow\)', main.last_response):
- main.log.info("Openflow mode enabled"+main.last_response)
- return main.TRUE
- else :
- main.log.warn("Fail to enable Openflow mode"+main.last_response)
- return main.FALSE
-
-
- def add_openflow_controller(self,**controllerargs):
- for key in controllerargs:
- vars(self)[key] = controllerargs[key]
-
- if not self.openflow_mode():
- return main.FALSE
-
- contoller_details = 'controller-id '+ self.controller_id+'ip '+self.controller_ip + 'controller-interface vlan '+self.interface_vlan_id
- self.execute(cmd=contoller_details, prompt = '\(openflow\)',timeout = 3)
-
- if re.search('already\sconfigured', main.last_response):
- main.log.warn("A controller is already configured with this ID."+main.last_response)
- return main.FALSE
- elif re.search('Incomplete\sinput',main.last_response ) :
- main.log.warn("Incomplete\sinput"+main.last_response)
- return main.FALSE
- else:
- main.log.info("Successfully added Openflow Controller")
- return main.TRUE
-
-
- def create_openflow_instance(self,**instanceargs):
- for key in instanceargs:
- vars(self)[key] = instanceargs[key]
-
- if not self.openflow_mode():
- return main.FALSE
-
- if self.instance_name :
- self.execute(cmd='instance '+self.instance_name, prompt = '\(of-inst-'+self.instance_name+'\)',timeout = 3)
-
- if re.search('\(of-inst-'+self.instance_name+'\)', main.last_response):
- main.log.info("Configuring Openflow instance "+self.instance_name)
- else :
- main.log.warn("Fail to configure Openflow instance"+self.instance_name+"\n\n"+main.last_response)
- return main.FALSE
- if self.controller_id :
- self.execute(cmd='controller-id '+self.controller_id, prompt = '\(of-inst-'+self.instance_name+'\)',timeout = 3)
- main.log.info(main.last_response)
-
- if self.member :
- self.execute(cmd='member vlan '+self.member_vlan_id, prompt = '\(of-inst-'+self.instance_name+'\)',timeout = 3)
- main.log.info(main.last_response)
-
- if self.execute(cmd='enable', prompt = '\(of-inst-'+self.instance_name+'\)',timeout = 3):
- return main.TRUE
- else :
- return main.FALSE
-
- def pair_vlan_with_openflow_instance(self,vlan_id):
- self.configure()
- self.execute(cmd='vlan '+vlan_id, prompt = '\(vlan-'+vlan_id+'\)',timeout = 3)
- if re.search('\(vlan-'+vlan_id+'\)', main.last_response):
- main.log.info("Configuring VLAN "+vlan_id)
- else :
- main.log.warn("Fail to configure Vlan"+self.vlan_id+main.last_response)
- return main.FALSE
-
- self.execute(cmd='openflow enable', prompt = '\(vlan-'+vlan_id+'\)',timeout = 3)
- if re.search('\(vlan-'+vlan_id+'\)', main.last_response):
- main.log.info("Configuring VLAN "+vlan_id)
- else :
- main.log.warn("Fail to configure Vlan"+self.vlan_id+main.last_response)
- return main.FALSE
-
- def show_openflow_instance(self,instance_name):
-
- self.execute(cmd='show openflow instance '+instance_name, prompt = '#',timeout = 3)
- return main.TRUE
-
- def show(self, command):
- self.execute(cmd=command, prompt = '#',timeout = 3)
- return main.TRUE
-
-
- def openflow_enable(self):
- self.configure()
- self.execute(cmd='openflow enable', prompt = '#',timeout = 3)
- return main.TRUE
-
- def openflow_disable(self):
- self.configure()
- self.execute(cmd='openflow enable', prompt = '#',timeout = 3)
- return main.TRUE
-
- def remove_controller(self,controller_id):
- self.configure()
- self.execute(cmd='no controller-id '+controller_id, prompt = '#',timeout = 3)
- return main.TRUE
-
- def remove_vlan(self,vlan_id):
- self.configure()
- if self.execute(cmd='no vlan '+vlan_id, prompt = '#',timeout = 3):
- return main.TRUE
- else :
- self.execute(cmd=' '+vlan_id, prompt = '#',timeout = 3)
- return main.TRUE
-
- def remove_openflow_instance(self,instance_name):
- self.configure()
- self.execute(cmd='no openflow instance '+instance_name, prompt = '#',timeout = 3)
- return main.TRUE