ext: Switch to validate_extension(extension, config)

This commit is contained in:
Thomas Adamcik 2013-04-15 23:03:40 +02:00
parent ec939d707c
commit 992b293174
2 changed files with 30 additions and 38 deletions

View File

@ -56,27 +56,24 @@ def main():
logging_config, options.verbosity_level, options.save_debug_log)
installed_extensions = ext.load_extensions()
all_extensions = ext.validate_extensions(installed_extensions)
# TODO: wrap config in RO proxy.
config, config_errors = get_config(
config_files, all_extensions, config_overrides)
config_files, installed_extensions, config_overrides)
# Filter out disabled extensions and remove any config errors for them.
# TODO: extension.should_install(config)
for extension in all_extensions:
if config[extension.ext_name]['enabled']:
for extension in installed_extensions:
if ext.validate_extension(extension, config):
enabled_extensions.append(extension)
elif extension.ext_name in config_errors:
del config_errors[extension.ext_name]
log_extension_info(all_extensions, enabled_extensions)
log_extension_info(installed_extensions, enabled_extensions)
check_config_errors(config_errors)
log.setup_log_levels(config)
create_file_structures()
check_old_locations()
ext.register_gstreamer_elements(enabled_extensions)
# Anything that wants to exit after this point must use
@ -99,6 +96,7 @@ def main():
process.stop_remaining_actors()
# TODO: move to config
def get_config(files, extensions, overrides):
# Helper to get configs, as our config system should not need to know about
# extensions.

View File

@ -112,45 +112,39 @@ def load_extensions():
return installed_extensions
def validate_extensions(installed_extensions):
def validate_extension(extension, config):
"""Verify extension's dependencies and environment.
:param installed_extensions: list of installed extensions
:returns: list of valid extensions
:param extensions: and extension to check
:param config: config to check enabled status in
:returns: if extensions should be run
"""
valid_extensions = []
logger.debug('Validating extension: %s', extension.ext_name)
for extension in installed_extensions:
logger.debug('Validating extension: %s', extension.ext_name)
if extension.ext_name != extension.entry_point.name:
logger.warning(
'Disabled extension %(ep)s: entry point name (%(ep)s) '
'does not match extension name (%(ext)s)',
{'ep': extension.entry_point.name, 'ext': extension.ext_name})
return False
if extension.ext_name != extension.entry_point.name:
logger.warning(
'Disabled extension %(ep)s: entry point name (%(ep)s) '
'does not match extension name (%(ext)s)',
{'ep': extension.entry_point.name, 'ext': extension.ext_name})
continue
try:
extension.entry_point.require()
except pkg_resources.DistributionNotFound as ex:
logger.info(
'Disabled extension %s: Dependency %s not found',
extension.ext_name, ex)
return False
try:
extension.entry_point.require()
except pkg_resources.DistributionNotFound as ex:
logger.info(
'Disabled extension %s: Dependency %s not found',
extension.ext_name, ex)
continue
try:
extension.validate_environment()
except exceptions.ExtensionError as ex:
logger.info(
'Disabled extension %s: %s', extension.ext_name, ex.message)
return False
try:
extension.validate_environment()
except exceptions.ExtensionError as ex:
logger.info(
'Disabled extension %s: %s', extension.ext_name, ex.message)
continue
valid_extensions.append(extension)
names = (e.ext_name for e in valid_extensions)
logger.debug('Valid extensions: %s', ', '.join(names))
return valid_extensions
return config[extension.ext_name]['enabled']
def register_gstreamer_elements(enabled_extensions):