def compile_file(self, file_path, compile_path, ext_vars, **kwargs): """ Render templates in file_path/templates and write to compile_path. file_path must be a directory containing helm chart. kwargs: reveal: default False, set to reveal refs on compile target_name: default None, set to current target being compiled """ reveal = kwargs.get("reveal", False) target_name = kwargs.get("target_name", None) if self.file_path is not None: raise CompileError( "The same helm input was compiled with different input paths, which will give a wrong result." + f" The input paths found are: {self.file_path} and {file_path}." + f" The search paths were: {self.search_paths}." ) self.file_path = file_path temp_dir = tempfile.mkdtemp() os.makedirs(os.path.dirname(compile_path), exist_ok=True) # save the template output to temp dir first error_message = self.render_chart( chart_dir=file_path, output_path=temp_dir, helm_path=self.helm_path, helm_params=self.helm_params, helm_values_file=self.helm_values_file, helm_values_files=self.helm_values_files, ) if error_message: raise HelmTemplateError(error_message) walk_root_files = os.walk(temp_dir) for current_dir, _, files in walk_root_files: for file in files: # go through all the template files rel_dir = os.path.relpath(current_dir, temp_dir) rel_file_name = os.path.join(rel_dir, file) full_file_name = os.path.join(current_dir, file) with open(full_file_name, "r") as f: item_path = os.path.join(compile_path, rel_file_name) os.makedirs(os.path.dirname(item_path), exist_ok=True) with CompiledFile( item_path, self.ref_controller, mode="w", reveal=reveal, target_name=target_name, ) as fp: yml_obj = list(yaml.safe_load_all(f)) fp.write_yaml(yml_obj) logger.debug("Wrote file %s to %s", full_file_name, item_path) self.helm_values_file = None # reset this self.helm_params = {} self.helm_values_files = []
def compile_file(self, file_path, compile_path, ext_vars, **kwargs): """ Render templates in file_path/templates and write to compile_path. file_path must be a directory containing helm chart. kwargs: reveal: default False, set to reveal refs on compile target_name: default None, set to current target being compiled """ if not self.lib: raise HelmBindingUnavailableError( "Helm binding is not supported for {}." "\nOr the binding does not exist.".format(platform.system())) reveal = kwargs.get("reveal", False) target_name = kwargs.get("target_name", None) temp_dir = tempfile.mkdtemp() os.makedirs(os.path.dirname(compile_path), exist_ok=True) # save the template output to temp dir first error_message = self.render_chart( chart_dir=file_path, output_path=temp_dir, helm_values_file=self.helm_values_file, helm_values_files=self.helm_values_files, **self.helm_params, ) if error_message: raise HelmTemplateError(error_message) walk_root_files = os.walk(temp_dir) for current_dir, _, files in walk_root_files: for file in files: # go through all the template files rel_dir = os.path.relpath(current_dir, temp_dir) rel_file_name = os.path.join(rel_dir, file) full_file_name = os.path.join(current_dir, file) with open(full_file_name, "r") as f: item_path = os.path.join(compile_path, rel_file_name) os.makedirs(os.path.dirname(item_path), exist_ok=True) with CompiledFile(item_path, self.ref_controller, mode="w", reveal=reveal, target_name=target_name) as fp: yml_obj = list(yaml.safe_load_all(f)) fp.write_yaml(yml_obj) logger.debug("Wrote file %s to %s", full_file_name, item_path) self.helm_values_file = None # reset this self.helm_params = {} self.helm_values_files = []
def compile_file(self, file_path, compile_path, ext_vars, **kwargs): """ Render templates in file_path/templates and write to compile_path. file_path must be a directory containing helm chart. kwargs: reveal: default False, set to reveal refs on compile target_name: default None, set to current target being compiled """ reveal = kwargs.get('reveal', False) target_name = kwargs.get('target_name', None) temp_dir = tempfile.mkdtemp() os.makedirs(os.path.dirname(compile_path), exist_ok=True) # save the template output to temp dir first error_message = render_chart(chart_dir=file_path, output_path=temp_dir, helm_values_file=self.helm_values_file, **self.helm_params) if error_message: raise HelmTemplateError(error_message) walk_root_files = os.walk(temp_dir) for root, _, files in walk_root_files: for file in files: # go through all the template files with open(os.path.join(root, file), 'r') as f: item_path = os.path.join(compile_path, file) with CompiledFile(item_path, self.ref_controller, mode="w", reveal=reveal, target_name=target_name) as fp: fp.write(f.read()) logger.debug("Wrote file %s to %s", os.path.join(file_path, file), item_path) self.helm_values_file = None # reset this self.helm_params = {}