# Copyright (C) 2013 INRIA
#
# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation;
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
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__()
self._logger.setLevel(loglevel)
# Object to dump instructions to reproduce and debug experiment
- from netnswrapper_debug import NetNSWrapperDebuger
+ from nepi.resources.netns.netnswrapper_debug import NetNSWrapperDebuger
self._debuger = NetNSWrapperDebuger(enabled = enable_dump)
@property
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)
if clazzname == "open":
path = args[0]
mode = args[1]
+ # xxx Thierry: not sure where this gets closed
obj = open(path, mode)
else:
clazz = getattr(netns, clazzname)
# If the result is an object (not a base value),
# then keep track of the object a return the object
# reference (newuuid)
+ # xxx the two instances of `int` are from 2to3
if not (result is None or type(result) in [
- bool, float, long, str, int]):
+ bool, float, int, str, int]):
self._objects[newuuid] = result
result = newuuid
self.debuger.dump_shutdown()
########
+ ### FLUSH PIPES
sys.stdout.flush()
sys.stderr.flush()
+ ### RELEASE OBJECTS
+ del self._objects
+
### DEBUG
self.logger.debug("SHUTDOWN")
########
def replace_kwargs(self, kwargs):
realkwargs = dict([(k, self.get_object(v) \
if str(v).startswith("uuid") else v) \
- for k,v in kwargs.iteritems()])
+ for k,v in kwargs.items()])
return realkwargs