Mixes in napalm-device-types 4.9's SystemIdentityMixin over the exec path, which runs as root: the node's SMBIOS system UUID, product serial and board serial, vendor placeholders empty. pve-dual, a Supermicro X10DRL-i, reports the product serial 0123456789; its board serial and UUID are what tie it to its BMC.
32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
"""`get_system_identity`: the node's SMBIOS identity, what ties it to its BMC.
|
|
|
|
The command, its parse and the placeholder filter are napalm-device-types'; the driver
|
|
only carries the command over its exec path, which runs as root.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from unittest.mock import patch
|
|
|
|
from napalm_device_types import SYSTEM_IDENTITY_COMMAND, SystemIdentityMixin
|
|
from napalm_proxmox.driver import ProxmoxDriver
|
|
|
|
# pve-dual, a Supermicro X10DRL-i: the product serial is the board vendor's default.
|
|
WIRE = "IDBEGIN\n31303043-534D-C40C-7A72-6F1300000000\n0123456789\nZM155S026022\nIDEND\n"
|
|
|
|
|
|
def test_the_driver_declares_the_contract():
|
|
assert issubclass(ProxmoxDriver, SystemIdentityMixin)
|
|
|
|
|
|
def test_it_runs_the_shared_command(driver):
|
|
with patch.object(driver, "_exec_ssh_command", return_value=WIRE) as exec_:
|
|
identity = driver.get_system_identity()
|
|
|
|
exec_.assert_called_once_with(SYSTEM_IDENTITY_COMMAND)
|
|
assert identity == {
|
|
"system_uuid": "31303043-534d-c40c-7a72-6f1300000000",
|
|
"product_serial": "",
|
|
"board_serial": "ZM155S026022",
|
|
}
|