Move init() into Mininet() and remove calls (since called automatically.)

Note: we should probably rename it "setup()" to avoid confusion.
This commit is contained in:
Bob Lantz
2012-03-09 14:10:20 -08:00
parent e3c074b881
commit 8e3699eca6
7 changed files with 31 additions and 41 deletions
+2 -5
View File
@@ -19,7 +19,7 @@ import time
from mininet.clean import cleanup
from mininet.cli import CLI
from mininet.log import lg, LEVELS, info, warn
from mininet.net import Mininet, init
from mininet.net import Mininet
from mininet.node import Host, CPULimitedHost, Controller, OVSController, NOX
from mininet.node import RemoteController, UserSwitch, OVSKernelSwitch
from mininet.link import Intf, TCIntf
@@ -27,6 +27,7 @@ from mininet.topo import SingleSwitchTopo, LinearTopo, SingleSwitchReversedTopo
from mininet.topolib import TreeTopo
from mininet.util import makeNumeric, custom
def customNode( constructors, argStr ):
"Return custom Node constructor based on argStr"
cname, newargs, kwargs = splitArgs( argStr )
@@ -47,7 +48,6 @@ def customNode( constructors, argStr ):
return custom
# built in topologies, created only when run
TOPODEF = 'minimal'
TOPOS = { 'minimal': lambda: SingleSwitchTopo( k=2 ),
@@ -229,9 +229,6 @@ class MininetRunner( object ):
% self.options.verbosity )
lg.setLogLevel( self.options.verbosity )
# validate environment setup
init()
def begin( self ):
"Create and run mininet."
+1 -2
View File
@@ -26,7 +26,7 @@ of switches, this example demonstrates:
import sys
flush = sys.stdout.flush
from mininet.net import init, Mininet
from mininet.net import Mininet
# from mininet.node import KernelSwitch
from mininet.node import UserSwitch, OVSKernelSwitch
from mininet.topo import Topo, Node
@@ -106,7 +106,6 @@ def linearBandwidthTest( lengths ):
if __name__ == '__main__':
lg.setLogLevel( 'info' )
init()
sizes = [ 1, 10, 20, 40, 60, 80, 100 ]
print "*** Running linearBandwidthTest", sizes
linearBandwidthTest( sizes )
+4 -5
View File
@@ -8,13 +8,13 @@ but it exposes the configuration details and allows customization.
For most tasks, the higher-level API will be preferable.
"""
from mininet.net import init
from mininet.node import Node, OVSKernelSwitch
from mininet.net import Mininet
from mininet.node import Node
from mininet.util import createLink
from mininet.log import setLogLevel, info
def scratchNet( cname='controller', cargs='ptcp:' ):
"Create network from scratch using kernel switch."
"Create network from scratch using Open vSwitch."
info( "*** Creating nodes\n" )
controller = Node( 'c0', inNamespace=False )
@@ -53,6 +53,5 @@ def scratchNet( cname='controller', cargs='ptcp:' ):
if __name__ == '__main__':
setLogLevel( 'info' )
info( '*** Scratch network demo (kernel datapath)\n' )
OVSKernelSwitch.setup()
init()
Mininet.init()
scratchNet()
+2 -2
View File
@@ -10,7 +10,7 @@ For most tasks, the higher-level API will be preferable.
This version uses the user datapath and an explicit control network.
"""
from mininet.net import init
from mininet.net import Mininet
from mininet.node import Node
from mininet.util import createLink
from mininet.log import setLogLevel, info
@@ -64,5 +64,5 @@ def scratchNetUser( cname='controller', cargs='ptcp:' ):
if __name__ == '__main__':
setLogLevel( 'info' )
info( '*** Scratch network demo (user datapath)\n' )
init()
Mininet.init()
scratchNetUser()
+16 -18
View File
@@ -146,7 +146,7 @@ class Mininet( object ):
self.terms = [] # list of spawned xterm processes
init() # Initialize Mininet if necessary
Mininet.init() # Initialize Mininet if necessary
self.built = False
if topo and build:
@@ -527,6 +527,21 @@ class Mininet( object ):
self.stop()
return result
inited = False
@classmethod
def init( cls ):
"Initialize Mininet"
if cls.inited:
return
if os.getuid() != 0:
# Note: this script must be run as root
# Perhaps we should do so automatically!
print "*** Mininet must run as root."
exit( 1 )
fixLimits()
cls.inited = True
class MininetWithControlNet( Mininet ):
@@ -592,21 +607,4 @@ class MininetWithControlNet( Mininet ):
exit( 1 )
info( '\n' )
# pylint thinks inited is unused
# pylint: disable-msg=W0612
def init():
"Initialize Mininet."
if init.inited:
return
if os.getuid() != 0:
# Note: this script must be run as root
# Perhaps we should do so automatically!
print "*** Mininet must run as root."
exit( 1 )
fixLimits()
init.inited = True
init.inited = False
# pylint: enable-msg=W0612
+4 -4
View File
@@ -499,7 +499,7 @@ class CPULimitedHost( Host ):
"Set a cgroup parameter and return its value"
cmd = 'cgset -r %s.%s=%s /%s' % (
resource, param, value, self.name )
out = quietRun( cmd )
quietRun( cmd )
nvalue = int( self.cgroupGet( param, resource ) )
if nvalue != value:
error( '*** error: cgroupSet: %s set to %s instead of %s\n'
@@ -568,11 +568,11 @@ class CPULimitedHost( Host ):
# Reset to unlimited
quota = -1
# Set cgroup's period and quota
nperiod = self.cgroupSet( pstr, period )
nquota = self.cgroupSet( qstr, quota )
self.cgroupSet( pstr, period )
self.cgroupSet( qstr, quota )
if sched == 'rt':
# Set RT priority if necessary
nchrt = self.chrt( prio=20 )
self.chrt( prio=20 )
info( '(%s %d/%dus) ' % ( sched, quota, period ) )
def config( self, cpu=None, sched=None, **params ):
+2 -5
View File
@@ -5,8 +5,8 @@
import unittest
from mininet.net import init, Mininet
from mininet.node import Host, Controller, ControllerParams
from mininet.net import Mininet
from mininet.node import Host, Controller
from mininet.node import UserSwitch, OVSKernelSwitch
from mininet.topo import SingleSwitchTopo, LinearTopo
from mininet.log import setLogLevel
@@ -21,7 +21,6 @@ class testSingleSwitch( unittest.TestCase ):
def testMinimal( self ):
"Ping test with both datapaths on minimal topology"
init()
for switch in SWITCHES.values():
mn = Mininet( SingleSwitchTopo(), switch, Host, Controller )
dropped = mn.run( mn.ping )
@@ -29,7 +28,6 @@ class testSingleSwitch( unittest.TestCase ):
def testSingle5( self ):
"Ping test with both datapaths on 5-host single-switch topology"
init()
for switch in SWITCHES.values():
mn = Mininet( SingleSwitchTopo( k=5 ), switch, Host, Controller )
dropped = mn.run( mn.ping )
@@ -41,7 +39,6 @@ class testLinear( unittest.TestCase ):
def testLinear5( self ):
"Ping test with both datapaths on a 5-switch topology"
init()
for switch in SWITCHES.values():
mn = Mininet( LinearTopo( k=5 ), switch, Host, Controller )
dropped = mn.run( mn.ping )