mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 19:01:54 +00:00
57 lines
1.6 KiB
Python
57 lines
1.6 KiB
Python
from __future__ import annotations
|
|
|
|
import unittest
|
|
|
|
from ansible.errors import AnsibleError
|
|
|
|
import plugins.lookup.mesh_address as module
|
|
|
|
|
|
def _hostvars(host: str, *interfaces: dict) -> dict:
|
|
return {
|
|
host: {
|
|
"applications": {
|
|
"svc-net-wireguard": {"networks": {"interfaces": list(interfaces)}}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
def _run(host: str, hostvars: dict) -> str:
|
|
return module.LookupModule().run([host], variables={"hostvars": hostvars})[0]
|
|
|
|
|
|
class TestMeshAddress(unittest.TestCase):
|
|
def test_the_primary_interface_is_returned(self):
|
|
hostvars = _hostvars(
|
|
"nfs",
|
|
{
|
|
"name": "gamma",
|
|
"host": "nfs",
|
|
"address": "10.100.12.11",
|
|
"primary": False,
|
|
},
|
|
{"name": "beta", "host": "nfs", "address": "10.100.11.11", "primary": True},
|
|
)
|
|
self.assertEqual("10.100.11.11", _run("nfs", hostvars))
|
|
|
|
def test_an_entry_another_host_owns_is_ignored(self):
|
|
hostvars = _hostvars(
|
|
"wrk",
|
|
{"name": "swarm", "host": "mgr", "address": "10.100.0.1", "primary": True},
|
|
)
|
|
self.assertEqual("", _run("wrk", hostvars))
|
|
|
|
def test_a_host_off_the_mesh_has_no_address(self):
|
|
self.assertEqual("", _run("wrk", {"wrk": {}}))
|
|
self.assertEqual("", _run("absent", {}))
|
|
|
|
def test_exactly_one_hostname_is_required(self):
|
|
for terms in ([], ["a", "b"]):
|
|
with self.subTest(terms=terms), self.assertRaises(AnsibleError):
|
|
module.LookupModule().run(terms, variables={})
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|