2 # -*- coding: utf-8 -*-
4 from nepi.util.guid import GuidGenerator
7 class ExperimentDescription(object):
8 def __init__(self, guid = 0):
9 self._guid_generator = GuidGenerator(guid)
10 # testbed design instances
11 self._testbed_descriptions = dict()
12 self._testbed_providers = dict()
15 def xml_description(self):
16 raise NotImplementedError
18 def add_testbed_description(self, testbed_id, testbed_version):
19 testbed_module = self._testbed_module(testbed_id)
20 testbed_provider = self._testbed_provider(testbed_id, testbed_version)
21 testbed_description = testbed_module.create_description_instance(
22 self._guid_generator, testbed_version, testbed_provider)
23 guid = testbed_description.guid
24 self._testbed_descriptions[guid] = testbed_description
25 return testbed_description
27 def remove_testbed_description(self, testbed_description):
28 guid = testbed_description.guid
29 del self._testbed_descriptions[guid]
31 def _testbed_module(self, testbed_id):
32 mod_name = 'nepi.testbeds.%s' % testbed_id
33 if not mod_name in sys.modules:
35 return sys.modules[mod_name]
37 def _testbed_provider(self, testbed_id, testbed_version):
38 key = "%s_%s" % (testbed_id, testbed_version)
39 if key not in self._testbed_providers:
40 testbed_module = self._testbed_module(testbed_id)
41 testbed_provider = testbed_module.create_provider(testbed_version)
42 self._testbed_providers[key] = testbed_provider
43 return self._testbed_providers[key]