vars: health check also for API not just cli
This commit is contained in:
@@ -457,12 +457,40 @@ def _get_closure(
|
|||||||
return result_closure
|
return result_closure
|
||||||
|
|
||||||
|
|
||||||
|
def _ensure_healthy(
|
||||||
|
machine: "Machine",
|
||||||
|
generators: list[Generator] | None = None,
|
||||||
|
) -> None:
|
||||||
|
"""
|
||||||
|
Run health checks on the provided generators.
|
||||||
|
Fails if any of the generators' health checks fail.
|
||||||
|
"""
|
||||||
|
if generators is None:
|
||||||
|
generators = Generator.get_machine_generators(machine.name, machine.flake)
|
||||||
|
|
||||||
|
pub_healtcheck_msg = machine.public_vars_store.health_check(
|
||||||
|
machine.name, generators
|
||||||
|
)
|
||||||
|
sec_healtcheck_msg = machine.secret_vars_store.health_check(
|
||||||
|
machine.name, generators
|
||||||
|
)
|
||||||
|
|
||||||
|
if pub_healtcheck_msg or sec_healtcheck_msg:
|
||||||
|
msg = f"Health check failed for machine {machine.name}:\n"
|
||||||
|
if pub_healtcheck_msg:
|
||||||
|
msg += f"Public vars store: {pub_healtcheck_msg}\n"
|
||||||
|
if sec_healtcheck_msg:
|
||||||
|
msg += f"Secret vars store: {sec_healtcheck_msg}"
|
||||||
|
raise ClanError(msg)
|
||||||
|
|
||||||
|
|
||||||
def _generate_vars_for_machine(
|
def _generate_vars_for_machine(
|
||||||
machine: "Machine",
|
machine: "Machine",
|
||||||
generators: list[Generator],
|
generators: list[Generator],
|
||||||
all_prompt_values: dict[str, dict[str, str]],
|
all_prompt_values: dict[str, dict[str, str]],
|
||||||
no_sandbox: bool = False,
|
no_sandbox: bool = False,
|
||||||
) -> bool:
|
) -> bool:
|
||||||
|
_ensure_healthy(machine=machine, generators=generators)
|
||||||
for generator in generators:
|
for generator in generators:
|
||||||
if check_can_migrate(machine, generator):
|
if check_can_migrate(machine, generator):
|
||||||
migrate_files(machine, generator)
|
migrate_files(machine, generator)
|
||||||
@@ -553,29 +581,6 @@ def create_machine_vars_interactive(
|
|||||||
regenerate: bool,
|
regenerate: bool,
|
||||||
no_sandbox: bool = False,
|
no_sandbox: bool = False,
|
||||||
) -> bool:
|
) -> bool:
|
||||||
_generator = None
|
|
||||||
if generator_name:
|
|
||||||
generators = Generator.get_machine_generators(machine.name, machine.flake)
|
|
||||||
for generator in generators:
|
|
||||||
if generator.name == generator_name:
|
|
||||||
_generator = generator
|
|
||||||
break
|
|
||||||
|
|
||||||
pub_healtcheck_msg = machine.public_vars_store.health_check(
|
|
||||||
machine.name, [_generator] if _generator else None
|
|
||||||
)
|
|
||||||
sec_healtcheck_msg = machine.secret_vars_store.health_check(
|
|
||||||
machine.name, [_generator] if _generator else None
|
|
||||||
)
|
|
||||||
|
|
||||||
if pub_healtcheck_msg or sec_healtcheck_msg:
|
|
||||||
msg = f"Health check failed for machine {machine.name}:\n"
|
|
||||||
if pub_healtcheck_msg:
|
|
||||||
msg += f"Public vars store: {pub_healtcheck_msg}\n"
|
|
||||||
if sec_healtcheck_msg:
|
|
||||||
msg += f"Secret vars store: {sec_healtcheck_msg}"
|
|
||||||
raise ClanError(msg)
|
|
||||||
|
|
||||||
generators = _get_closure(machine, generator_name, regenerate)
|
generators = _get_closure(machine, generator_name, regenerate)
|
||||||
if len(generators) == 0:
|
if len(generators) == 0:
|
||||||
return False
|
return False
|
||||||
|
|||||||
Reference in New Issue
Block a user