def __init__(self, name, loopback, CR, cluster_id, *args, **kwargs ):
		dirs = ['/var/log/', '/var/log/quagga', '/var/run', '/var/run/quagga', '/var/run/openvswitch', '/var/run/sshd']
		Host.__init__(self, name, privateDirs=dirs, *args, **kwargs )
		self.loopback = loopback

		if cluster_id == "default":
			cluster_id = "0"
		cluster_id = int(cluster_id)
		if CR:
			cluster_id = cluster_id + 128	
	
		extrainfo = '%02x000000' % cluster_id

		self.dpid = self.loopbackDpid(self.loopback, extrainfo)
		self.mac = self.loopbackMac(self.loopback,"0200")
		self.path_ovs = "%s/%s/ovs" %(self.baseDIR, self.name)
		self.path_quagga =  "%s/%s/quagga" %(self.baseDIR, self.name)
		self.path_fpm = "%s/%s/fpm-of" %(self.baseDIR, self.name)
		if OSHI.checked == False:
			self.checkQuagga()
			if self.OF_V == "OpenFlow13":
				self.checkOVS()
			if OSHI.SR == True:
				self.checkSR()
			OSHI.checked = True
Exemple #2
0
    def __init__(self, name, gobgpConfFile, zebraConfFile, intfDict, *args,
                 **kwargs):
        Host.__init__(self, name, *args, **kwargs)

        self.gobgpConfFile = gobgpConfFile
        self.zebraConfFile = zebraConfFile
        self.intfDict = intfDict
 def __init__(self, name, *args, **kwargs):
     dirs = [PRIVDIR]
     Host.__init__(self, name, privateDirs=dirs, *args, **kwargs)
     self.dir = "/tmp/%s" % name
     self.nets = []
     if not os.path.exists(self.dir):
         os.makedirs(self.dir)
Exemple #4
0
    def __init__(self, name, quaggaConfFile, zebraConfFile, intfDict, *args,
                 **kwargs):
        Host.__init__(self, name, *args, **kwargs)

        self.quaggaConfFile = quaggaConfFile
        self.zebraConfFile = zebraConfFile
        self.intfDict = intfDict
 def __init__(self, name, *args, **kwargs ):
     """privateDirs: list of private directories
        remounts: dirs to remount
        unmount: unmount dirs in cleanup? (True)
        Note: if unmount is False, you must call unmountAll()
        manually."""
     self.privateDirs = kwargs.pop( 'privateDirs', [] )
     self.remounts = kwargs.pop( 'remounts', [] )
     self.unmount = kwargs.pop( 'unmount', True )
     Host.__init__( self, name, *args, **kwargs )
     self.rundir = '%s/%s' % ( self.mnRunDir, name )
     self.root, self.private = None, None  # set in createBindMounts
     if self.privateDirs:
         self.privateDirs = [ realpath( d ) for d in self.privateDirs ]
         self.createBindMounts()
     # These should run in the namespace before we chroot,
     # in order to put the right entries in /etc/mtab
     # Eventually this will allow a local pid space
     # Now we chroot and cd to wherever we were before.
     pwd = self.cmd( 'pwd' ).strip()
     self.sendCmd( 'exec chroot', self.root, 'bash -ms mininet:'
                    + self.name )
     self.waiting = False
     self.cmd( 'cd', pwd )
     # In order for many utilities to work,
     # we need to remount /proc and /sys
     self.cmd( 'mount /proc' )
     self.cmd( 'mount /sys' )
Exemple #6
0
 def __init__(self, name, *args, **kwargs):
     """privateDirs: list of private directories
        remounts: dirs to remount
        unmount: unmount dirs in cleanup? (True)
        Note: if unmount is False, you must call unmountAll()
        manually."""
     self.privateDirs = kwargs.pop('privateDirs', [])
     self.remounts = kwargs.pop('remounts', [])
     self.unmount = kwargs.pop('unmount', True)
     Host.__init__(self, name, *args, **kwargs)
     self.rundir = '%s/%s' % (self.mnRunDir, name)
     if self.privateDirs:
         self.privateDirs = [realpath(d) for d in self.privateDirs]
         self.createBindMounts()
     # These should run in the namespace before we chroot,
     # in order to put the right entries in /etc/mtab
     # Eventually this will allow a local pid space
     # Now we chroot and cd to wherever we were before.
     pwd = self.cmd('pwd').strip()
     self.sendCmd('exec chroot', self.root, 'bash -ms mininet:' + self.name)
     self.waiting = False
     self.cmd('cd', pwd)
     # In order for many utilities to work,
     # we need to remount /proc and /sys
     self.cmd('mount /proc')
     self.cmd('mount /sys')
    def __init__(self, name, loopback, CR, cluster_id, *args, **kwargs):
        dirs = [
            '/var/log/', '/var/log/quagga', '/var/run', '/var/run/quagga',
            '/var/run/openvswitch', '/var/run/sshd'
        ]
        Host.__init__(self, name, privateDirs=dirs, *args, **kwargs)
        self.loopback = loopback

        if cluster_id == "default":
            cluster_id = "0"
        cluster_id = int(cluster_id)
        if CR:
            cluster_id = cluster_id + 128

        extrainfo = '%02x000000' % cluster_id

        self.dpid = self.loopbackDpid(self.loopback, extrainfo)
        self.mac = self.loopbackMac(self.loopback, "0200")
        self.path_ovs = "%s/%s/ovs" % (self.baseDIR, self.name)
        self.path_quagga = "%s/%s/quagga" % (self.baseDIR, self.name)
        self.path_fpm = "%s/%s/fpm-of" % (self.baseDIR, self.name)
        if OSHI.checked == False:
            self.checkQuagga()
            if self.OF_V == "OpenFlow13":
                self.checkOVS()
            if OSHI.SR == True:
                self.checkSR()
            OSHI.checked = True
Exemple #8
0
 def __init__(self, name, ips, ce_mac_address=None, gw=None, *args, **kwargs ):
   dirs = ['/var/log/', '/var/log/quagga', '/var/run', '/var/run/quagga']
   Host.__init__(self, name, privateDirs=dirs, *args, **kwargs )
   self.ips = ips
   self.ce_mac_address = ce_mac_address
   self.gw = gw
   self.path_quagga = "%s/%s/quagga" %(self.baseDIR, self.name)
Exemple #9
0
    def __init__(self,
                 name,
                 controller_ip,
                 ips,
                 dpid=None,
                 border=0,
                 ce_ip_address=None,
                 ce_mac_address=None,
                 *args,
                 **kwargs):
        dirs = [
            '/var/log/', '/var/log/quagga', '/var/run', '/var/run/quagga',
            '/var/run/openvswitch'
        ]
        Host.__init__(self, name, privateDirs=dirs, *args, **kwargs)
        self.path_ovs = "%s/%s/ovs" % (self.baseDIR, self.name)
        self.ips = ips

        if dpid is None:
            dpid = format((int(re.search(r'\d+', name).group())), '#018x')[2:]

        self.dpid = dpid
        self.controller_ip = controller_ip
        self.border = border
        self.ce_ip_address = ce_ip_address
        self.ce_mac_address = ce_mac_address
        self.path_quagga = "%s/%s/quagga" % (self.baseDIR, self.name)
Exemple #10
0
    def __init__(self, name, ip, mac, remoteIP, remoteMAC, iperfPort, *args,
                 **kwargs):
        Host.__init__(self, name, ip=ip, mac=mac, *args, **kwargs)

        self.remoteIP = remoteIP
        self.remoteMAC = remoteMAC
        self.iperfPort = iperfPort
    def __init__(self, name, exabgpIniFile, exabgpConfFile, intfDict, ARPDict, *args, **kwargs):
        Host.__init__(self, name, *args, **kwargs)

        self.exabgpConfFile = exabgpConfFile
        self.exabgpIniFile = exabgpIniFile
        self.intfDict = intfDict
        # TODO should be optional?
        self.ARPDict = ARPDict
Exemple #12
0
    def __init__(self, name, exabgpIniFile, exabgpConfFile, intfDict, ARPDict,
                 *args, **kwargs):
        Host.__init__(self, name, *args, **kwargs)

        self.exabgpConfFile = exabgpConfFile
        self.exabgpIniFile = exabgpIniFile
        self.intfDict = intfDict
        self.ARPDict = ARPDict
    def __init__(self, name, quaggaConfFile, zebraConfFile, intfDict, ARPDict, *args, **kwargs):
        Host.__init__(self, name, *args, **kwargs)

        self.quaggaConfFile = quaggaConfFile
        self.zebraConfFile = zebraConfFile
        self.intfDict = intfDict
        # TODO should be optional?
        self.ARPDict = ARPDict
Exemple #14
0
 def __init__( self, name, image='hadoop:latest', dargs=None, startString=None, **kwargs ):
     self.image = image
     self.dargs = dargs
     if startString is None:
         self.startString = "/bin/bash"
         self.dargs = "-di"
     else:
         self.startString = startString
     Host.__init__( self, name, **kwargs )
 def __init__( self, name, image='myace:v1', dargs=None, startString=None, **kwargs ):
     self.image = image
     self.dargs = dargs
     if startString is None:
         self.startString = "/bin/bash"
         self.dargs = "-ti"
     else:
         self.startString = startString
     Host.__init__( self, name, **kwargs )
Exemple #16
0
 def __init__( self, name, image='ubuntu', dargs=None, startString=None, **kwargs ):
     self.image = image
     self.dargs = dargs
     if startString is None:
         self.startString = "/bin/bash"
         self.dargs = "-it"
     else:
         self.startString = startString
     Host.__init__( self, name, **kwargs )
Exemple #17
0
    def __init__(self, name, **kwargs):

        Host.__init__(self, name, **kwargs)
        if not NdnHost.inited:
            NdnHostCommon.init()

        self.nfd = Nfd(self)
        self.nfd.start()

        self.peerList = {}
Exemple #18
0
 def __init__(self,
              name,
              ips,
              gw=None,
              ce_mac_address=None,
              *args,
              **kwargs):
     Host.__init__(self, name, *args, **kwargs)
     self.ips = ips
     self.gw = gw
     self.ce_mac_address = ce_mac_address
Exemple #19
0
    def __init__(self, name, **kwargs):

        kwargs.update(inNamespace=True)
        #self.alertAction = kwargs.pop( 'alertAction', 'exception' )
        Host.__init__(self, name, **kwargs)
        self.dir = '/tmp/%s' % self.name
        self.TENNISON_HOME = '/tmp'
        self.cmd('rm -rf', self.dir)
        self.TENNISON_INSTALL = self.unpackTENNISON(self.dir)

        setLogLevel('info')
Exemple #20
0
    def __init__(self, name, **kwargs):
        privateDirs = [('/usr/local/etc/ndn', '/tmp/%(name)s/usr/local/etc/ndn'),  ]
        kwargs['privateDirs'] = privateDirs

        Host.__init__(self, name, **kwargs)
        if not NdnHost.inited:
            NdnHostCommon.init()

        self.nfd = Nfd(self)
        self.nfd.start()

        self.peerList = {}
Exemple #21
0
    def __init__(self, name, ip=None, inNamespace=True,
                 root_dir=None, ssh_template=None,
                 auth_keys=None, **kwargs):

        self.name = name
        self.ssh_template = ssh_template
        self.auth_keys = auth_keys
        self.root_dir = root_dir
        self.ssh_pid_file = None
        self.mounted_dirs = []

        Host.__init__(self, name, inNamespace, **kwargs)
Exemple #22
0
 def __init__(self,
              name,
              ips,
              ce_mac_address=None,
              gw=None,
              *args,
              **kwargs):
     dirs = ['/var/log/', '/var/log/quagga', '/var/run', '/var/run/quagga']
     Host.__init__(self, name, privateDirs=dirs, *args, **kwargs)
     self.ips = ips
     self.ce_mac_address = ce_mac_address
     self.gw = gw
     self.path_quagga = "%s/%s/quagga" % (self.baseDIR, self.name)
Exemple #23
0
    def __init__(self, name, **kwargs):

        Host.__init__(self, name, **kwargs)
        if not NdnHost.inited:
            NdnHostCommon.init()

        # Create home directory for a node
        self.homeFolder = "%s/%s" % (self.params['workdir'], self.name)
        self.cmd("mkdir -p %s" % self.homeFolder)
        self.cmd("cd %s" % self.homeFolder)

        self.nfd = None

        self.peerList = {}
Exemple #24
0
    def __init__(self, name, **kwargs):

        Host.__init__(self, name, **kwargs)
        if not NdnHost.inited:
            NdnHostCommon.init()

        # Create home directory for a node
        self.homeFolder = "%s/%s" % (self.params['workdir'], self.name)
        self.cmd("mkdir -p %s" % self.homeFolder)
        self.cmd("cd %s" % self.homeFolder)

        self.nfd = Nfd(self)
        self.nfd.start()

        self.peerList = {}
Exemple #25
0
    def __init__(self, name, **kwargs ):

        self.portOffset = kwargs.pop('portOffset', 0)
        self.ipBase = kwargs.pop('ipBase', '192.168.123.0/24')
        self.ip = kwargs.pop('ip', '192.168.123.100')
        self.defaultGW = kwargs.pop('gw', '192.168.123.2')

        self.name = name
        kwargs.update( inNamespace=True )
        #self.alertAction = kwargs.pop( 'alertAction', 'exception' )
        Host.__init__( self, name, **kwargs )
        self.dir = '/tmp/%s' % self.name
        self.TENNISON_HOME = '/tmp'
        self.cmd( 'rm -rf', self.dir )
        self.TENNISON_INSTALL = self.unpackTENNISON( self.dir )
Exemple #26
0
  def __init__(self, name, controller_ip, ips, dpid=None, border=0, ce_ip_address=None, ce_mac_address=None, *args, **kwargs ):
    dirs = ['/var/log/', '/var/log/quagga', '/var/run', '/var/run/quagga', '/var/run/openvswitch']
    Host.__init__(self, name, privateDirs=dirs, *args, **kwargs )
    self.path_ovs = "%s/%s/ovs" %(self.baseDIR, self.name)
    self.ips = ips

    if dpid is None:
      dpid = format((int(re.search(r'\d+', name).group())), '#018x')[2:]

    self.dpid = dpid
    self.controller_ip = controller_ip
    self.border = border
    self.ce_ip_address = ce_ip_address
    self.ce_mac_address = ce_mac_address
    self.path_quagga = "%s/%s/quagga" %(self.baseDIR, self.name)
Exemple #27
0
 def __init__(self, name, image=None, tmpdir=None, prefix=None, env_vars=None, vol_maps=None,
              startup_timeout_ms=STARTUP_TIMEOUT_MS, network=None, **kwargs):
     self.image = image
     self.tmpdir = tmpdir
     self.prefix = prefix
     if env_vars is None:
         env_vars = []
     self.env_vars = env_vars
     if vol_maps is None:
         vol_maps = []
     self.vol_maps = vol_maps
     self.network = network
     self.startup_timeout_ms = startup_timeout_ms
     self.name = name
     self.pullImage()
     Host.__init__(self, name, **kwargs)
Exemple #28
0
 def __init__(self,
              name,
              image=None,
              tmpdir=None,
              prefix=None,
              env_vars=[],
              vol_maps=[],
              startup_timeout_ms=STARTUP_TIMEOUT_MS,
              **kwargs):
     self.image = image
     self.tmpdir = tmpdir
     self.prefix = prefix
     self.env_vars = env_vars
     self.vol_maps = vol_maps
     self.startup_timeout_ms = startup_timeout_ms
     Host.__init__(self, name, **kwargs)
Exemple #29
0
    def __init__(self, name, **kwargs):

        Host.__init__(self, name, **kwargs)
        if not NdnHost.inited:
            NdnHostCommon.init()

        # Create home directory for a node
        self.homeFolder = "%s/%s" % (self.params['workdir'], self.name
                                     )  # Xian: using workDir will occur erro
        self.cmd("mkdir -p %s" % self.homeFolder)
        self.cmd("cd %s" % self.homeFolder)

        self.nfd = Nfd(self)
        print "ndn_host.py--------------------------Ndnhost() cla---- init"
        self.nfd.start()

        self.peerList = {}
Exemple #30
0
    def __init__(self, name, sched='cfs', **kwargs):
        """Initailized Resource Limited Host Class"""
        Host.__init__(self, name, **kwargs)
        # Initialize class if necessary
        if not RSLimitedHost.inited:
            RSLimitedHost.init()

        self.cgroup = 'cpu,cpuacct,cpuset,memory,blkio:/' + self.name

        errFail('cgcreate -g ' + self.cgroup)
        errFail('cgclassify -g cpu,cpuacct,memory,blkio:/%s %s' %
                (self.name, self.pid))

        self.period_us = kwargs.get('period_us', 100000)
        self.sched = sched
        if sched == 'rt':
            self.checkRtGroupSched()
            self.rtprio = 20
Exemple #31
0
    def __init__(self,
                 name,
                 custom_type=Type.SD_CLOUD_HOST,
                 NO_of_Dir=10,
                 NO_of_files=20,
                 file_size=5,
                 Used_space=0,
                 **pars):
        Host.__init__(self, name, **pars)
        self.NO_of_files = NO_of_files
        self.NO_of_Dir = NO_of_Dir
        self.file_size = file_size
        self.Used_space = Used_space
        self.custom_type = custom_type
        """AR Content"""
        self.cLibrary = contentLibrary()

        print("Cloud host has been initialized")
Exemple #32
0
    def __init__(self,
                 name,
                 custom_type="sd_cloudHost",
                 NO_of_Dir=10,
                 NO_of_files=20,
                 file_size=5,
                 Used_space=0,
                 **pars):
        Host.__init__(self, name, **pars)
        self.NO_of_files = NO_of_files
        self.NO_of_Dir = NO_of_Dir
        self.file_size = file_size
        self.Used_space = Used_space
        self.custom_type = custom_type
        """AR Content"""
        self.AR_Library = []
        #[content_identifier,content_name,content_size]
        AR_content = [1, "CityAR.fbx", 5000]
        self.AR_Library.append(AR_content)
        AR_content = [2, "CarAR.obj", 9000]
        self.AR_Library.append(AR_content)
        AR_content = [3, "StreetAR.fbx", 3000]
        self.AR_Library.append(AR_content)
        AR_content = [4, "HeritageAR.jpg", 850]
        self.AR_Library.append(AR_content)
        AR_content = [5, "MallAR.fbx", 5000]
        self.AR_Library.append(AR_content)
        AR_content = [6, "statueAR.obj", 9000]
        self.AR_Library.append(AR_content)
        AR_content = [7, "StAR.fbx", 3000]
        self.AR_Library.append(AR_content)
        AR_content = [8, "HallAR.jpg", 850]
        self.AR_Library.append(AR_content)
        AR_content = [9, "resturantAR.fbx", 3000]
        self.AR_Library.append(AR_content)
        AR_content = [10, "policeStationAR.fbx", 850]
        self.AR_Library.append(AR_content)
        """
        for AR in self.AR_Library:
            for i in range(len(AR)):
                print ("index %s: content: %s"%(i,AR[i]))
        """

        print "Cloud host has been initialized"
Exemple #33
0
 def __init__(self,
              name,
              image='ubuntu-exp',
              dargs=None,
              startString=None,
              bridge="control-net",
              **kwargs):
     self.image = image
     self.dargs = dargs
     if startString is None:
         self.startString = "/bin/bash"
         self.dargs = "-di"
     else:
         self.startString = startString
     if bridge is None:
         self.docker_bridge = "none"
     else:
         self.docker_bridge = bridge
     Host.__init__(self, name, **kwargs)
Exemple #34
0
    def __init__(self, name, **kwargs):

        Host.__init__(self, name, **kwargs)
        if not NdnHost.inited:
            NdnHostCommon.init()

        # Hacky quick fix
        if self.params.get('workdir') is None:
            self.params['workdir'] = '/tmp'
            self.params['params'] = {}

        # Create home directory for a node
        self.homeFolder = "%s/%s" % (self.params['workdir'], self.name)
        self.cmd("mkdir -p %s" % self.homeFolder)
        self.cmd("cd %s" % self.homeFolder)

        self.nfd = Nfd(self)
        self.nfd.start()

        self.peerList = {}
Exemple #35
0
 def __init__(self,
              name,
              basedir=None,
              tmpdir=None,
              env_vars=None,
              vol_maps=None,
              startup_cmd='entrypoint',
              **kwargs):
     self.basedir = basedir
     self.tmpdir = tmpdir
     self.env_vars = env_vars if env_vars is not None else []
     self.vol_maps = vol_maps if vol_maps is not None else []
     self.vol_maps.append((os.path.abspath(os.path.join(self.tmpdir,
                                                        'tmp')),
                           os.path.join(self.basedir, 'tmp')))
     self.name = name
     script_full_path = os.path.join(self.basedir, startup_cmd)
     self.startup_cmd = startup_cmd if startup_cmd.startswith(
         '/') else script_full_path
     self.active_pipe = None
     self.active_log = None
     Host.__init__(self, name, **kwargs)
Exemple #36
0
    def __init__(self, *opts, **params):
        """Construct NDN host.
           fw: forwarder constructor
           rout: routing constructor
           env: base environ for popen"""
        OVERRIDE_DIRS = ['/etc/ndn', '/var/log/ndn', '/var/run', '/root']
        privateDirs = params.get('privateDirs', [])
        privateDirs = [pd for pd in privateDirs if pd[0] not in OVERRIDE_DIRS]
        for d in OVERRIDE_DIRS:
            privateDirs.append((d, '/tmp/mnndn/%(name)s' + d))
        params['privateDirs'] = privateDirs

        Host.__init__(self, *opts, **params)
        self.cmd('export HOME=/root')

        from NfdForwarder import NfdForwarder
        from NlsrRouting import NlsrRouting
        self.fwCtor = params.pop('fw', NfdForwarder)
        self.routCtor = params.pop('rout', NlsrRouting)
        self.env = params.pop('env', {})

        self.fw = None
        self.rout = None
Exemple #37
0
    def __init__(self, *opts, **params):
        """Construct NDN host.
           fw: forwarder constructor
           rout: routing constructor
           env: base environ for popen"""
        OVERRIDE_DIRS = ['/etc/ndn', '/var/log/ndn', '/var/run', '/root']
        privateDirs = params.get('privateDirs', [])
        privateDirs = [ pd for pd in privateDirs if pd[0] not in OVERRIDE_DIRS ]
        for d in OVERRIDE_DIRS:
            privateDirs.append((d, '/tmp/mnndn/%(name)s' + d))
        params['privateDirs'] = privateDirs

        Host.__init__(self, *opts, **params)
        self.cmd('export HOME=/root')

        from NfdForwarder import NfdForwarder
        from NlsrRouting import NlsrRouting
        self.fwCtor = params.pop('fw', NfdForwarder)
        self.routCtor = params.pop('rout', NlsrRouting)
        self.env = params.pop('env', {})

        self.fw = None
        self.rout = None
Exemple #38
0
 def __init__(self, name, ips, gw=None, ce_mac_address=None, *args, **kwargs ):
   Host.__init__(self, name, *args, **kwargs )
   self.ips = ips
   self.gw = gw
   self.ce_mac_address = ce_mac_address
Exemple #39
0
 def __init__(self, name, inNamespace=True, **params):
     Host.__init__(self, name, inNamespace=inNamespace, **params)
	def __init__(self, name, *args, **kwargs ):
		#dirs = ['/var/run', '/var/run/sshd']
		# NO PRIVATE DIRS, BECAUSE IT IS IN THE VM Namespace
		Host.__init__( self, name, *args, **kwargs )
		self.id = self.newId()
Exemple #41
0
 def __init__(self, name, inNamespace=True, **params):
     Host.__init__(self, name, inNamespace=inNamespace, **params)
     self.exectoken = "/tmp/mn-exec-token-host-%s" % name
     self.cmd("touch %s" % self.exectoken)
	def __init__(self, name, *args, **kwargs ):
		dirs = ['/var/log/', '/var/run', '/var/run/openvswitch']
		Host.__init__(self, name, privateDirs=dirs, *args, **kwargs )
		self.path_ovs = "%s/%s/ovs" %(self.baseDIR, self.name)
Exemple #43
0
 def __init__(self, name, ips, *args, **kwargs ):
   dirs = ['/var/log/', '/var/log/quagga', '/var/run', '/var/run/quagga']
   Host.__init__(self, name, privateDirs=dirs, *args, **kwargs )
   self.ips = ips
   self.path_quagga = "%s/%s/quagga" %(self.baseDIR, self.name)
 def __init__(self, name, **kwargs):
     Host.__init__(self, name, **kwargs)
     self.iperf_server = None
     self.web_server = None
     self.client = None
Exemple #45
0
    def __init__(self, name, dimage, dcmd=None, **kwargs):
        """
        Creates a Docker container as Mininet host.

        Resource limitations based on CFS scheduler:
        * cpu.cfs_quota_us: the total available run-time within a period (in microseconds)
        * cpu.cfs_period_us: the length of a period (in microseconds)
        (https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt)

        Default Docker resource limitations:
        * cpu_shares: Relative amount of max. avail CPU for container
            (not a hard limit, e.g. if only one container is busy and the rest idle)
            e.g. usage: d1=4 d2=6 <=> 40% 60% CPU
        * cpuset_cpus: Bind containers to CPU 0 = cpu_1 ... n-1 = cpu_n (string: '0,2')
        * mem_limit: Memory limit (format: <number>[<unit>], where unit = b, k, m or g)
        * memswap_limit: Total limit = memory + swap

        All resource limits can be updated at runtime! Use:
        * updateCpuLimits(...)
        * updateMemoryLimits(...)
        """
        self.dimage = dimage
        self.dnameprefix = "mn"
        self.dcmd = dcmd if dcmd is not None else "/bin/bash"
        self.dc = None  # pointer to the dict containing 'Id' and 'Warnings' keys of the container
        self.dcinfo = None
        self.did = None  # Id of running container
        #  let's store our resource limits to have them available through the
        #  Mininet API later on
        defaults = {
            'cpu_quota': -1,
            'cpu_period': None,
            'cpu_shares': None,
            'cpuset_cpus': None,
            'mem_limit': None,
            'memswap_limit': None,
            'environment': {},
            'volumes': [],  # use ["/home/user1/:/mnt/vol2:rw"]
            'tmpfs': [],  # use ["/home/vol1/:size=3G,uid=1000"]
            'network_mode': None,
            'publish_all_ports': True,
            'port_bindings': {},
            'ports': [],
            'dns': [],
        }
        defaults.update(kwargs)

        # keep resource in a dict for easy update during container lifetime
        self.resources = dict(cpu_quota=defaults['cpu_quota'],
                              cpu_period=defaults['cpu_period'],
                              cpu_shares=defaults['cpu_shares'],
                              cpuset_cpus=defaults['cpuset_cpus'],
                              mem_limit=defaults['mem_limit'],
                              memswap_limit=defaults['memswap_limit'])

        self.volumes = defaults['volumes']
        self.tmpfs = defaults['tmpfs']
        self.environment = {} if defaults['environment'] is None else defaults[
            'environment']
        # setting PS1 at "docker run" may break the python docker api (update_container hangs...)
        # self.environment.update({"PS1": chr(127)})  # CLI support
        self.network_mode = defaults['network_mode']
        self.publish_all_ports = defaults['publish_all_ports']
        self.port_bindings = defaults['port_bindings']
        self.dns = defaults['dns']

        # setup docker client
        self.dcli = docker.APIClient(base_url='unix://var/run/docker.sock')
        #self.dcli = docker.from_env()

        # pull image if it does not exist
        self._check_image_exists(dimage, True)

        # for DEBUG
        debug("Created docker container object %s\n" % name)
        debug("image: %s\n" % str(self.dimage))
        debug("dcmd: %s\n" % str(self.dcmd))
        info("%s: kwargs %s\n" % (name, str(kwargs)))

        # creats host config for container
        # see: https://docker-py.readthedocs.org/en/latest/hostconfig/
        hc = self.dcli.create_host_config(
            network_mode=self.network_mode,
            privileged=True,  # we need this to allow mininet network setup
            binds=self.volumes,
            tmpfs=self.tmpfs,
            publish_all_ports=self.publish_all_ports,
            port_bindings=self.port_bindings,
            mem_limit=self.resources.get('mem_limit'),
            cpuset_cpus=self.resources.get('cpuset_cpus'),
            dns=self.dns,
            runtime='nvidia'  #add by will
        )

        if kwargs.get("rm", False):
            container_list = self.dcli.containers(all=True)
            for container in container_list:
                for container_name in container.get("Names", []):
                    if "%s.%s" % (self.dnameprefix, name) in container_name:
                        self.dcli.remove_container(container="%s.%s" %
                                                   (self.dnameprefix, name),
                                                   force=True)
                        break

        # create new docker container
        self.dc = self.dcli.create_container(
            name="%s.%s" % (self.dnameprefix, name),
            image=self.dimage,
            command=self.dcmd,
            entrypoint=list(
            ),  # overwrite (will be executed manually at the end)
            stdin_open=True,  # keep container open
            tty=True,  # allocate pseudo tty
            environment=self.environment,
            #network_disabled=True,  # docker stats breaks if we disable the default network
            host_config=hc,
            ports=defaults['ports'],
            labels=['com.containernet'],
            volumes=[
                self._get_volume_mount_name(v) for v in self.volumes
                if self._get_volume_mount_name(v) is not None
            ],
            hostname=name)

        # start the container
        self.dcli.start(self.dc)

        debug("Docker container %s started\n" % name)

        # fetch information about new container
        self.dcinfo = self.dcli.inspect_container(self.dc)
        self.did = self.dcinfo.get("Id")

        # call original Node.__init__
        Host.__init__(self, name, **kwargs)

        # let's initially set our resource limits
        self.update_resources(**self.resources)
    def __init__(self, name, quaggaConfFile, zebraConfFile, intfDict, *args, **kwargs):
        Host.__init__(self, name, *args, **kwargs)

        self.quaggaConfFile = quaggaConfFile
        self.zebraConfFile = zebraConfFile
        self.intfDict = intfDict
Exemple #47
0
    def __init__(self, name, intfDict, *args, **kwargs):
        Host.__init__(self, name, *args, **kwargs)

        self.intfDict = intfDict
    def __init__(self, name, ip, route, *args, **kwargs):
        Host.__init__(self, name, ip=ip, *args, **kwargs)

        self.route = route
Exemple #49
0
	def __init__(self, name, *args, **kwargs ):
		Host.__init__( self, name, *args, **kwargs )
		self.id = self.newId()
	def __init__(self, name, *args, **kwargs ):
		dirs = ['/var/run', '/var/run/sshd']
		Host.__init__( self, name, privateDirs=dirs, *args, **kwargs )
		self.id = self.newId()
    def __init__(self, name, ip, mac, remoteIP, remoteMAC, *args, **kwargs):
        Host.__init__(self, name, ip=ip, mac=mac, *args, **kwargs)

        self.remoteIP = remoteIP
        self.remoteMAC = remoteMAC
    def __init__(self, name, ip, gw, *args, **kwargs):
        Host.__init__(self, name, ip=ip, *args, **kwargs)

        self.gw = gw
Exemple #53
0
 def __init__(self, name, *args, **kwargs):
     dirs = ['/var/mininet']
     Host.__init__(self, name, privateDirs=dirs, *args, **kwargs)
Exemple #54
0
 def __init__(self, name, inNamespace=True, **params):
     Host.__init__(self, name, inNamespace=inNamespace, **params)
    def __init__(self, name, intfDict, *args, **kwargs):
        Host.__init__(self, name, *args, **kwargs)

        self.intfDict = intfDict
	def __init__(self, name, loopback, *args, **kwargs ):
		dirs = ['/var/log/', '/var/log/quagga', '/var/run', '/var/run/quagga']
		Host.__init__(self, name, privateDirs=dirs, *args, **kwargs )
		self.loopback = loopback