Merge pull request #309 from rlane/ivs-batch-shutdown

support batch shutdown for IVS
This commit is contained in:
lantz
2014-05-28 14:31:34 -07:00
2 changed files with 10 additions and 5 deletions
+3 -4
View File
@@ -91,7 +91,7 @@ import re
import select
import signal
from time import sleep
from itertools import chain
from itertools import chain, groupby
from mininet.cli import CLI
from mininet.log import info, error, debug, output
@@ -408,10 +408,9 @@ class Mininet( object ):
info( '*** Stopping %i terms\n' % len( self.terms ) )
self.stopXterms()
info( '*** Stopping %i switches\n' % len( self.switches ) )
if self.switches:
swclass = type( self.switches[ 0 ] )
for swclass, switches in groupby( sorted( self.switches, key=type ), type ):
if hasattr( swclass, 'batchShutdown' ):
swclass.batchShutdown( self.switches )
swclass.batchShutdown( switches )
for switch in self.switches:
info( switch.name + ' ' )
switch.stop()
+7 -1
View File
@@ -993,7 +993,7 @@ class OVSSwitch( Switch ):
"Call ovs-vsctl del-br on all OVSSwitches in a list"
quietRun( 'ovs-vsctl ' +
' -- '.join( '--if-exists del-br %s' % s
for s in switches if type(s) == cls ) )
for s in switches ) )
def dpctl( self, *args ):
"Run ovs-ofctl command"
@@ -1106,6 +1106,12 @@ class IVSSwitch(Switch):
'not be loaded. Try modprobe openvswitch.\n' )
exit( 1 )
@classmethod
def batchShutdown( cls, switches ):
"Kill each IVS switch, to be waited on later in stop()"
for switch in switches:
switch.cmd( 'kill %ivs' )
def start( self, controllers ):
"Start up a new IVS switch"
args = ['ivs']