feat: get_system_identity for matching a node to its BMC (0.2.0)
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.
This commit is contained in:
1 parent
363f93c895
commit
98df0e21ca
5 files changed
+44
-2
No files matched your search
@@ -0,0 +1,31 @@
|
||||
"""`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",
|
||||
}
|
||||
Reference in new issue
Block a user