Merging NETNS platform
authorAlina Quereilhac <alina.quereilhac@inria.fr>
Fri, 19 Dec 2014 10:03:35 +0000 (11:03 +0100)
committerAlina Quereilhac <alina.quereilhac@inria.fr>
Fri, 19 Dec 2014 10:03:35 +0000 (11:03 +0100)
1  2 
setup.py
src/nepi/resources/netns/netnswrapper.py
src/nepi/resources/ns3/ns3base.py

diff --combined setup.py
+++ b/setup.py
@@@ -1,11 -1,12 +1,11 @@@
  #!/usr/bin/env python
 -from nepi import __version__
  
  from distutils.core import setup
  import sys
  
  setup(
          name        = "nepi",
 -        version     = __version__,
 +        version     = "nepi-3-dev",
          description = "Network Experiment Management Framework",
          author      = "Alina Quereilhac, Julien Tribino, Lucia Guevgeozian",
          url         = "http://nepi.inria.fr",
@@@ -13,6 -14,7 +13,6 @@@
          platforms   = "Linux, OSX",
          packages    = [
              "nepi",
 -            "nepi.design",
              "nepi.execution",
              "nepi.resources",
              "nepi.resources.all",
              "nepi.resources.linux.ccn",
              "nepi.resources.linux.ns3",
              "nepi.resources.linux.ns3.ccn",
+             "nepi.resources.linux.netns",
              "nepi.resources.netns",
              "nepi.resources.ns3",
              "nepi.resources.ns3.classes",
              "nepi.resources.omf",
              "nepi.resources.planetlab",
              "nepi.resources.planetlab.openvswitch",
 -            "nepi.util"],
 +            "nepi.util",
 +            "nepi.util.parsers",
 +            "nepi.data",
 +            "nepi.data.processing",
 +            "nepi.data.processing.ccn",
 +            "nepi.data.processing.ping"],
          package_dir = {"": "src"},
          package_data = {
              "nepi.resources.planetlab" : [ "scripts/*.py" ],
@@@ -23,11 -23,6 +23,11 @@@ import o
  import sys
  import uuid
  
 +try:
 +    import netns
 +except ImportError:
 +    pass
 +
  class NetNSWrapper(object):
      def __init__(self, loglevel = logging.INFO, enable_dump = False):
          super(NetNSWrapper, self).__init__()
@@@ -58,6 -53,7 +58,7 @@@
   
      def create(self, clazzname, *args):
          """ This method should be used to construct netns objects """
+         import netns
  
          if clazzname not in ['open'] and not hasattr(netns, clazzname):
              msg = "Type %s not supported" % (clazzname) 
          self.debuger.dump_shutdown()
          ########
  
+         ### FLUSH PIPES
          sys.stdout.flush()
          sys.stderr.flush()
  
+         ### RELEASE OBJECTS
+         del self._objects 
          ### DEBUG
          self.logger.debug("SHUTDOWN")
          ########
@@@ -18,7 -18,7 +18,7 @@@
  # Author: Alina Quereilhac <alina.quereilhac@inria.fr>
  
  from nepi.execution.resource import ResourceManager, clsinit_copy, \
 -        ResourceState, reschedule_delay
 +        ResourceState
  from nepi.execution.attribute import Flags
  from nepi.execution.trace import TraceAttr
  
@@@ -32,7 -32,6 +32,7 @@@ class NS3Base(ResourceManager)
          self._uuid = None
          self._connected = set()
          self._trace_filename = dict()
 +        self._node = None
  
      @property
      def connected(self):
  
      @property
      def node(self):
 -        from nepi.resources.ns3.ns3node import NS3BaseNode
 -        nodes = self.get_connected(NS3BaseNode.get_rtype())
 -        if nodes: return nodes[0]
 -        return None
 +        if not self._node:
 +            from nepi.resources.ns3.ns3node import NS3BaseNode
 +            nodes = self.get_connected(NS3BaseNode.get_rtype())
 +            if nodes: self._node = nodes[0]
 +
 +        return self._node
  
      def trace(self, name, attr = TraceAttr.ALL, block = 512, offset = 0):
          filename = self._trace_filename.get(name)
@@@ -83,7 -80,7 +83,7 @@@
  
          kwargs = dict()
          for attr in self._attrs.values():
 -            if not ( attr.has_flag(Flags.Construct) and attr.has_changed() ):
 +            if not ( attr.has_flag(Flags.Construct) and attr.has_changed ):
                  continue
  
              kwargs[attr.name] = attr._value
      def do_deploy(self):
          if self._wait_rms():
              self.debug("---- RESCHEDULING DEPLOY ----" )
 -            self.ec.schedule(reschedule_delay, self.deploy)
 +            self.ec.schedule(self.reschedule_delay, self.deploy)
          else:
              self.do_discover()
              self.do_provision()
              self.info("Starting")
              self.set_started()
          else:
-             msg = " Failed "
+             msg = "Failed"
              self.error(msg, out, err)
              raise RuntimeError, msg
  
      def do_stop(self):
          if self.state == ResourceState.STARTED:
              # No need to do anything, simulation.Destroy() will stop every object
-             self.info("Stopping command '%s'" % command)
+             self.info("Stopping")
              self.set_stopped()
      
      @property