From 876e66e5553fe1c93ef4ad4d3c9cbff5bb3735ee Mon Sep 17 00:00:00 2001 From: Rich Lane Date: Thu, 22 May 2014 12:36:07 -0700 Subject: [PATCH] net: allow batch shutdown of multiple types of switches Each switch class will be called to shutdown its own instances. --- mininet/net.py | 7 +++---- mininet/node.py | 5 ++--- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/mininet/net.py b/mininet/net.py index 1c932f9..8edaee3 100755 --- a/mininet/net.py +++ b/mininet/net.py @@ -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() diff --git a/mininet/node.py b/mininet/node.py index fdc855e..54bfd23 100644 --- a/mininet/node.py +++ b/mininet/node.py @@ -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" @@ -1110,8 +1110,7 @@ class IVSSwitch(Switch): def batchShutdown( cls, switches ): "Kill each IVS switch, to be waited on later in stop()" for switch in switches: - if type(switch) == cls: - switch.cmd( 'kill %ivs' ) + switch.cmd( 'kill %ivs' ) def start( self, controllers ): "Start up a new IVS switch"