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)
11 self._home_directory = None
15 def home_directory(self):
16 return self._home_directory
19 self._home_directory = self._attributes.\
20 get_attribute_value("homeDirectory")
22 def set(self, time, guid, name, value):
23 super(TestbedInstance, self).set(time, guid, name, value)
24 # TODO: take on account schedule time for the task
25 element = self._elements[guid]
27 setattr(element, name, value)
29 def get(self, time, guid, name):
30 # TODO: take on account schedule time for the task
31 element = self._elements.get(guid)
34 if hasattr(element, name):
36 return getattr(element, name)
38 # Try design-time attributes
39 return self.box_get(time, guid, name)
40 except KeyError, AttributeError:
43 def get_route(self, guid, index, attribute):
44 # TODO: fetch real data from planetlab
46 return self.box_get_route(guid, int(index), attribute)
47 except KeyError, AttributeError:
50 def get_address(self, guid, index, attribute='Address'):
51 # TODO: fetch real data from planetlab
53 return self.box_get_address(guid, int(index), attribute)
54 except KeyError, AttributeError:
58 def action(self, time, guid, action):
59 raise NotImplementedError
62 for trace in self._traces.values():
64 for element in self._elements.values():
67 def trace_filename(self, guid, trace_id):
68 # TODO: Need to be defined inside a home!!!! with and experiment id_code
69 return os.path.join(self.home_directory, "%d_%s" % (guid, trace_id))
71 def follow_trace(self, trace_id, trace):
72 self._traces[trace_id] = trace