Allow use of onos docker for existing tests
- Allow Cluster to pull/build onos docker
- Connect clidriver to cli runnning in docker
- Some changes for debugability in components
- To use, set the useDocker and diffCliHosts tags in the cluster
component to True, then define parameters in the params file
- Update all SR Stratum tests to use the tost docker image
- NOTE: Since the tost-onos image doesn't have openflow installe, we are
currently only using docker for the bmv2 and tofino switches
Change-Id: If900b0bdbf9a41b8885c692ccba18a3b1bc580cc
diff --git a/TestON/drivers/common/cli/onosclusterdriver.py b/TestON/drivers/common/cli/onosclusterdriver.py
index 83d4295..520250b 100755
--- a/TestON/drivers/common/cli/onosclusterdriver.py
+++ b/TestON/drivers/common/cli/onosclusterdriver.py
@@ -56,27 +56,19 @@
We will look into each of the node's component handles to try to find the attreibute, looking at REST first
"""
- usedDriver = False
if hasattr( self.REST, name ):
- if not usedDriver:
- usedDriver = True
- main.log.debug( "%s: Using Rest driver's attribute for '%s'" % ( self.name, name ) )
- f = getattr( self.REST, name )
+ main.log.debug( "%s: Using Rest driver's attribute for '%s'" % ( self.name, name ) )
+ return getattr( self.REST, name )
if hasattr( self.CLI, name ):
- if not usedDriver:
- usedDriver = True
- main.log.debug( "%s: Using CLI driver's attribute for '%s'" % ( self.name, name ) )
- f = getattr( self.CLI, name )
+ main.log.debug( "%s: Using CLI driver's attribute for '%s'" % ( self.name, name ) )
+ return getattr( self.CLI, name )
if hasattr( self.Bench, name ):
- if not usedDriver:
- usedDriver = True
- main.log.debug( "%s: Using Bench driver's attribute for '%s'" % ( self.name, name ) )
- f = getattr( self.Bench, name )
- if usedDriver:
- return f
+ main.log.debug( "%s: Using Bench driver's attribute for '%s'" % ( self.name, name ) )
+ return getattr( self.Bench, name )
raise AttributeError( "Could not find the attribute %s in %r or it's component handles" % ( name, self ) )
- def __init__( self, name, ipAddress, CLI=None, REST=None, Bench=None, pos=None, userName=None, server=None ):
+ def __init__( self, name, ipAddress, CLI=None, REST=None, Bench=None, pos=None,
+ userName=None, server=None, dockerPrompt=None ):
# TODO: validate these arguments
self.name = str( name )
self.ipAddress = ipAddress
@@ -88,6 +80,7 @@
self.ip_address = ipAddress
self.user_name = userName
self.server = server
+ self.dockerPrompt = dockerPrompt
class OnosClusterDriver( CLI ):
@@ -98,6 +91,8 @@
self.name = None
self.home = None
self.handle = None
+ self.useDocker = False
+ self.dockerPrompt = None
self.nodes = []
super( OnosClusterDriver, self ).__init__()
@@ -127,11 +122,17 @@
self.karafPass = self.options[ key ]
elif key == "cluster_name":
prefix = self.options[ key ]
+ elif key == "useDocker":
+ self.useDocker = "True" == self.options[ key ]
+ elif key == "docker_prompt":
+ self.dockerPrompt = self.options[ key ]
self.home = self.checkOptions( self.home, "~/onos" )
self.karafUser = self.checkOptions( self.karafUser, self.user_name )
self.karafPass = self.checkOptions( self.karafPass, self.pwd )
prefix = self.checkOptions( prefix, "ONOS" )
+ self.useDocker = self.checkOptions( self.useDocker, False )
+ self.dockerPrompt = self.checkOptions( self.dockerPrompt, "~/onos#" )
self.name = self.options[ 'name' ]
@@ -435,4 +436,6 @@
rest = self.createRestComponent( restName, ip )
bench = self.createBenchComponent( benchName )
server = self.createServerComponent( serverName, ip ) if createServer else None
- self.nodes.append( Controller( prefix + str( i ), ip, cli, rest, bench, i - 1, self.user_name, server=server ) )
+ self.nodes.append( Controller( prefix + str( i ), ip, cli, rest, bench, i - 1,
+ self.user_name, server=server,
+ dockerPrompt=self.dockerPrompt ) )