added default controller class
This commit is contained in:
@@ -25,7 +25,7 @@ from mininet.cli import CLI
|
|||||||
from mininet.log import lg, LEVELS, info, debug, error
|
from mininet.log import lg, LEVELS, info, debug, error
|
||||||
from mininet.net import Mininet, MininetWithControlNet, VERSION
|
from mininet.net import Mininet, MininetWithControlNet, VERSION
|
||||||
from mininet.node import ( Host, CPULimitedHost, Controller, OVSController,
|
from mininet.node import ( Host, CPULimitedHost, Controller, OVSController,
|
||||||
NOX, RemoteController, UserSwitch, OVSKernelSwitch,
|
NOX, RemoteController, DefaultController, UserSwitch, OVSKernelSwitch,
|
||||||
OVSLegacyKernelSwitch, IVSSwitch )
|
OVSLegacyKernelSwitch, IVSSwitch )
|
||||||
from mininet.link import Link, TCLink
|
from mininet.link import Link, TCLink
|
||||||
from mininet.topo import SingleSwitchTopo, LinearTopo, SingleSwitchReversedTopo
|
from mininet.topo import SingleSwitchTopo, LinearTopo, SingleSwitchReversedTopo
|
||||||
@@ -53,11 +53,12 @@ HOSTS = { 'proc': Host,
|
|||||||
'rt': custom( CPULimitedHost, sched='rt' ),
|
'rt': custom( CPULimitedHost, sched='rt' ),
|
||||||
'cfs': custom( CPULimitedHost, sched='cfs' ) }
|
'cfs': custom( CPULimitedHost, sched='cfs' ) }
|
||||||
|
|
||||||
CONTROLLERDEF = 'ovsc'
|
CONTROLLERDEF = 'default'
|
||||||
CONTROLLERS = { 'ref': Controller,
|
CONTROLLERS = { 'ref': Controller,
|
||||||
'ovsc': OVSController,
|
'ovsc': OVSController,
|
||||||
'nox': NOX,
|
'nox': NOX,
|
||||||
'remote': RemoteController,
|
'remote': RemoteController,
|
||||||
|
'default': DefaultController,
|
||||||
'none': lambda name: None }
|
'none': lambda name: None }
|
||||||
|
|
||||||
LINKDEF = 'default'
|
LINKDEF = 'default'
|
||||||
|
|||||||
+2
-1
@@ -95,7 +95,7 @@ from itertools import chain, groupby
|
|||||||
|
|
||||||
from mininet.cli import CLI
|
from mininet.cli import CLI
|
||||||
from mininet.log import info, error, debug, output
|
from mininet.log import info, error, debug, output
|
||||||
from mininet.node import Host, OVSKernelSwitch, Controller
|
from mininet.node import Host, OVSKernelSwitch, DefaultController, Controller
|
||||||
from mininet.link import Link, Intf
|
from mininet.link import Link, Intf
|
||||||
from mininet.util import quietRun, fixLimits, numCores, ensureRoot
|
from mininet.util import quietRun, fixLimits, numCores, ensureRoot
|
||||||
from mininet.util import macColonHex, ipStr, ipParse, netParse, ipAdd
|
from mininet.util import macColonHex, ipStr, ipParse, netParse, ipAdd
|
||||||
@@ -220,6 +220,7 @@ class Mininet( object ):
|
|||||||
name = controller_new.name
|
name = controller_new.name
|
||||||
# pylint: enable=E1103
|
# pylint: enable=E1103
|
||||||
else:
|
else:
|
||||||
|
# bookmark
|
||||||
controller_new = controller( name, **params )
|
controller_new = controller( name, **params )
|
||||||
# Add new controller to net
|
# Add new controller to net
|
||||||
if controller_new: # allow controller-less setups
|
if controller_new: # allow controller-less setups
|
||||||
|
|||||||
@@ -1278,6 +1278,15 @@ class Controller( Node ):
|
|||||||
self.__class__.__name__, self.name,
|
self.__class__.__name__, self.name,
|
||||||
self.IP(), self.port, self.pid )
|
self.IP(), self.port, self.pid )
|
||||||
|
|
||||||
|
class DefaultController( Controller ):
|
||||||
|
"find any controller that is available and run it"
|
||||||
|
def __init__( self, name, **kwargs ):
|
||||||
|
"search for any installed controller"
|
||||||
|
controllers = [ 'controller', 'ovs-controller', 'test-controller' ] # , 'pox', 'ryu' ] # test-controller is the important part
|
||||||
|
for c in controllers:
|
||||||
|
if quietRun( "which " + c ):
|
||||||
|
Controller.__init__( self, name, controller=c, **kwargs )
|
||||||
|
break
|
||||||
|
|
||||||
class OVSController( Controller ):
|
class OVSController( Controller ):
|
||||||
"Open vSwitch controller"
|
"Open vSwitch controller"
|
||||||
|
|||||||
Reference in New Issue
Block a user