def test_process_substitutions(dct, subst, expected): if isinstance(expected, Exception): with pytest.raises(type(expected)): process_substitutions(dct, subst) else: process_substitutions(dct, subst) assert dct == expected
def cli_build_image(args): if args.plugin_files: args.plugin_files = [os.path.abspath(f) for f in args.plugin_files] if args.source__provider == 'json': with open(args.json_path) as json_fp: common_kwargs = json.load(json_fp) if args.substitute: process_substitutions(common_kwargs, args.substitute) else: common_kwargs = construct_kwargs(**vars(args)) response = BuildResults() if args.method == "hostdocker": response = build_image_using_hosts_docker(args.build_image, **common_kwargs) elif args.method == "privileged": response = build_image_in_privileged_container(args.build_image, **common_kwargs) elif args.method == 'here': build_result = build_image_here(plugin_files=args.plugin_files, **common_kwargs) if build_result.is_failed(): response.return_code = -1 else: response.return_code = 0 if response.return_code != 0: logger.error("build failed") sys.exit(response.return_code)
def substitute_configuration(self, build_json): """ replace values of provided build json according to self.substitutions path to values can be specified in two ways: * single key value for root arguments, e.g. 'image' * plugin configuration: you following convention: plugin_type.plugin_name.argument_name hence prebuild_plugins.koji.target :param build_json: dict, build json :return: dict, substituted build json """ process_substitutions(build_json, self.substitutions) return build_json