diff --git a/zaza/utilities/deployment_env.py b/zaza/utilities/deployment_env.py index 5ea73e6e..96d75efa 100644 --- a/zaza/utilities/deployment_env.py +++ b/zaza/utilities/deployment_env.py @@ -85,7 +85,7 @@ def parse_option_list_string(option_list, delimiter=None): return settings -def get_overlay_ppas(model_alias='default_alias'): +def get_overlay_ppas(model_alias='default_alias', application=None): """Get overlay_ppas from global_config. In the config file for the tests, the tests_options.overlay_ppa option @@ -97,17 +97,25 @@ def get_overlay_ppas(model_alias='default_alias'): :param model_alias: Name of model alias, defaults to 'default_alias'. :type model_alias: Option[str] + :param application: Name of application to retrieve config for. + :type application: Option[str] :returns: List of overlay PPAs. :rtype: Option[List[Any]] """ config = zaza.global_options.get_options() + config_overlay_ppas = None try: - return config[model_alias].overlay_ppas + config_overlay_ppas = config[model_alias].overlay_ppas except KeyError: try: - return config.overlay_ppas + config_overlay_ppas = config.overlay_ppas except KeyError: pass + if config_overlay_ppas and application: + return [overlay_ppa + for overlay_ppa in config_overlay_ppas + if (isinstance(overlay_ppa, dict) and + application in overlay_ppa)] or None return None @@ -144,6 +152,26 @@ def _parse_overlay_ppa_v2(overlay_ppa): 'key': overlay_ppa['key']} +def _parse_overlay_ppa_v3(overlay_ppa): + """Parse per application overlay_ppa config. + + Example YAML excerpt: + overlay_ppas: + application_name: + - ppa:ubuntu-security-proposed/ppa + other_application_name: + - source: "deb https://user:pass@private-ppa.launchpad" + key: | + -----BEGIN PGP PUBLIC KEY BLOCK----- + .... + -----END PGP PUBLIC KEY BLOCK----- + :param overlay_ppa: Element of overlay_ppas configuration. + :type overlay_ppa: Dict[str,List[Any]] + :returns + """ + # {'application': ['plain', {'source': 'fakesource', 'key': 'fakekey'}]} + + def parse_overlay_ppa(overlay_ppa): """Parse multiple versions of overlay_ppas elements.