def __init__(self, testbed_id, testbed_version): super(TestbedController, self).__init__(testbed_id, testbed_version) self._status = TS.STATUS_ZERO # testbed attributes for validation self._attributes = None # element factories for validation self._factories = dict() # experiment construction instructions self._create = dict() self._create_set = dict() self._factory_set = dict() self._connect = dict() self._cross_connect = dict() self._add_trace = dict() self._add_address = dict() self._add_route = dict() self._configure = dict() # log of set operations self._setlog = dict() # last set operations self._set = dict() # testbed element instances self._elements = dict() self._metadata = Metadata(self._testbed_id) if self._metadata.testbed_version != testbed_version: raise RuntimeError("Bad testbed version on testbed %s. Asked for %s, got %s" % \ (testbed_id, testbed_version, self._metadata.testbed_version)) for factory in self._metadata.build_factories(): self._factories[factory.factory_id] = factory self._attributes = self._metadata.testbed_attributes() self._root_directory = None # Logging self._logger = logging.getLogger("nepi.core.testbed_impl")