clan_cli machines: use Flake instead of FlakeId
This commit is contained in:
@@ -121,7 +121,6 @@ def test_all_dataclasses() -> None:
|
||||
"api/__init__.py",
|
||||
"cmd.py", # We don't want the UI to have access to the cmd module anyway
|
||||
"async_run.py", # We don't want the UI to have access to the async_run module anyway
|
||||
"flake.py", # Not compatible yet with the UI, unclear semantics, maybe it's just an internal thing
|
||||
]
|
||||
|
||||
cli_path = Path("clan_cli").resolve()
|
||||
|
||||
@@ -5,7 +5,7 @@ from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
import pytest
|
||||
from clan_cli.clan_uri import FlakeId
|
||||
from clan_cli.flake import Flake
|
||||
from clan_cli.locked_open import locked_open
|
||||
from clan_cli.templates import get_clan_nix_attrset
|
||||
from fixtures_flakes import FlakeForTest
|
||||
@@ -26,7 +26,7 @@ def nix_attr_tester(
|
||||
test_number: int,
|
||||
) -> None:
|
||||
write_clan_attr(injected, test_flake)
|
||||
nix_attrset = get_clan_nix_attrset(FlakeId(str(test_flake.path)))
|
||||
nix_attrset = get_clan_nix_attrset(Flake(str(test_flake.path)))
|
||||
|
||||
assert json.dumps(nix_attrset, indent=2) == json.dumps(expected, indent=2)
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from pathlib import Path
|
||||
from tempfile import TemporaryDirectory
|
||||
|
||||
from clan_cli.clan_uri import ClanURI
|
||||
|
||||
@@ -15,26 +16,28 @@ def test_get_url() -> None:
|
||||
assert uri.get_url() == "/home/user/Downloads"
|
||||
|
||||
uri = ClanURI.from_str("clan://file:///home/user/Downloads")
|
||||
assert uri.get_url() == "/home/user/Downloads"
|
||||
assert uri.get_url() == "file:///home/user/Downloads"
|
||||
|
||||
|
||||
def test_firefox_strip_uri() -> None:
|
||||
uri = ClanURI.from_str("clan://https//git.clan.lol/clan/democlan")
|
||||
assert uri.get_url() == "https://git.clan.lol/clan/democlan"
|
||||
uri = ClanURI.from_str("clan://git+https//git.clan.lol/clan/democlan.git")
|
||||
assert uri.get_url() == "git+https://git.clan.lol/clan/democlan.git"
|
||||
|
||||
|
||||
def test_local_uri() -> None:
|
||||
# Create a ClanURI object from a local URI
|
||||
uri = ClanURI.from_str("clan://file:///home/user/Downloads")
|
||||
assert uri.flake.path == Path("/home/user/Downloads")
|
||||
with TemporaryDirectory(prefix="clan_test") as tempdir:
|
||||
flake_nix = Path(tempdir) / "flake.nix"
|
||||
flake_nix.write_text("outputs = _: {}")
|
||||
|
||||
# Create a ClanURI object from a local URI
|
||||
uri = ClanURI.from_str(f"clan://file://{tempdir}")
|
||||
assert uri.flake.path == Path(tempdir)
|
||||
|
||||
|
||||
def test_is_remote() -> None:
|
||||
# Create a ClanURI object from a remote URI
|
||||
uri = ClanURI.from_str("clan://https://example.com")
|
||||
assert uri.flake.url == "https://example.com"
|
||||
assert uri.flake.identifier == "https://example.com"
|
||||
|
||||
|
||||
def test_direct_local_path() -> None:
|
||||
@@ -54,35 +57,35 @@ def test_remote_with_clanparams() -> None:
|
||||
uri = ClanURI.from_str("clan://https://example.com")
|
||||
|
||||
assert uri.machine_name == "defaultVM"
|
||||
assert uri.flake.url == "https://example.com"
|
||||
assert uri.flake.identifier == "https://example.com"
|
||||
|
||||
|
||||
def test_from_str_remote() -> None:
|
||||
uri = ClanURI.from_str(url="https://example.com", machine_name="myVM")
|
||||
assert uri.get_url() == "https://example.com"
|
||||
assert uri.machine_name == "myVM"
|
||||
assert uri.flake.url == "https://example.com"
|
||||
assert uri.flake.identifier == "https://example.com"
|
||||
|
||||
|
||||
def test_from_str_local() -> None:
|
||||
uri = ClanURI.from_str(url="~/Projects/democlan", machine_name="myVM")
|
||||
assert uri.get_url().endswith("/Projects/democlan")
|
||||
assert uri.machine_name == "myVM"
|
||||
assert uri.flake.is_local()
|
||||
assert str(uri.flake).endswith("/Projects/democlan") # type: ignore
|
||||
with TemporaryDirectory(prefix="clan_test") as tempdir:
|
||||
flake_nix = Path(tempdir) / "flake.nix"
|
||||
flake_nix.write_text("outputs = _: {}")
|
||||
|
||||
uri = ClanURI.from_str(url=tempdir, machine_name="myVM")
|
||||
assert uri.get_url().endswith(tempdir)
|
||||
assert uri.machine_name == "myVM"
|
||||
assert uri.flake.is_local
|
||||
assert str(uri.flake).endswith(tempdir) # type: ignore
|
||||
|
||||
|
||||
def test_from_str_local_no_machine() -> None:
|
||||
uri = ClanURI.from_str("~/Projects/democlan")
|
||||
assert uri.get_url().endswith("/Projects/democlan")
|
||||
assert uri.machine_name == "defaultVM"
|
||||
assert uri.flake.is_local()
|
||||
assert str(uri.flake).endswith("/Projects/democlan") # type: ignore
|
||||
with TemporaryDirectory(prefix="clan_test") as tempdir:
|
||||
flake_nix = Path(tempdir) / "flake.nix"
|
||||
flake_nix.write_text("outputs = _: {}")
|
||||
|
||||
|
||||
def test_from_str_local_no_machine2() -> None:
|
||||
uri = ClanURI.from_str("~/Projects/democlan#syncthing-peer1")
|
||||
assert uri.get_url().endswith("/Projects/democlan")
|
||||
assert uri.machine_name == "syncthing-peer1"
|
||||
assert uri.flake.is_local()
|
||||
assert str(uri.flake).endswith("/Projects/democlan") # type: ignore
|
||||
uri = ClanURI.from_str(tempdir)
|
||||
assert uri.get_url().endswith(tempdir)
|
||||
assert uri.machine_name == "defaultVM"
|
||||
assert uri.flake.is_local
|
||||
assert str(uri.flake).endswith(tempdir) # type: ignore
|
||||
|
||||
@@ -82,7 +82,7 @@ def test_nested_nullable() -> None:
|
||||
data = {
|
||||
"machine": {
|
||||
"name": "flash-installer",
|
||||
"flake": {"loc": "git+https://git.clan.lol/clan/clan-core"},
|
||||
"flake": {"identifier": "git+https://git.clan.lol/clan/clan-core"},
|
||||
},
|
||||
"mode": "format",
|
||||
"disks": {"main": "/dev/sda"},
|
||||
@@ -96,7 +96,7 @@ def test_nested_nullable() -> None:
|
||||
expected = FlashOptions(
|
||||
machine=machines.Machine(
|
||||
name="flash-installer",
|
||||
flake=machines.FlakeId("git+https://git.clan.lol/clan/clan-core"),
|
||||
flake=machines.Flake("git+https://git.clan.lol/clan/clan-core"),
|
||||
),
|
||||
mode="format",
|
||||
disks={"main": "/dev/sda"},
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
# (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
|
||||
|
||||
|
||||
@@ -25,12 +24,12 @@ def test_clan_key_safe() -> None:
|
||||
|
||||
|
||||
def test_vm_state_dir_identity() -> None:
|
||||
dir1 = vm_state_dir(FlakeId("https://some.clan"), "vm1")
|
||||
dir2 = vm_state_dir(FlakeId("https://some.clan"), "vm1")
|
||||
dir1 = vm_state_dir("https://some.clan", "vm1")
|
||||
dir2 = vm_state_dir("https://some.clan", "vm1")
|
||||
assert str(dir1) == str(dir2)
|
||||
|
||||
|
||||
def test_vm_state_dir_no_collision() -> None:
|
||||
dir1 = vm_state_dir(FlakeId("/foo/bar"), "vm1")
|
||||
dir2 = vm_state_dir(FlakeId("https://some.clan"), "vm1")
|
||||
dir1 = vm_state_dir("/foo/bar", "vm1")
|
||||
dir2 = vm_state_dir("https://some.clan", "vm1")
|
||||
assert str(dir1) != str(dir2)
|
||||
|
||||
@@ -4,7 +4,7 @@ from typing import TYPE_CHECKING
|
||||
|
||||
import pytest
|
||||
from clan_cli.api.modules import list_modules
|
||||
from clan_cli.clan_uri import FlakeId
|
||||
from clan_cli.flake import Flake
|
||||
from clan_cli.inventory import (
|
||||
Inventory,
|
||||
Machine,
|
||||
@@ -56,7 +56,7 @@ def test_add_module_to_inventory(
|
||||
]
|
||||
)
|
||||
opts = CreateOptions(
|
||||
clan_dir=FlakeId(str(base_path)),
|
||||
clan_dir=Flake(str(base_path)),
|
||||
machine=Machine(name="machine1", tags=[], deploy=MachineDeploy()),
|
||||
)
|
||||
|
||||
@@ -93,7 +93,7 @@ def test_add_module_to_inventory(
|
||||
cli.run(cmd)
|
||||
|
||||
machine = MachineMachine(
|
||||
name="machine1", flake=FlakeId(str(test_flake_with_core.path))
|
||||
name="machine1", flake=Flake(str(test_flake_with_core.path))
|
||||
)
|
||||
|
||||
generator = None
|
||||
|
||||
@@ -2,8 +2,8 @@ import ipaddress
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
import pytest
|
||||
from clan_cli.clan_uri import FlakeId
|
||||
from clan_cli.facts.secret_modules.sops import SecretStore
|
||||
from clan_cli.flake import Flake
|
||||
from clan_cli.machines.facts import machine_get_fact
|
||||
from clan_cli.machines.machines import Machine
|
||||
from clan_cli.secrets.folders import sops_secrets_folder
|
||||
@@ -48,7 +48,7 @@ def test_generate_secret(
|
||||
cmd = ["facts", "generate", "--flake", str(test_flake_with_core.path), "vm1"]
|
||||
cli.run(cmd)
|
||||
store1 = SecretStore(
|
||||
Machine(name="vm1", flake=FlakeId(str(test_flake_with_core.path)))
|
||||
Machine(name="vm1", flake=Flake(str(test_flake_with_core.path)))
|
||||
)
|
||||
|
||||
assert store1.exists("", "age.key")
|
||||
@@ -78,7 +78,7 @@ def test_generate_secret(
|
||||
).exists()
|
||||
|
||||
store2 = SecretStore(
|
||||
Machine(name="vm2", flake=FlakeId(str(test_flake_with_core.path)))
|
||||
Machine(name="vm2", flake=Flake(str(test_flake_with_core.path)))
|
||||
)
|
||||
|
||||
# Should not exist clan facts generate
|
||||
|
||||
@@ -2,8 +2,8 @@ import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
from clan_cli.clan_uri import FlakeId
|
||||
from clan_cli.facts.secret_modules.password_store import SecretStore
|
||||
from clan_cli.flake import Flake
|
||||
from clan_cli.machines.facts import machine_get_fact
|
||||
from clan_cli.machines.machines import Machine
|
||||
from clan_cli.nix import nix_shell
|
||||
@@ -68,7 +68,7 @@ def test_upload_secret(
|
||||
)
|
||||
cli.run(["facts", "generate", "vm1", "--flake", str(flake.path)])
|
||||
|
||||
store = SecretStore(Machine(name="vm1", flake=FlakeId(str(flake.path))))
|
||||
store = SecretStore(Machine(name="vm1", flake=Flake(str(flake.path))))
|
||||
|
||||
network_id = machine_get_fact(flake.path, "vm1", "zerotier-network-id")
|
||||
assert len(network_id) == 16
|
||||
|
||||
@@ -6,8 +6,8 @@ from typing import TYPE_CHECKING
|
||||
|
||||
import pytest
|
||||
from age_keys import SopsSetup
|
||||
from clan_cli.clan_uri import FlakeId
|
||||
from clan_cli.errors import ClanError
|
||||
from clan_cli.flake import Flake
|
||||
from clan_cli.machines.machines import Machine
|
||||
from clan_cli.nix import nix_eval, run
|
||||
from clan_cli.vars.check import check_vars
|
||||
@@ -138,7 +138,7 @@ def test_generate_public_and_secret_vars(
|
||||
monkeypatch.chdir(flake.path)
|
||||
sops_setup.init()
|
||||
|
||||
machine = Machine(name="my_machine", flake=FlakeId(str(flake.path)))
|
||||
machine = Machine(name="my_machine", flake=Flake(str(flake.path)))
|
||||
assert not check_vars(machine)
|
||||
vars_text = stringify_all_vars(machine)
|
||||
assert "my_generator/my_value: <not set>" in vars_text
|
||||
@@ -184,11 +184,11 @@ def test_generate_public_and_secret_vars(
|
||||
)
|
||||
vars_text = stringify_all_vars(machine)
|
||||
in_repo_store = in_repo.FactStore(
|
||||
Machine(name="my_machine", flake=FlakeId(str(flake.path)))
|
||||
Machine(name="my_machine", flake=Flake(str(flake.path)))
|
||||
)
|
||||
assert not in_repo_store.exists(Generator("my_generator"), "my_secret")
|
||||
sops_store = sops.SecretStore(
|
||||
Machine(name="my_machine", flake=FlakeId(str(flake.path)))
|
||||
Machine(name="my_machine", flake=Flake(str(flake.path)))
|
||||
)
|
||||
assert sops_store.exists(Generator("my_generator"), "my_secret")
|
||||
assert sops_store.get(Generator("my_generator"), "my_secret").decode() == "secret"
|
||||
@@ -246,11 +246,11 @@ def test_generate_secret_var_sops_with_default_group(
|
||||
cli.run(["secrets", "groups", "add-user", "my_group", sops_setup.user])
|
||||
cli.run(["vars", "generate", "--flake", str(flake.path), "my_machine"])
|
||||
in_repo_store = in_repo.FactStore(
|
||||
Machine(name="my_machine", flake=FlakeId(str(flake.path)))
|
||||
Machine(name="my_machine", flake=Flake(str(flake.path)))
|
||||
)
|
||||
assert not in_repo_store.exists(Generator("my_generator"), "my_secret")
|
||||
sops_store = sops.SecretStore(
|
||||
Machine(name="my_machine", flake=FlakeId(str(flake.path)))
|
||||
Machine(name="my_machine", flake=Flake(str(flake.path)))
|
||||
)
|
||||
assert sops_store.exists(Generator("my_generator"), "my_secret")
|
||||
assert sops_store.get(Generator("my_generator"), "my_secret").decode() == "hello\n"
|
||||
@@ -317,8 +317,8 @@ def test_generated_shared_secret_sops(
|
||||
flake.refresh()
|
||||
monkeypatch.chdir(flake.path)
|
||||
sops_setup.init()
|
||||
machine1 = Machine(name="machine1", flake=FlakeId(str(flake.path)))
|
||||
machine2 = Machine(name="machine2", flake=FlakeId(str(flake.path)))
|
||||
machine1 = Machine(name="machine1", flake=Flake(str(flake.path)))
|
||||
machine2 = Machine(name="machine2", flake=Flake(str(flake.path)))
|
||||
cli.run(["vars", "generate", "--flake", str(flake.path), "machine1"])
|
||||
assert check_vars(machine1)
|
||||
cli.run(["vars", "generate", "--flake", str(flake.path), "machine2"])
|
||||
@@ -368,12 +368,12 @@ def test_generate_secret_var_password_store(
|
||||
shutil.copytree(test_root / "data" / "password-store", password_store_dir)
|
||||
monkeypatch.setenv("PASSWORD_STORE_DIR", str(flake.path / "pass"))
|
||||
|
||||
machine = Machine(name="my_machine", flake=FlakeId(str(flake.path)))
|
||||
machine = Machine(name="my_machine", flake=Flake(str(flake.path)))
|
||||
assert not check_vars(machine)
|
||||
cli.run(["vars", "generate", "--flake", str(flake.path), "my_machine"])
|
||||
assert check_vars(machine)
|
||||
store = password_store.SecretStore(
|
||||
Machine(name="my_machine", flake=FlakeId(str(flake.path)))
|
||||
Machine(name="my_machine", flake=Flake(str(flake.path)))
|
||||
)
|
||||
assert store.exists(Generator("my_generator", share=False, files=[]), "my_secret")
|
||||
assert not store.exists(
|
||||
@@ -432,10 +432,10 @@ def test_generate_secret_for_multiple_machines(
|
||||
cli.run(["vars", "generate", "--flake", str(flake.path)])
|
||||
# check if public vars have been created correctly
|
||||
in_repo_store1 = in_repo.FactStore(
|
||||
Machine(name="machine1", flake=FlakeId(str(flake.path)))
|
||||
Machine(name="machine1", flake=Flake(str(flake.path)))
|
||||
)
|
||||
in_repo_store2 = in_repo.FactStore(
|
||||
Machine(name="machine2", flake=FlakeId(str(flake.path)))
|
||||
Machine(name="machine2", flake=Flake(str(flake.path)))
|
||||
)
|
||||
assert in_repo_store1.exists(Generator("my_generator"), "my_value")
|
||||
assert in_repo_store2.exists(Generator("my_generator"), "my_value")
|
||||
@@ -449,10 +449,10 @@ def test_generate_secret_for_multiple_machines(
|
||||
)
|
||||
# check if secret vars have been created correctly
|
||||
sops_store1 = sops.SecretStore(
|
||||
Machine(name="machine1", flake=FlakeId(str(flake.path)))
|
||||
Machine(name="machine1", flake=Flake(str(flake.path)))
|
||||
)
|
||||
sops_store2 = sops.SecretStore(
|
||||
Machine(name="machine2", flake=FlakeId(str(flake.path)))
|
||||
Machine(name="machine2", flake=Flake(str(flake.path)))
|
||||
)
|
||||
assert sops_store1.exists(Generator("my_generator"), "my_secret")
|
||||
assert sops_store2.exists(Generator("my_generator"), "my_secret")
|
||||
@@ -498,7 +498,7 @@ def test_prompt(
|
||||
)
|
||||
cli.run(["vars", "generate", "--flake", str(flake.path), "my_machine"])
|
||||
in_repo_store = in_repo.FactStore(
|
||||
Machine(name="my_machine", flake=FlakeId(str(flake.path)))
|
||||
Machine(name="my_machine", flake=Flake(str(flake.path)))
|
||||
)
|
||||
assert in_repo_store.exists(Generator("my_generator"), "line_value")
|
||||
assert (
|
||||
@@ -512,7 +512,7 @@ def test_prompt(
|
||||
== "my\nmultiline\ninput\n"
|
||||
)
|
||||
sops_store = sops.SecretStore(
|
||||
Machine(name="my_machine", flake=FlakeId(str(flake.path)))
|
||||
Machine(name="my_machine", flake=Flake(str(flake.path)))
|
||||
)
|
||||
assert sops_store.exists(
|
||||
Generator(name="my_generator", share=False, files=[]), "prompt_persist"
|
||||
@@ -553,8 +553,8 @@ def test_multi_machine_shared_vars(
|
||||
flake.refresh()
|
||||
monkeypatch.chdir(flake.path)
|
||||
sops_setup.init()
|
||||
machine1 = Machine(name="machine1", flake=FlakeId(str(flake.path)))
|
||||
machine2 = Machine(name="machine2", flake=FlakeId(str(flake.path)))
|
||||
machine1 = Machine(name="machine1", flake=Flake(str(flake.path)))
|
||||
machine2 = Machine(name="machine2", flake=Flake(str(flake.path)))
|
||||
sops_store_1 = sops.SecretStore(machine1)
|
||||
sops_store_2 = sops.SecretStore(machine2)
|
||||
in_repo_store_1 = in_repo.FactStore(machine1)
|
||||
@@ -616,7 +616,7 @@ def test_api_set_prompts(
|
||||
)
|
||||
],
|
||||
)
|
||||
machine = Machine(name="my_machine", flake=FlakeId(str(flake.path)))
|
||||
machine = Machine(name="my_machine", flake=Flake(str(flake.path)))
|
||||
store = in_repo.FactStore(machine)
|
||||
assert store.exists(Generator("my_generator"), "prompt1")
|
||||
assert store.get(Generator("my_generator"), "prompt1").decode() == "input1"
|
||||
@@ -663,7 +663,7 @@ def test_stdout_of_generate(
|
||||
# with capture_output as output:
|
||||
with caplog.at_level(logging.INFO):
|
||||
generate_vars_for_machine(
|
||||
Machine(name="my_machine", flake=FlakeId(str(flake.path))),
|
||||
Machine(name="my_machine", flake=Flake(str(flake.path))),
|
||||
"my_generator",
|
||||
regenerate=False,
|
||||
)
|
||||
@@ -673,10 +673,10 @@ def test_stdout_of_generate(
|
||||
assert "new: hello" in caplog.text
|
||||
caplog.clear()
|
||||
|
||||
set_var("my_machine", "my_generator/my_value", b"world", FlakeId(str(flake.path)))
|
||||
set_var("my_machine", "my_generator/my_value", b"world", Flake(str(flake.path)))
|
||||
with caplog.at_level(logging.INFO):
|
||||
generate_vars_for_machine(
|
||||
Machine(name="my_machine", flake=FlakeId(str(flake.path))),
|
||||
Machine(name="my_machine", flake=Flake(str(flake.path))),
|
||||
"my_generator",
|
||||
regenerate=True,
|
||||
)
|
||||
@@ -687,7 +687,7 @@ def test_stdout_of_generate(
|
||||
# check the output when nothing gets regenerated
|
||||
with caplog.at_level(logging.INFO):
|
||||
generate_vars_for_machine(
|
||||
Machine(name="my_machine", flake=FlakeId(str(flake.path))),
|
||||
Machine(name="my_machine", flake=Flake(str(flake.path))),
|
||||
"my_generator",
|
||||
regenerate=True,
|
||||
)
|
||||
@@ -696,7 +696,7 @@ def test_stdout_of_generate(
|
||||
caplog.clear()
|
||||
with caplog.at_level(logging.INFO):
|
||||
generate_vars_for_machine(
|
||||
Machine(name="my_machine", flake=FlakeId(str(flake.path))),
|
||||
Machine(name="my_machine", flake=Flake(str(flake.path))),
|
||||
"my_secret_generator",
|
||||
regenerate=False,
|
||||
)
|
||||
@@ -707,11 +707,11 @@ def test_stdout_of_generate(
|
||||
"my_machine",
|
||||
"my_secret_generator/my_secret",
|
||||
b"world",
|
||||
FlakeId(str(flake.path)),
|
||||
Flake(str(flake.path)),
|
||||
)
|
||||
with caplog.at_level(logging.INFO):
|
||||
generate_vars_for_machine(
|
||||
Machine(name="my_machine", flake=FlakeId(str(flake.path))),
|
||||
Machine(name="my_machine", flake=Flake(str(flake.path))),
|
||||
"my_secret_generator",
|
||||
regenerate=True,
|
||||
)
|
||||
@@ -760,10 +760,10 @@ def test_migration(
|
||||
assert "Migrated var my_generator/my_value" in caplog.text
|
||||
assert "Migrated secret var my_generator/my_secret" in caplog.text
|
||||
in_repo_store = in_repo.FactStore(
|
||||
Machine(name="my_machine", flake=FlakeId(str(flake.path)))
|
||||
Machine(name="my_machine", flake=Flake(str(flake.path)))
|
||||
)
|
||||
sops_store = sops.SecretStore(
|
||||
Machine(name="my_machine", flake=FlakeId(str(flake.path)))
|
||||
Machine(name="my_machine", flake=Flake(str(flake.path)))
|
||||
)
|
||||
assert in_repo_store.exists(Generator("my_generator"), "my_value")
|
||||
assert in_repo_store.get(Generator("my_generator"), "my_value").decode() == "hello"
|
||||
@@ -800,7 +800,7 @@ def test_fails_when_files_are_left_from_other_backend(
|
||||
sops_setup.init()
|
||||
for generator in ["my_secret_generator", "my_value_generator"]:
|
||||
generate_vars_for_machine(
|
||||
Machine(name="my_machine", flake=FlakeId(str(flake.path))),
|
||||
Machine(name="my_machine", flake=Flake(str(flake.path))),
|
||||
generator,
|
||||
regenerate=False,
|
||||
)
|
||||
@@ -817,36 +817,33 @@ def test_fails_when_files_are_left_from_other_backend(
|
||||
if generator == "my_secret_generator":
|
||||
with pytest.raises(ClanError):
|
||||
generate_vars_for_machine(
|
||||
Machine(name="my_machine", flake=FlakeId(str(flake.path))),
|
||||
Machine(name="my_machine", flake=Flake(str(flake.path))),
|
||||
generator,
|
||||
regenerate=False,
|
||||
)
|
||||
else:
|
||||
generate_vars_for_machine(
|
||||
Machine(name="my_machine", flake=FlakeId(str(flake.path))),
|
||||
Machine(name="my_machine", flake=Flake(str(flake.path))),
|
||||
generator,
|
||||
regenerate=False,
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.with_core
|
||||
def test_keygen(
|
||||
monkeypatch: pytest.MonkeyPatch,
|
||||
temporary_home: Path,
|
||||
) -> None:
|
||||
monkeypatch.chdir(temporary_home)
|
||||
cli.run(["vars", "keygen", "--flake", str(temporary_home), "--user", "user"])
|
||||
def test_keygen(monkeypatch: pytest.MonkeyPatch, flake: ClanFlake) -> None:
|
||||
monkeypatch.chdir(flake.path)
|
||||
cli.run(["vars", "keygen", "--flake", str(flake.path), "--user", "user"])
|
||||
# check public key exists
|
||||
assert (temporary_home / "sops" / "users" / "user").is_dir()
|
||||
assert (flake.path / "sops" / "users" / "user").is_dir()
|
||||
# check private key exists
|
||||
assert (temporary_home / ".config" / "sops" / "age" / "keys.txt").is_file()
|
||||
assert (flake.temporary_home / ".config" / "sops" / "age" / "keys.txt").is_file()
|
||||
# it should still work, even if the keys already exist
|
||||
import shutil
|
||||
|
||||
shutil.rmtree(temporary_home / "sops" / "users" / "user")
|
||||
cli.run(["vars", "keygen", "--flake", str(temporary_home), "--user", "user"])
|
||||
shutil.rmtree(flake.path / "sops" / "users" / "user")
|
||||
cli.run(["vars", "keygen", "--flake", str(flake.path), "--user", "user"])
|
||||
# check public key exists
|
||||
assert (temporary_home / "sops" / "users" / "user").is_dir()
|
||||
assert (flake.path / "sops" / "users" / "user").is_dir()
|
||||
|
||||
|
||||
@pytest.mark.with_core
|
||||
@@ -862,7 +859,7 @@ def test_invalidation(
|
||||
flake.refresh()
|
||||
monkeypatch.chdir(flake.path)
|
||||
cli.run(["vars", "generate", "--flake", str(flake.path), "my_machine"])
|
||||
machine = Machine(name="my_machine", flake=FlakeId(str(flake.path)))
|
||||
machine = Machine(name="my_machine", flake=Flake(str(flake.path)))
|
||||
value1 = get_var(
|
||||
str(machine.flake.path), machine.name, "my_generator/my_value"
|
||||
).printable_value
|
||||
|
||||
@@ -5,7 +5,7 @@ from contextlib import ExitStack
|
||||
import pytest
|
||||
from age_keys import SopsSetup
|
||||
from clan_cli import cmd
|
||||
from clan_cli.clan_uri import FlakeId
|
||||
from clan_cli.flake import Flake
|
||||
from clan_cli.machines.machines import Machine
|
||||
from clan_cli.nix import nix_eval, run
|
||||
from clan_cli.vms.run import inspect_vm, spawn_vm
|
||||
@@ -97,8 +97,8 @@ def test_vm_deployment(
|
||||
# run nix flake lock
|
||||
cmd.run(["nix", "flake", "lock"], cmd.RunOpts(cwd=flake.path))
|
||||
|
||||
vm1_config = inspect_vm(machine=Machine("m1_machine", FlakeId(str(flake.path))))
|
||||
vm2_config = inspect_vm(machine=Machine("m2_machine", FlakeId(str(flake.path))))
|
||||
vm1_config = inspect_vm(machine=Machine("m1_machine", Flake(str(flake.path))))
|
||||
vm2_config = inspect_vm(machine=Machine("m2_machine", Flake(str(flake.path))))
|
||||
with ExitStack() as stack:
|
||||
vm1 = stack.enter_context(spawn_vm(vm1_config, stdin=subprocess.DEVNULL))
|
||||
vm2 = stack.enter_context(spawn_vm(vm2_config, stdin=subprocess.DEVNULL))
|
||||
|
||||
@@ -2,7 +2,7 @@ from pathlib import Path
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
import pytest
|
||||
from clan_cli.clan_uri import FlakeId
|
||||
from clan_cli.flake import Flake
|
||||
from clan_cli.machines.machines import Machine
|
||||
from clan_cli.vms.run import inspect_vm, spawn_vm
|
||||
from fixtures_flakes import ClanFlake, FlakeForTest
|
||||
@@ -80,7 +80,7 @@ def test_vm_persistence(
|
||||
|
||||
flake.refresh()
|
||||
|
||||
vm_config = inspect_vm(machine=Machine("my_machine", FlakeId(str(flake.path))))
|
||||
vm_config = inspect_vm(machine=Machine("my_machine", Flake(str(flake.path))))
|
||||
|
||||
with spawn_vm(vm_config) as vm, vm.qga_connect() as qga:
|
||||
# create state via qmp command instead of systemd service
|
||||
|
||||
Reference in New Issue
Block a user