mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-17 02:11:38 +02:00
Various minor fixes and improvements
- enable parameters for onos cli commands (e.g. onos:apps -a) - don't depend on onos1's name - reduce dependencies on unnecessary variables - enable running if karaf isn't installed elsewhere - make NAT an option Change-Id: I3e8abd51aa8d3f5c7afab1c6b86e50707de20ef6
This commit is contained in:
parent
ab8a0885e1
commit
4b51d5c32e
@ -74,7 +74,7 @@ def defaultUser():
|
|||||||
return user
|
return user
|
||||||
|
|
||||||
# Module vars, initialized below
|
# Module vars, initialized below
|
||||||
HOME = ONOS_ROOT = KARAF_ROOT = ONOS_HOME = ONOS_USER = None
|
HOME = ONOS_ROOT = ONOS_USER = None
|
||||||
ONOS_APPS = ONOS_WEB_USER = ONOS_WEB_PASS = ONOS_TAR = None
|
ONOS_APPS = ONOS_WEB_USER = ONOS_WEB_PASS = ONOS_TAR = None
|
||||||
|
|
||||||
def initONOSEnv():
|
def initONOSEnv():
|
||||||
@ -84,20 +84,16 @@ def initONOSEnv():
|
|||||||
nodes: list of ONOS nodes
|
nodes: list of ONOS nodes
|
||||||
returns: ONOS environment variable dict"""
|
returns: ONOS environment variable dict"""
|
||||||
# pylint: disable=global-statement
|
# pylint: disable=global-statement
|
||||||
global HOME, ONOS_ROOT, KARAF_ROOT, ONOS_HOME, ONOS_USER
|
global HOME, ONOS_ROOT, ONOS_USER
|
||||||
global ONOS_APPS, ONOS_WEB_USER, ONOS_WEB_PASS
|
global ONOS_APPS, ONOS_WEB_USER, ONOS_WEB_PASS
|
||||||
env = {}
|
env = {}
|
||||||
def sd( var, val ):
|
def sd( var, val ):
|
||||||
"Set default value for environment variable"
|
"Set default value for environment variable"
|
||||||
env[ var ] = environ.setdefault( var, val )
|
env[ var ] = environ.setdefault( var, val )
|
||||||
return env[ var ]
|
return env[ var ]
|
||||||
|
assert environ[ 'HOME' ]
|
||||||
HOME = sd( 'HOME', environ[ 'HOME' ] )
|
HOME = sd( 'HOME', environ[ 'HOME' ] )
|
||||||
assert HOME
|
|
||||||
ONOS_ROOT = sd( 'ONOS_ROOT', join( HOME, 'onos' ) )
|
ONOS_ROOT = sd( 'ONOS_ROOT', join( HOME, 'onos' ) )
|
||||||
KARAF_ROOT = sd( 'KARAF_ROOT',
|
|
||||||
glob( join( HOME,
|
|
||||||
'Applications/apache-karaf-*' ) )[ -1 ] )
|
|
||||||
ONOS_HOME = sd( 'ONOS_HOME', dirname( KARAF_ROOT ) )
|
|
||||||
environ[ 'ONOS_USER' ] = defaultUser()
|
environ[ 'ONOS_USER' ] = defaultUser()
|
||||||
ONOS_USER = sd( 'ONOS_USER', defaultUser() )
|
ONOS_USER = sd( 'ONOS_USER', defaultUser() )
|
||||||
ONOS_APPS = sd( 'ONOS_APPS',
|
ONOS_APPS = sd( 'ONOS_APPS',
|
||||||
@ -194,14 +190,11 @@ def RenamedTopo( topo, *args, **kwargs ):
|
|||||||
class ONOSNode( Controller ):
|
class ONOSNode( Controller ):
|
||||||
"ONOS cluster node"
|
"ONOS cluster node"
|
||||||
|
|
||||||
# Default karaf client location
|
|
||||||
client = '/tmp/onos1/karaf/bin/client'
|
|
||||||
|
|
||||||
def __init__( self, name, **kwargs ):
|
def __init__( self, name, **kwargs ):
|
||||||
kwargs.update( inNamespace=True )
|
kwargs.update( inNamespace=True )
|
||||||
Controller.__init__( self, name, **kwargs )
|
Controller.__init__( self, name, **kwargs )
|
||||||
self.dir = '/tmp/%s' % self.name
|
self.dir = '/tmp/%s' % self.name
|
||||||
# Satisfy pylint
|
self.client = self.dir + '/karaf/bin/client'
|
||||||
self.ONOS_HOME = '/tmp'
|
self.ONOS_HOME = '/tmp'
|
||||||
|
|
||||||
# pylint: disable=arguments-differ
|
# pylint: disable=arguments-differ
|
||||||
@ -224,6 +217,7 @@ class ONOSNode( Controller ):
|
|||||||
service = join( self.ONOS_HOME, 'bin/onos-service' )
|
service = join( self.ONOS_HOME, 'bin/onos-service' )
|
||||||
self.ucmd( service, 'server 1>../onos.log 2>../onos.log'
|
self.ucmd( service, 'server 1>../onos.log 2>../onos.log'
|
||||||
' & echo $! > onos.pid; ln -s `pwd`/onos.pid ..' )
|
' & echo $! > onos.pid; ln -s `pwd`/onos.pid ..' )
|
||||||
|
self.onosPid = int( self.cmd( 'cat onos.pid' ).strip() )
|
||||||
|
|
||||||
# pylint: enable=arguments-differ
|
# pylint: enable=arguments-differ
|
||||||
|
|
||||||
@ -232,6 +226,16 @@ class ONOSNode( Controller ):
|
|||||||
self.cmd( 'pkill -HUP -f karaf.jar && wait' )
|
self.cmd( 'pkill -HUP -f karaf.jar && wait' )
|
||||||
self.cmd( 'rm -rf', self.dir )
|
self.cmd( 'rm -rf', self.dir )
|
||||||
|
|
||||||
|
def isRunning( self ):
|
||||||
|
"Is our ONOS process still running?"
|
||||||
|
cmd = 'ps -p %d >/dev/null 2>&1 && echo "running" || echo "not running"'
|
||||||
|
return self.cmd( cmd % self.onosPid ) == 'running'
|
||||||
|
|
||||||
|
def sanityCheck( self ):
|
||||||
|
"Check whether we've quit or are running out of memory"
|
||||||
|
if not self.isRunning():
|
||||||
|
raise Exception( 'ONOS node %s has died' % self.name )
|
||||||
|
|
||||||
def waitStarted( self ):
|
def waitStarted( self ):
|
||||||
"Wait until we've really started"
|
"Wait until we've really started"
|
||||||
info( '(checking: karaf' )
|
info( '(checking: karaf' )
|
||||||
@ -281,6 +285,7 @@ class ONOSCluster( Controller ):
|
|||||||
args = list( args )
|
args = list( args )
|
||||||
name = args.pop( 0 )
|
name = args.pop( 0 )
|
||||||
topo = kwargs.pop( 'topo', None )
|
topo = kwargs.pop( 'topo', None )
|
||||||
|
nat = kwargs.pop( 'nat', 'nat0' )
|
||||||
# Default: single switch with 1 ONOS node
|
# Default: single switch with 1 ONOS node
|
||||||
if not topo:
|
if not topo:
|
||||||
topo = SingleSwitchTopo
|
topo = SingleSwitchTopo
|
||||||
@ -297,13 +302,13 @@ class ONOSCluster( Controller ):
|
|||||||
self.net = Mininet( topo=topo, ipBase=self.ipBase,
|
self.net = Mininet( topo=topo, ipBase=self.ipBase,
|
||||||
host=ONOSNode, switch=LinuxBridge,
|
host=ONOSNode, switch=LinuxBridge,
|
||||||
controller=None )
|
controller=None )
|
||||||
self.net.addNAT().configDefault()
|
if nat:
|
||||||
|
self.net.addNAT( nat ).configDefault()
|
||||||
updateNodeIPs( self.env, self.nodes() )
|
updateNodeIPs( self.env, self.nodes() )
|
||||||
self._remoteControllers = []
|
self._remoteControllers = []
|
||||||
|
|
||||||
def start( self ):
|
def start( self ):
|
||||||
"Start up ONOS cluster"
|
"Start up ONOS cluster"
|
||||||
killprocs( 'karaf.jar' )
|
|
||||||
info( '*** ONOS_APPS = %s\n' % ONOS_APPS )
|
info( '*** ONOS_APPS = %s\n' % ONOS_APPS )
|
||||||
self.net.start()
|
self.net.start()
|
||||||
for node in self.nodes():
|
for node in self.nodes():
|
||||||
@ -402,6 +407,10 @@ class ONOSCLI( OldCLI ):
|
|||||||
net = MininetFacade( net, cnet=c0.net )
|
net = MininetFacade( net, cnet=c0.net )
|
||||||
OldCLI.__init__( self, net, **kwargs )
|
OldCLI.__init__( self, net, **kwargs )
|
||||||
|
|
||||||
|
def onos1( self ):
|
||||||
|
"Helper function: return default ONOS node"
|
||||||
|
return self.mn.controllers[ 0 ].net.hosts[ 0 ]
|
||||||
|
|
||||||
def do_onos( self, line ):
|
def do_onos( self, line ):
|
||||||
"Send command to ONOS CLI"
|
"Send command to ONOS CLI"
|
||||||
c0 = self.mn.controllers[ 0 ]
|
c0 = self.mn.controllers[ 0 ]
|
||||||
@ -409,7 +418,10 @@ class ONOSCLI( OldCLI ):
|
|||||||
# cmdLoop strips off command name 'onos'
|
# cmdLoop strips off command name 'onos'
|
||||||
if line.startswith( ':' ):
|
if line.startswith( ':' ):
|
||||||
line = 'onos' + line
|
line = 'onos' + line
|
||||||
cmd = 'onos1 client -h onos1 ' + line
|
onos1 = self.onos1().name
|
||||||
|
if line:
|
||||||
|
line = '"%s"' % line
|
||||||
|
cmd = '%s client -h %s %s' % ( onos1, onos1, line )
|
||||||
quietRun( 'stty -echo' )
|
quietRun( 'stty -echo' )
|
||||||
self.default( cmd )
|
self.default( cmd )
|
||||||
quietRun( 'stty echo' )
|
quietRun( 'stty echo' )
|
||||||
@ -423,8 +435,8 @@ class ONOSCLI( OldCLI ):
|
|||||||
self.do_onos( ':balance-masters' )
|
self.do_onos( ':balance-masters' )
|
||||||
|
|
||||||
def do_log( self, line ):
|
def do_log( self, line ):
|
||||||
"Run tail -f /tmp/onos1/log on onos1; press control-C to stop"
|
"Run tail -f /tmp/onos1/log; press control-C to stop"
|
||||||
self.default( 'onos1 tail -f /tmp/onos1/log' )
|
self.default( self.onos1().name, 'tail -f /tmp/%s/log' % self.onos1() )
|
||||||
|
|
||||||
|
|
||||||
### Exports for bin/mn
|
### Exports for bin/mn
|
||||||
|
Loading…
x
Reference in New Issue
Block a user