daemon/gui/grpc: added support to retrieve rendered config service files, added support for grpc to access this, and update gui to leverage this call to provide a rendered view of files based on the current scenario, also allows editing the rendered output to use as the input when running the scenario
This commit is contained in:
parent
443c0e708f
commit
bd6f789cef
8 changed files with 171 additions and 46 deletions
|
@ -331,6 +331,33 @@ class ConfigService(abc.ABC):
|
|||
templates[file] = template
|
||||
return templates
|
||||
|
||||
def get_rendered_templates(self) -> Dict[str, str]:
|
||||
templates = {}
|
||||
data = self.data()
|
||||
for file in sorted(self.files):
|
||||
rendered = self._get_rendered_template(file, data)
|
||||
templates[file] = rendered
|
||||
return templates
|
||||
|
||||
def _get_rendered_template(self, file: str, data: Dict[str, Any]) -> str:
|
||||
file_path = Path(file)
|
||||
template_path = get_template_path(file_path)
|
||||
if file in self.custom_templates:
|
||||
text = self.custom_templates[file]
|
||||
rendered = self.render_text(text, data)
|
||||
elif self.templates.has_template(template_path):
|
||||
rendered = self.render_template(template_path, data)
|
||||
else:
|
||||
try:
|
||||
text = self.get_text_template(file)
|
||||
except Exception as e:
|
||||
raise ConfigServiceTemplateError(
|
||||
f"node({self.node.name}) service({self.name}) file({file}) "
|
||||
f"failure getting template: {e}"
|
||||
)
|
||||
rendered = self.render_text(text, data)
|
||||
return rendered
|
||||
|
||||
def create_files(self) -> None:
|
||||
"""
|
||||
Creates service files inside associated node.
|
||||
|
@ -342,22 +369,24 @@ class ConfigService(abc.ABC):
|
|||
logger.debug(
|
||||
"node(%s) service(%s) template(%s)", self.node.name, self.name, file
|
||||
)
|
||||
rendered = self._get_rendered_template(file, data)
|
||||
# file_path = Path(file)
|
||||
# template_path = get_template_path(file_path)
|
||||
# if file in self.custom_templates:
|
||||
# text = self.custom_templates[file]
|
||||
# rendered = self.render_text(text, data)
|
||||
# elif self.templates.has_template(template_path):
|
||||
# rendered = self.render_template(template_path, data)
|
||||
# else:
|
||||
# try:
|
||||
# text = self.get_text_template(file)
|
||||
# except Exception as e:
|
||||
# raise ConfigServiceTemplateError(
|
||||
# f"node({self.node.name}) service({self.name}) file({file}) "
|
||||
# f"failure getting template: {e}"
|
||||
# )
|
||||
# rendered = self.render_text(text, data)
|
||||
file_path = Path(file)
|
||||
template_path = get_template_path(file_path)
|
||||
if file in self.custom_templates:
|
||||
text = self.custom_templates[file]
|
||||
rendered = self.render_text(text, data)
|
||||
elif self.templates.has_template(template_path):
|
||||
rendered = self.render_template(template_path, data)
|
||||
else:
|
||||
try:
|
||||
text = self.get_text_template(file)
|
||||
except Exception as e:
|
||||
raise ConfigServiceTemplateError(
|
||||
f"node({self.node.name}) service({self.name}) file({file}) "
|
||||
f"failure getting template: {e}"
|
||||
)
|
||||
rendered = self.render_text(text, data)
|
||||
self.node.create_file(file_path, rendered)
|
||||
|
||||
def run_startup(self, wait: bool) -> None:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue