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
26 def remove_testbed_description(self, testbed_description):
27 guid = testbed_description.guid
28 del self._testbed_descriptions[guid]
30 def _testbed_module(self, testbed_id):
31 mod_name = 'nepi.testbeds.%s' % testbed_id
32 if not mod_name in sys.modules:
34 return sys.modules[mod_name]
36 def _testbed_provider(self, testbed_id, testbed_version):
37 key = "%s_%s" % (testbed_id, testbed_version)
38 if key not in self._testbed_providers:
39 testbed_module = self._testbed_module(testbed_id)
40 testbed_provider = testbed_module.create_provider(testbed_version)
41 self._testbed_providers[key] = testbed_provider
42 return self._testbed_providers[key]