updates to support dynamic loading of emane models from a custom emane directory

This commit is contained in:
Blake J. Harnden 2018-02-05 11:22:01 -08:00
parent 45e82f05b2
commit c4a61b269b
7 changed files with 26 additions and 95 deletions

View file

@ -93,7 +93,16 @@ class EmaneManager(ConfigurableManager):
self._modelclsmap = {
self.emane_config.name: self.emane_config
}
self.load_models(_PATH)
# load provided models
self.load_models(EMANE_MODELS)
# load custom models
custom_models_path = session.config.get("emane_models_dir")
if custom_models_path:
emane_models = utils.load_classes(custom_models_path, EmaneModel)
self.load_models(emane_models)
def logversion(self):
"""
@ -183,25 +192,10 @@ class EmaneManager(ConfigurableManager):
return rc
def loadmodels(self):
def load_models(self, emane_models):
"""
load EMANE models and make them available.
"""
for emane_model in EMANE_MODELS:
logger.info("loading emane model: (%s) %s - %s",
emane_model, emane_model.name, RegisterTlvs(emane_model.config_type))
self._modelclsmap[emane_model.name] = emane_model
self.session.add_config_object(emane_model.name, emane_model.config_type,
emane_model.configure_emane)
def load_models(self, path):
"""
Loads EMANE models into the manager for usage within CORE.
:param str path: path to retrieve model from
:return: nothing
"""
emane_models = utils.load_classes(path, EmaneModel)
for emane_model in emane_models:
logger.info("loading emane model: (%s) %s - %s",
emane_model, emane_model.name, RegisterTlvs(emane_model.config_type))