ext: Switch to validate_extension(extension, config)
This commit is contained in:
parent
ec939d707c
commit
992b293174
@ -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.
|
||||
|
||||
@ -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):
|
||||
|
||||
Loading…
Reference in New Issue
Block a user