47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
|
|
import json
|
||
|
|
import tempfile
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
import pytest
|
||
|
|
|
||
|
|
from metis.pkg import inventory
|
||
|
|
|
||
|
|
def test_load_and_find_node():
|
||
|
|
data = {
|
||
|
|
"classes": [
|
||
|
|
{
|
||
|
|
"name": "rpi5",
|
||
|
|
"arch": "arm64",
|
||
|
|
"os": "ubuntu",
|
||
|
|
"image": "file:///tmp/base.img",
|
||
|
|
"checksum": "sha256:deadbeef",
|
||
|
|
"default_labels": {"hardware": "rpi5"},
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"nodes": [
|
||
|
|
{
|
||
|
|
"name": "titan-04",
|
||
|
|
"class": "rpi5",
|
||
|
|
"hostname": "titan-04",
|
||
|
|
"ip": "192.168.22.30",
|
||
|
|
"k3s_role": "agent",
|
||
|
|
}
|
||
|
|
],
|
||
|
|
}
|
||
|
|
with tempfile.TemporaryDirectory() as tmp:
|
||
|
|
path = Path(tmp) / "inv.yaml"
|
||
|
|
path.write_text(json.dumps(data))
|
||
|
|
inv = inventory.Load(path)
|
||
|
|
node, cls, err = inv.FindNode("titan-04")
|
||
|
|
assert err is None
|
||
|
|
assert node.Hostname == "titan-04"
|
||
|
|
assert cls.Arch == "arm64"
|
||
|
|
|
||
|
|
|
||
|
|
def test_find_node_missing():
|
||
|
|
inv = inventory.Inventory(classes=[], nodes=[])
|
||
|
|
node, cls, err = inv.FindNode("missing")
|
||
|
|
assert err is not None
|
||
|
|
assert node is None
|
||
|
|
assert cls is None
|