skip writing the empty inventory json
This commit is contained in:
@@ -109,10 +109,8 @@ def create_machine(opts: CreateOptions) -> None:
|
|||||||
|
|
||||||
src = tmpdirp / "machines" / opts.template_name
|
src = tmpdirp / "machines" / opts.template_name
|
||||||
|
|
||||||
if (
|
has_inventory = (dst / "inventory.json").exists()
|
||||||
not (src / "configuration.nix").exists()
|
if not (src / "configuration.nix").exists() and not has_inventory:
|
||||||
and not (src / "inventory.json").exists()
|
|
||||||
):
|
|
||||||
msg = f"Template machine '{opts.template_name}' does not contain a configuration.nix or inventory.json"
|
msg = f"Template machine '{opts.template_name}' does not contain a configuration.nix or inventory.json"
|
||||||
description = (
|
description = (
|
||||||
"Template machine must contain a configuration.nix or inventory.json"
|
"Template machine must contain a configuration.nix or inventory.json"
|
||||||
@@ -131,7 +129,7 @@ def create_machine(opts: CreateOptions) -> None:
|
|||||||
inventory = load_inventory_json(clan_dir)
|
inventory = load_inventory_json(clan_dir)
|
||||||
|
|
||||||
# Merge the inventory from the template
|
# Merge the inventory from the template
|
||||||
if (dst / "inventory.json").exists():
|
if has_inventory:
|
||||||
template_inventory = load_inventory_json(dst)
|
template_inventory = load_inventory_json(dst)
|
||||||
merge_template_inventory(inventory, template_inventory, machine_name)
|
merge_template_inventory(inventory, template_inventory, machine_name)
|
||||||
|
|
||||||
@@ -141,6 +139,13 @@ def create_machine(opts: CreateOptions) -> None:
|
|||||||
new_machine = InventoryMachine(
|
new_machine = InventoryMachine(
|
||||||
name=machine_name, deploy=deploy, tags=opts.machine.tags
|
name=machine_name, deploy=deploy, tags=opts.machine.tags
|
||||||
)
|
)
|
||||||
|
if (
|
||||||
|
not has_inventory
|
||||||
|
and len(opts.machine.tags) == 0
|
||||||
|
and new_machine.deploy.targetHost is None
|
||||||
|
):
|
||||||
|
# no need to update inventory if there are no tags or target host
|
||||||
|
return
|
||||||
inventory.machines.update({new_machine.name: dataclass_to_dict(new_machine)})
|
inventory.machines.update({new_machine.name: dataclass_to_dict(new_machine)})
|
||||||
set_inventory(inventory, clan_dir, "Imported machine from template")
|
set_inventory(inventory, clan_dir, "Imported machine from template")
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,15 @@ def test_machine_subcommands(
|
|||||||
capture_output: CaptureOutput,
|
capture_output: CaptureOutput,
|
||||||
) -> None:
|
) -> None:
|
||||||
cli.run(
|
cli.run(
|
||||||
["machines", "create", "--flake", str(test_flake_with_core.path), "machine1"]
|
[
|
||||||
|
"machines",
|
||||||
|
"create",
|
||||||
|
"--flake",
|
||||||
|
str(test_flake_with_core.path),
|
||||||
|
"machine1",
|
||||||
|
"--tags",
|
||||||
|
"vm",
|
||||||
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
with capture_output as output:
|
with capture_output as output:
|
||||||
|
|||||||
Reference in New Issue
Block a user