Update Cluster Driver
Change-Id: I8a3a57e19637ff210548e57d41178e6f194cf694
diff --git a/TestON/tests/FUNC/FUNCoptical/FUNCoptical.py b/TestON/tests/FUNC/FUNCoptical/FUNCoptical.py
index 44c5b51..12b3c8c 100644
--- a/TestON/tests/FUNC/FUNCoptical/FUNCoptical.py
+++ b/TestON/tests/FUNC/FUNCoptical/FUNCoptical.py
@@ -63,12 +63,10 @@
main.hosts = int( main.params[ 'MININET' ][ 'hosts' ] )
main.opticalTopo = main.params[ 'MININET' ][ 'toponame' ]
main.hostsData = {}
- main.activeONOSip = []
main.assertReturnString = '' # Assembled assert return string
main.cycle = 0 # How many times FUNCintent has run through its tests
-
# -- INIT SECTION, ONLY RUNS ONCE -- #
- stepResult = main.testSetUp.envSetup( True )
+ stepResult = main.testSetUp.envSetup()
except Exception as e:
main.testSetUp.envSetupException( e )
main.testSetUp.evnSetupConclusion( stepResult )
@@ -86,25 +84,21 @@
- Connect to cli
"""
main.flowCompiler = "Flow Rules"
- main.testSetUp.ONOSSetUp( main.LincOE, True )
+ main.testSetUp.ONOSSetUp( main.LincOE, main.Cluster, True )
def CASE10( self, main ):
"""
Start Mininet opticalTest Topology
"""
- del main.activeONOSip[:]
- for i in range( main.numCtrls ):
- # Populate activeONOSip
- main.activeONOSip.append( main.ONOSip[ i ] )
main.case( "Mininet with Linc-OE startup" )
main.step( "Push TopoDDriver.json to ONOS through onos-netcfg" )
topoResult = True
- for ip in main.activeONOSip:
+ for ctrl in main.Cluster.active():
topoResult = topoResult and \
- main.ONOSbench.onosNetCfg(controllerIp=ip, path=main.dependencyPath,
+ main.ONOSbench.onosNetCfg(controllerIp=ctrl.ipAddress,
+ path=main.dependencyPath,
fileName="TopoDDriver.json")
-
#Exit if topology did not load properly
if not topoResult:
main.cleanup()
@@ -113,7 +107,7 @@
main.caseExplanation = "Start opticalTest.py topology included with ONOS"
main.step( "Starting mininet and LINC-OE" )
time.sleep( 10 )
- controllerIPs = ','.join( main.activeONOSip )
+ controllerIPs = ','.join( main.Cluster.getIps() )
cIps = ""
for i in range( 0, 4 ):
cIps += controllerIPs + ' '
@@ -153,7 +147,7 @@
main.step( "Balancing mastership of switches" )
balanceResult = main.FALSE
- balanceResult = utilities.retry( f=main.CLIs[ 0 ].balanceMasters, retValue=main.FALSE, args=[] )
+ balanceResult = utilities.retry( f=main.Cluster.active( 0 ).CLI.balanceMasters, retValue=main.FALSE, args=[] )
utilities.assert_equals( expect=main.TRUE,
actual=balanceResult,
@@ -173,11 +167,11 @@
cmd = "org.onosproject.net.intent.impl.compiler.IntentConfigurableRegistrator"
- stepResult = main.CLIs[ 0 ].setCfg( component=cmd,
- propName="useFlowObjectives", value="true" )
- stepResult &= main.CLIs[ 0 ].setCfg( component=cmd,
- propName="defaultFlowObjectiveCompiler",
- value='org.onosproject.net.intent.impl.compiler.LinkCollectionIntentObjectiveCompiler' )
+ stepResult = main.Cluster.active( 0 ).CLI.setCfg( component=cmd,
+ propName="useFlowObjectives", value="true" )
+ stepResult &= main.Cluster.active( 0 ).CLI.setCfg( component=cmd,
+ propName="defaultFlowObjectiveCompiler",
+ value='org.onosproject.net.intent.impl.compiler.LinkCollectionIntentObjectiveCompiler' )
utilities.assert_equals( expect=main.TRUE,
actual=stepResult,
@@ -197,7 +191,7 @@
main.Utils
except ( NameError, AttributeError ):
main.Utils = Utils()
- main.Utils.copyKarafLog()
+ main.Utils.copyKarafLog( "cycle" + str( main.cycle ) )
def CASE21( self, main ):
"""
Run pingall to discover all hosts
@@ -275,21 +269,21 @@
( not devicesResults or not linksResults or not hostsResults ):
time.sleep( 2 )
if not devicesResults:
- devices = main.topoRelated.getAllDevices( main.numCtrls, False )
- ports = main.topoRelated.getAllPorts( main.numCtrls, False )
+ devices = main.topoRelated.getAll( "devices", False )
+ ports = main.topoRelated.getAll( "ports", False )
devicesResults = main.TRUE
deviceFails = [] # Reset for each attempt
if not linksResults:
- links = main.topoRelated.getAllLinks( main.numCtrls, False )
+ links = main.topoRelated.getAll( "links", False )
linksResults = main.TRUE
linkFails = [] # Reset for each attempt
if not hostsResults:
- hosts = main.topoRelated.getAllHosts( main.numCtrls, False )
+ hosts = main.topoRelated.getAll( "hosts", False )
hostsResults = main.TRUE
hostFails = [] # Reset for each attempt
# Check for matching topology on each node
- for controller in range( main.numCtrls ):
+ for controller in range( main.Cluster.numCtrls ):
controllerStr = str( controller + 1 ) # ONOS node number
# Compare Devices
if devices[ controller ] and ports[ controller ] and\
@@ -397,29 +391,29 @@
main.step( "Adding point intents" )
checkFlowResult = main.TRUE
main.pIntentsId = []
- pIntent1 = main.CLIs[ 0 ].addPointIntent(
+ pIntent1 = main.Cluster.active( 0 ).CLI.addPointIntent(
"of:0000000000000015/1",
"of:000000000000000b/2" )
time.sleep( 10 )
- pIntent2 = main.CLIs[ 0 ].addPointIntent(
+ pIntent2 = main.Cluster.active( 0 ).CLI.addPointIntent(
"of:000000000000000b/2",
"of:0000000000000015/1" )
main.pIntentsId.append( pIntent1 )
main.pIntentsId.append( pIntent2 )
time.sleep( 10 )
main.log.info( "Checking intents state" )
- checkStateResult = main.CLIs[ 0 ].checkIntentState(
- intentsId=main.pIntentsId )
+ checkStateResult = main.Cluster.active( 0 ).CLI.checkIntentState(
+ intentsId=main.pIntentsId )
time.sleep( 10 )
- checkStateResult = utilities.retry( f=main.CLIs[0].checkIntentState,
+ checkStateResult = utilities.retry( f=main.Cluster.active( 0 ).CLI.checkIntentState,
retValue=main.FALSE, args=( main.pIntentsId, "INSTALLED" ),
sleep=main.checkIntentSleep, attempts=10 )
main.log.info( "Checking flows state" )
- checkFlowResult = main.CLIs[ 0 ].checkFlowsState()
+ checkFlowResult = main.Cluster.active( 0 ).CLI.checkFlowsState()
# Sleep for 10 seconds to provide time for the intent state to change
time.sleep( 10 )
main.log.info( "Checking intents state one more time" )
- checkStateResult = main.CLIs[ 0 ].checkIntentState(
+ checkStateResult = main.Cluster.active( 0 ).CLI.checkIntentState(
intentsId=main.pIntentsId )
if checkStateResult and checkFlowResult:
@@ -450,29 +444,29 @@
removeResult = main.TRUE
# Check remaining intents
try:
- intentsJson = json.loads( main.CLIs[ 0 ].intents() )
+ intentsJson = json.loads( main.Cluster.active( 0 ).CLI.intents() )
main.log.debug( intentsJson )
- main.CLIs[ 0 ].removeIntent( intentId=pIntent1, purge=True )
- main.CLIs[ 0 ].removeIntent( intentId=pIntent2, purge=True )
+ main.Cluster.active( 0 ).CLI.removeIntent( intentId=pIntent1, purge=True )
+ main.Cluster.active( 0 ).CLI.removeIntent( intentId=pIntent2, purge=True )
for intents in intentsJson:
- main.CLIs[ 0 ].removeIntent( intentId=intents.get( 'id' ),
- app='org.onosproject.cli',
- purge=True )
+ main.Cluster.active( 0 ).CLI.removeIntent( intentId=intents.get( 'id' ),
+ app='org.onosproject.cli',
+ purge=True )
time.sleep( 15 )
- for i in range( main.numCtrls ):
+ for ctrl in main.Cluster.active():
if not any ( intent.get('state') == 'WITHDRAWING' for intent
- in json.loads( main.CLIs[i].intents() ) ):
- main.log.debug( json.loads( main.CLIs[i].intents ) )
+ in json.loads( ctrl.CLI.intents() ) ):
+ main.log.debug( json.loads( ctrl.CLI.intents() ) )
removeResult = main.FALSE
break
else:
removeResult = main.TRUE
except ( TypeError, ValueError ):
- main.log.error( "Cannot see intents on Node " + str( main.CLIs[ 0 ] ) +
+ main.log.error( "Cannot see intents on " + main.Cluster.active( 0 ).name +
". Removing all intents." )
- main.CLIs[ 0 ].removeAllIntents( purge=True )
- main.CLIs[ 0 ].removeAllIntents( purge=True, app='org.onosproject.cli' )
+ main.Cluster.active( 0 ).CLI.removeAllIntents( purge=True )
+ main.Cluster.active( 0 ).CLI.removeAllIntents( purge=True, app='org.onosproject.cli' )
utilities.assert_equals( expect=main.TRUE,
actual=removeResult,
@@ -507,18 +501,18 @@
main.log.debug( host2 )
intentsId = []
- intent1 = main.CLIs[ 0 ].addHostIntent( hostIdOne=host1,
- hostIdTwo=host2 )
+ intent1 = main.Cluster.active( 0 ).CLI.addHostIntent( hostIdOne=host1,
+ hostIdTwo=host2 )
intentsId.append( intent1 )
# Checking intents state before pinging
main.log.info( "Checking intents state" )
- intentResult = utilities.retry( f=main.CLIs[ 0 ].checkIntentState,
+ intentResult = utilities.retry( f=main.Cluster.active( 0 ).CLI.checkIntentState,
retValue=main.FALSE, args=intentsId,
sleep=main.checkIntentSleep, attempts=10 )
# If intent state is still wrong, display intent states
if not intentResult:
- main.log.error( main.CLIs[ 0 ].intents() )
+ main.log.error( main.Cluster.active( 0 ).CLI.intents() )
utilities.assert_equals( expect=main.TRUE,
actual=intentResult,
@@ -545,29 +539,28 @@
removeResult = main.TRUE
# Check remaining intents
try:
- intentsJson = json.loads( main.CLIs[ 0 ].intents() )
- main.CLIs[ 0 ].removeIntent( intentId=intent1, purge=True )
- #main.CLIs[ 0 ].removeIntent( intentId=intent2, purge=True )
+ intentsJson = json.loads( main.Cluster.active( 0 ).CLI.intents() )
+ main.Cluster.active( 0 ).CLI.removeIntent( intentId=intent1, purge=True )
main.log.debug( intentsJson )
for intents in intentsJson:
- main.CLIs[ 0 ].removeIntent( intentId=intents.get( 'id' ),
- app='org.onosproject.optical',
- purge=True )
+ main.Cluster.active( 0 ).CLI.removeIntent( intentId=intents.get( 'id' ),
+ app='org.onosproject.optical',
+ purge=True )
time.sleep( 15 )
- for i in range( main.numCtrls ):
+ for ctrl in main.Cluster.active():
if not any ( intent.get('state') == 'WITHDRAWING' for intent
- in json.loads( main.CLIs[i].intents() ) ):
- main.log.debug( json.loads( main.CLIs[i].intents ) )
+ in json.loads( ctrl.CLI.intents() ) ):
+ main.log.debug( json.loads( ctrl.CLI.intents() ) )
removeResult = main.FALSE
break
else:
removeResult = main.TRUE
except ( TypeError, ValueError ):
- main.log.error( "Cannot see intents on Node " + str( main.CLIs[ 0 ] ) +
+ main.log.error( "Cannot see intents on " + main.Cluster.active( 0 ).name +
". Removing all intents." )
- main.CLIs[ 0 ].removeAllIntents( purge=True )
- main.CLIs[ 0 ].removeAllIntents( purge=True, app='org.onosproject.optical' )
+ main.Cluster.active( 0 ).CLI.removeAllIntents( purge=True )
+ main.Cluster.active( 0 ).CLI.removeAllIntents( purge=True, app='org.onosproject.optical' )
utilities.assert_equals( expect=main.TRUE,
actual=removeResult,
diff --git a/TestON/tests/FUNC/FUNCoptical/FUNCoptical.topo b/TestON/tests/FUNC/FUNCoptical/FUNCoptical.topo
index 72629b9..e051fd7 100755
--- a/TestON/tests/FUNC/FUNCoptical/FUNCoptical.topo
+++ b/TestON/tests/FUNC/FUNCoptical/FUNCoptical.topo
@@ -1,59 +1,32 @@
<TOPOLOGY>
<COMPONENT>
- <ONOSbench>
- <host>localhost</host>
+ <ONOScell>
+ <host>localhost</host> # ONOS "bench" machine
<user>sdn</user>
<password>rocks</password>
- <type>OnosDriver</type>
+ <type>OnosClusterDriver</type>
<connect_order>1</connect_order>
<COMPONENTS>
- <nodes>3</nodes>
- <prompt></prompt>
- </COMPONENTS>
- </ONOSbench>
-
- <ONOScli1>
- <host>localhost</host>
- <user>sdn</user>
- <password>rocks</password>
- <type>OnosCliDriver</type>
- <connect_order>2</connect_order>
- <COMPONENTS>
+ <cluster_name></cluster_name> # Used as a prefix for cluster components. Defaults to 'ONOS'
+ <diff_clihost></diff_clihost> # if it has different host other than localhost for CLI. True or empty. OC# will be used for True.
<karaf_username></karaf_username>
<karaf_password></karaf_password>
- <prompt></prompt>
+ <web_user></web_user>
+ <web_pass></web_pass>
+ <rest_port></rest_port>
+ <prompt></prompt> # TODO: we technically need a few of these, one per component
+ <onos_home></onos_home> # defines where onos home is
+ <nodes> 3 </nodes> # number of nodes in the cluster
</COMPONENTS>
- </ONOScli1>
-
- <ONOScli2>
- <host>localhost</host>
- <user>sdn</user>
- <password>rocks</password>
- <type>OnosCliDriver</type>
- <connect_order>3</connect_order>
- <COMPONENTS>
- <prompt></prompt>
- </COMPONENTS>
- </ONOScli2>
-
- <ONOScli3>
- <host>localhost</host>
- <user>sdn</user>
- <password>rocks</password>
- <type>OnosCliDriver</type>
- <connect_order>4</connect_order>
- <COMPONENTS>
- <prompt></prompt>
- </COMPONENTS>
- </ONOScli3>
+ </ONOScell>
<Mininet1>
<host>OCN</host>
<user>sdn</user>
<password>rocks</password>
<type>MininetCliDriver</type>
- <connect_order>5</connect_order>
+ <connect_order>2</connect_order>
<COMPONENTS>
<home>~/mininet/custom/</home>
<prompt></prompt>
@@ -65,7 +38,7 @@
<user>sdn</user>
<password>rocks</password>
<type>LincOEMininetDriver</type>
- <connect_order>7</connect_order>
+ <connect_order>3</connect_order>
<COMPONENTS>
<prompt></prompt>
</COMPONENTS>