#!/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",
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" ],
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__()
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")
########
# 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
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)
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