Keep reference to loaded extension, and refuse to load twice.
The Pillar extensions are now stored, by their name, in a dictionary.
This commit is contained in:
parent
a0cc76259e
commit
4cf779e040
@ -35,6 +35,8 @@ class PillarServer(Eve):
|
|||||||
kwargs.setdefault('validator', custom_field_validation.ValidateCustomFields)
|
kwargs.setdefault('validator', custom_field_validation.ValidateCustomFields)
|
||||||
super(PillarServer, self).__init__(settings=empty_settings, **kwargs)
|
super(PillarServer, self).__init__(settings=empty_settings, **kwargs)
|
||||||
|
|
||||||
|
self.pillar_extensions = {} # mapping from extension name to extension object.
|
||||||
|
|
||||||
self.app_root = os.path.abspath(app_root)
|
self.app_root = os.path.abspath(app_root)
|
||||||
self._load_flask_config()
|
self._load_flask_config()
|
||||||
self._config_logging()
|
self._config_logging()
|
||||||
@ -178,8 +180,14 @@ class PillarServer(Eve):
|
|||||||
def load_extension(self, pillar_extension, url_prefix):
|
def load_extension(self, pillar_extension, url_prefix):
|
||||||
from .extension import PillarExtension
|
from .extension import PillarExtension
|
||||||
|
|
||||||
self.log.info('Initialising extension %r', pillar_extension)
|
assert isinstance(pillar_extension, PillarExtension), \
|
||||||
assert isinstance(pillar_extension, PillarExtension)
|
'Extension has wrong type %r' % type(pillar_extension)
|
||||||
|
self.log.info('Loading extension %s', pillar_extension.name)
|
||||||
|
|
||||||
|
# Remember this extension, and disallow duplicates.
|
||||||
|
if pillar_extension.name in self.pillar_extensions:
|
||||||
|
raise ValueError('Extension with name %s already loaded', pillar_extension.name)
|
||||||
|
self.pillar_extensions[pillar_extension.name] = pillar_extension
|
||||||
|
|
||||||
# Load extension Flask configuration
|
# Load extension Flask configuration
|
||||||
for key, value in pillar_extension.flask_config():
|
for key, value in pillar_extension.flask_config():
|
||||||
|
Loading…
x
Reference in New Issue
Block a user