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

View File

@ -112,45 +112,39 @@ def load_extensions():
return installed_extensions return installed_extensions
def validate_extensions(installed_extensions): def validate_extension(extension, config):
"""Verify extension's dependencies and environment. """Verify extension's dependencies and environment.
:param installed_extensions: list of installed extensions :param extensions: and extension to check
:returns: list of valid extensions :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: if extension.ext_name != extension.entry_point.name:
logger.debug('Validating extension: %s', extension.ext_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: try:
logger.warning( extension.entry_point.require()
'Disabled extension %(ep)s: entry point name (%(ep)s) ' except pkg_resources.DistributionNotFound as ex:
'does not match extension name (%(ext)s)', logger.info(
{'ep': extension.entry_point.name, 'ext': extension.ext_name}) 'Disabled extension %s: Dependency %s not found',
continue extension.ext_name, ex)
return False
try: try:
extension.entry_point.require() extension.validate_environment()
except pkg_resources.DistributionNotFound as ex: except exceptions.ExtensionError as ex:
logger.info( logger.info(
'Disabled extension %s: Dependency %s not found', 'Disabled extension %s: %s', extension.ext_name, ex.message)
extension.ext_name, ex) return False
continue
try: return config[extension.ext_name]['enabled']
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
def register_gstreamer_elements(enabled_extensions): def register_gstreamer_elements(enabled_extensions):