From 0a568be528a30ef3dcde01cecd54806101f27e3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Wed, 2 Oct 2024 10:59:41 +0200 Subject: [PATCH] pass in flakeid to vm_state_dir --- pkgs/clan-cli/clan_cli/dirs.py | 6 ++++-- pkgs/clan-cli/clan_cli/facts/public_modules/vm.py | 2 +- pkgs/clan-cli/clan_cli/facts/secret_modules/vm.py | 2 +- pkgs/clan-cli/clan_cli/vars/public_modules/vm.py | 2 +- pkgs/clan-cli/clan_cli/vars/secret_modules/vm.py | 2 +- pkgs/clan-cli/tests/test_dirs.py | 9 +++++---- .../clan_vm_manager/components/vmobj.py | 11 +++-------- 7 files changed, 16 insertions(+), 18 deletions(-) diff --git a/pkgs/clan-cli/clan_cli/dirs.py b/pkgs/clan-cli/clan_cli/dirs.py index 8dc2b16ff..0786376d9 100644 --- a/pkgs/clan-cli/clan_cli/dirs.py +++ b/pkgs/clan-cli/clan_cli/dirs.py @@ -4,6 +4,8 @@ import sys import urllib from pathlib import Path +from clan_cli.clan_uri import FlakeId + from .errors import ClanError log = logging.getLogger(__name__) @@ -100,8 +102,8 @@ def user_history_file() -> Path: return user_config_dir() / "clan" / "history" -def vm_state_dir(flake_url: str, vm_name: str) -> Path: - clan_key = clan_key_safe(flake_url) +def vm_state_dir(flake_url: FlakeId, vm_name: str) -> Path: + clan_key = clan_key_safe(str(flake_url)) return user_data_dir() / "clan" / "vmstate" / clan_key / vm_name diff --git a/pkgs/clan-cli/clan_cli/facts/public_modules/vm.py b/pkgs/clan-cli/clan_cli/facts/public_modules/vm.py index 631b4d6fb..adfe75370 100644 --- a/pkgs/clan-cli/clan_cli/facts/public_modules/vm.py +++ b/pkgs/clan-cli/clan_cli/facts/public_modules/vm.py @@ -14,7 +14,7 @@ class FactStore(FactStoreBase): def __init__(self, machine: Machine) -> None: self.machine = machine self.works_remotely = False - self.dir = vm_state_dir(str(machine.flake), machine.name) / "facts" + self.dir = vm_state_dir(machine.flake, machine.name) / "facts" log.debug(f"FactStore initialized with dir {self.dir}") def exists(self, service: str, name: str) -> bool: diff --git a/pkgs/clan-cli/clan_cli/facts/secret_modules/vm.py b/pkgs/clan-cli/clan_cli/facts/secret_modules/vm.py index 0acf09c34..befcdf766 100644 --- a/pkgs/clan-cli/clan_cli/facts/secret_modules/vm.py +++ b/pkgs/clan-cli/clan_cli/facts/secret_modules/vm.py @@ -10,7 +10,7 @@ from . import SecretStoreBase class SecretStore(SecretStoreBase): def __init__(self, machine: Machine) -> None: self.machine = machine - self.dir = vm_state_dir(str(machine.flake), machine.name) / "secrets" + self.dir = vm_state_dir(machine.flake, machine.name) / "secrets" self.dir.mkdir(parents=True, exist_ok=True) def set( diff --git a/pkgs/clan-cli/clan_cli/vars/public_modules/vm.py b/pkgs/clan-cli/clan_cli/vars/public_modules/vm.py index 65860f212..e54bb1633 100644 --- a/pkgs/clan-cli/clan_cli/vars/public_modules/vm.py +++ b/pkgs/clan-cli/clan_cli/vars/public_modules/vm.py @@ -14,7 +14,7 @@ class FactStore(FactStoreBase): def __init__(self, machine: Machine) -> None: self.machine = machine self.works_remotely = False - self.dir = vm_state_dir(str(machine.flake), machine.name) / "facts" + self.dir = vm_state_dir(machine.flake, machine.name) / "facts" log.debug(f"FactStore initialized with dir {self.dir}") @property diff --git a/pkgs/clan-cli/clan_cli/vars/secret_modules/vm.py b/pkgs/clan-cli/clan_cli/vars/secret_modules/vm.py index e8e52f777..2aef6770b 100644 --- a/pkgs/clan-cli/clan_cli/vars/secret_modules/vm.py +++ b/pkgs/clan-cli/clan_cli/vars/secret_modules/vm.py @@ -10,7 +10,7 @@ from . import SecretStoreBase class SecretStore(SecretStoreBase): def __init__(self, machine: Machine) -> None: self.machine = machine - self.dir = vm_state_dir(str(machine.flake), machine.name) / "secrets" + self.dir = vm_state_dir(machine.flake, machine.name) / "secrets" self.dir.mkdir(parents=True, exist_ok=True) @property diff --git a/pkgs/clan-cli/tests/test_dirs.py b/pkgs/clan-cli/tests/test_dirs.py index ac2626834..bc1e48e64 100644 --- a/pkgs/clan-cli/tests/test_dirs.py +++ b/pkgs/clan-cli/tests/test_dirs.py @@ -16,6 +16,7 @@ # (subdir / ".clan-flake").touch() # assert _get_clan_flake_toplevel() == subdir +from clan_cli.clan_uri import FlakeId from clan_cli.dirs import clan_key_safe, vm_state_dir @@ -24,12 +25,12 @@ def test_clan_key_safe() -> None: def test_vm_state_dir_identity() -> None: - dir1 = vm_state_dir("https://some.clan", "vm1") - dir2 = vm_state_dir("https://some.clan", "vm1") + dir1 = vm_state_dir(FlakeId("https://some.clan"), "vm1") + dir2 = vm_state_dir(FlakeId("https://some.clan"), "vm1") assert str(dir1) == str(dir2) def test_vm_state_dir_no_collision() -> None: - dir1 = vm_state_dir("/foo/bar", "vm1") - dir2 = vm_state_dir("https://some.clan", "vm1") + dir1 = vm_state_dir(FlakeId("/foo/bar"), "vm1") + dir2 = vm_state_dir(FlakeId("https://some.clan"), "vm1") assert str(dir1) != str(dir2) diff --git a/pkgs/clan-vm-manager/clan_vm_manager/components/vmobj.py b/pkgs/clan-vm-manager/clan_vm_manager/components/vmobj.py index ef58b2419..d87e1c867 100644 --- a/pkgs/clan-vm-manager/clan_vm_manager/components/vmobj.py +++ b/pkgs/clan-vm-manager/clan_vm_manager/components/vmobj.py @@ -158,14 +158,9 @@ class VMObject(GObject.Object): ) assert self.machine is not None - if self.machine.flake.is_local(): - state_dir = vm_state_dir( - flake_url=str(self.machine.flake.path), vm_name=self.machine.name - ) - else: - state_dir = vm_state_dir( - flake_url=self.machine.flake.url, vm_name=self.machine.name - ) + state_dir = vm_state_dir( + flake_url=self.machine.flake, vm_name=self.machine.name + ) self.qmp_wrap = QMPWrapper(state_dir) assert self.machine is not None yield self.machine