2 # -*- coding: utf-8 -*-
4 from constants import TESTBED_ID
5 from nepi.core import testbed_impl
8 class TestbedInstance(testbed_impl.TestbedInstance):
9 def __init__(self, testbed_version):
10 super(TestbedInstance, self).__init__(TESTBED_ID, testbed_version)
12 self._home_directory = None
16 def home_directory(self):
17 return self._home_directory
24 self._home_directory = self._attributes.\
25 get_attribute_value("homeDirectory")
26 self._netns = self._load_netns_module()
28 def set(self, time, guid, name, value):
29 super(TestbedInstance, self).set(time, guid, name, value)
30 # TODO: take on account schedule time for the task
31 element = self._elements[guid]
33 setattr(element, name, value)
35 def get(self, time, guid, name):
36 # TODO: take on account schedule time for the task
37 element = self._elements[guid]
38 return getattr(element, name)
40 def action(self, time, guid, action):
41 raise NotImplementedError
43 def trace(self, guid, trace_id):
44 fd = open("%s" % self.trace_filename(guid, trace_id), "r")
50 for trace in self._traces.values():
52 for element in self._elements.values():
55 def trace_filename(self, guid, trace_id):
56 # TODO: Need to be defined inside a home!!!! with and experiment id_code
57 return os.path.join(self.home_directory, "%d_%s" % (guid, trace_id))
59 def follow_trace(self, trace_id, trace):
60 self._traces[trace_id] = trace
62 def _load_netns_module(self):
63 # TODO: Do something with the configuration!!!
66 netns_mod = sys.modules["netns"]
68 enable_debug = self._attributes.get_attribute_value("enableDebug")
70 netns_mod.environ.set_log_level(netns_mod.environ.LOG_DEBUG)