From 264976c2e4f9ea88c64d3e934c346da7af311cbe Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Tue, 8 Mar 2022 23:56:38 +0100 Subject: [PATCH] fix: ensure that label values are strings (#166) --- prometheuspvesd/model.py | 20 +++++----- prometheuspvesd/test/unit/test_model.py | 50 +++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 10 deletions(-) create mode 100644 prometheuspvesd/test/unit/test_model.py diff --git a/prometheuspvesd/model.py b/prometheuspvesd/model.py index 07176dc..edcaa7f 100644 --- a/prometheuspvesd/model.py +++ b/prometheuspvesd/model.py @@ -6,17 +6,17 @@ class Host: """Represents a virtual machine or container in PVE.""" def __init__(self, vmid, hostname, ipv4_address, ipv6_address, pve_type): - self.hostname = hostname - self.ipv4_address = ipv4_address - self.ipv6_address = ipv6_address - self.vmid = vmid - self.pve_type = pve_type + self.hostname = str(hostname) + self.ipv4_address = str(ipv4_address) + self.ipv6_address = str(ipv6_address) + self.vmid = str(vmid) + self.pve_type = str(pve_type) self.labels = {} - self.labels["__meta_pve_ipv4"] = ipv4_address - self.labels["__meta_pve_ipv6"] = ipv6_address - self.labels["__meta_pve_name"] = hostname - self.labels["__meta_pve_type"] = pve_type - self.labels["__meta_pve_vmid"] = str(vmid) + self.add_label("ipv4", ipv4_address) + self.add_label("ipv6", ipv6_address) + self.add_label("name", hostname) + self.add_label("type", pve_type) + self.add_label("vmid", vmid) def __str__(self): return f"{self.hostname}({self.vmid}): {self.pve_type} \ diff --git a/prometheuspvesd/test/unit/test_model.py b/prometheuspvesd/test/unit/test_model.py new file mode 100644 index 0000000..7d4be90 --- /dev/null +++ b/prometheuspvesd/test/unit/test_model.py @@ -0,0 +1,50 @@ +"""Test Host class.""" +import pytest + +from prometheuspvesd.model import Host + +pytest_plugins = [ + "prometheuspvesd.test.fixtures.fixtures", +] + + +@pytest.mark.parametrize( + "testinput,expected", [ + ({ + "vmid": 101, + "hostname": "host1", + "ipv4_address": False, + "ipv6_address": False, + "pve_type": "qemu", + }, { + "__meta_pve_vmid": "101", + "__meta_pve_name": "host1", + "__meta_pve_ipv4": "False", + "__meta_pve_ipv6": "False", + "__meta_pve_type": "qemu", + }), + ({ + "vmid": "202", + "hostname": "host2", + "ipv4_address": "129.168.0.1", + "ipv6_address": "2001:db8:3333:4444:5555:6666:7777:8888", + "pve_type": "qemu", + }, { + "__meta_pve_vmid": "202", + "__meta_pve_name": "host2", + "__meta_pve_ipv4": "129.168.0.1", + "__meta_pve_ipv6": "2001:db8:3333:4444:5555:6666:7777:8888", + "__meta_pve_type": "qemu", + }), + ] +) +def test_host(mocker, testinput, expected): + host = Host( + testinput["vmid"], + testinput["hostname"], + testinput["ipv4_address"], + testinput["ipv6_address"], + testinput["pve_type"], + ) + + assert host.labels == expected