From a11820b1d66fe40c5c2dc6c015d25c315a63e27b Mon Sep 17 00:00:00 2001 From: DavHau Date: Wed, 4 Dec 2024 12:41:49 +0700 Subject: [PATCH] vars: Improve logging for migration --- pkgs/clan-cli/clan_cli/vars/_types.py | 13 +++++++------ pkgs/clan-cli/clan_cli/vars/generate.py | 4 ++-- pkgs/clan-cli/tests/test_vars.py | 6 +++++- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/pkgs/clan-cli/clan_cli/vars/_types.py b/pkgs/clan-cli/clan_cli/vars/_types.py index e1095b93a..df22b0fc9 100644 --- a/pkgs/clan-cli/clan_cli/vars/_types.py +++ b/pkgs/clan-cli/clan_cli/vars/_types.py @@ -80,6 +80,7 @@ class StoreBase(ABC): generator: "Generator", var: "Var", value: bytes, + is_migration: bool = False, ) -> Path | None: if self.exists(generator, var.name): if self.is_secret_store: @@ -92,15 +93,15 @@ class StoreBase(ABC): old_val = None old_val_str = "" new_file = self._set(generator, var, value) + action_str = "Migrated" if is_migration else "Updated" if self.is_secret_store: - print(f"Updated secret var {generator.name}/{var.name}\n") + print(f"{action_str} secret var {generator.name}/{var.name}\n") else: if value != old_val: - print( - f"Updated var {generator.name}/{var.name}\n" - f" old: {old_val_str}\n" - f" new: {string_repr(value)}" - ) + msg = f"{action_str} var {generator.name}/{var.name}" + if not is_migration: + msg += f"\n old: {old_val_str}\n new: {string_repr(value)}" + print(msg) else: print( f"Var {generator.name}/{var.name} remains unchanged: {old_val_str}" diff --git a/pkgs/clan-cli/clan_cli/vars/generate.py b/pkgs/clan-cli/clan_cli/vars/generate.py index 9b6d6f55a..af6f0055e 100644 --- a/pkgs/clan-cli/clan_cli/vars/generate.py +++ b/pkgs/clan-cli/clan_cli/vars/generate.py @@ -315,10 +315,10 @@ def _migrate_file( if file.secret: old_value = machine.secret_facts_store.get(service_name, fact_name) - machine.secret_vars_store.set(generator, file, old_value) + machine.secret_vars_store.set(generator, file, old_value, is_migration=True) else: old_value = machine.public_facts_store.get(service_name, fact_name) - machine.public_vars_store.set(generator, file, old_value) + machine.public_vars_store.set(generator, file, old_value, is_migration=True) def _migrate_files( diff --git a/pkgs/clan-cli/tests/test_vars.py b/pkgs/clan-cli/tests/test_vars.py index 3c006af91..3559c932b 100644 --- a/pkgs/clan-cli/tests/test_vars.py +++ b/pkgs/clan-cli/tests/test_vars.py @@ -842,6 +842,7 @@ def test_migration( monkeypatch: pytest.MonkeyPatch, flake: ClanFlake, sops_setup: SopsSetup, + capture_output: CaptureOutput, ) -> None: config = flake.machines["my_machine"] config["nixpkgs"]["hostPlatform"] = "x86_64-linux" @@ -860,7 +861,10 @@ def test_migration( monkeypatch.chdir(flake.path) sops_setup.init() cli.run(["facts", "generate", "--flake", str(flake.path), "my_machine"]) - cli.run(["vars", "generate", "--flake", str(flake.path), "my_machine"]) + with capture_output as output: + cli.run(["vars", "generate", "--flake", str(flake.path), "my_machine"]) + assert "Migrated var my_generator/my_value" in output.out + assert "Migrated secret var my_generator/my_secret" in output.out in_repo_store = in_repo.FactStore( Machine(name="my_machine", flake=FlakeId(str(flake.path))) )