feat: get_service_packages, which packages a node's systemd unit is (NetOrk/netork#1236)
CI / test (3.10) (pull_request) Successful in 42s
CI / test (3.11) (pull_request) Successful in 33s
CI / test (3.12) (pull_request) Successful in 37s
CI / test (3.10) (push) Successful in 53s
CI / test (3.11) (push) Successful in 46s
CI / test (3.12) (push) Successful in 43s
CI / test (3.10) (pull_request) Successful in 42s
CI / test (3.11) (pull_request) Successful in 33s
CI / test (3.12) (pull_request) Successful in 37s
CI / test (3.10) (push) Successful in 53s
CI / test (3.11) (push) Successful in 46s
CI / test (3.12) (push) Successful in 43s
Mixes in napalm-device-types' ServicePackagesMixin; the transport is the node's exec path, as for the kernel facts. Read-only. Requires napalm-device-types 4.20.0; version 0.6.0.
This commit is contained in:
1 parent
d210c9abe8
commit
e0d0147d75
5 files changed
+54
-2
No files matched your search
@@ -0,0 +1,43 @@
|
||||
"""`get_service_packages`: which installed packages each systemd unit of the node is.
|
||||
|
||||
The node's own services -- pveproxy, corosync, ceph -- are where a decision
|
||||
about a service lands on a hypervisor (NetOrk/netork#1236). The command and its
|
||||
parse are napalm-device-types'; the driver only carries the command over its
|
||||
exec path.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from unittest.mock import patch
|
||||
|
||||
import pytest
|
||||
|
||||
from napalm_device_types import ServicePackagesMixin
|
||||
from napalm_device_types.service_packages import SERVICE_PACKAGES_COMMAND
|
||||
from napalm_proxmox.driver import ProxmoxDriver
|
||||
|
||||
WIRE = (
|
||||
"SVCPKG_BEGIN\n[units]\nId=pveproxy.service\n"
|
||||
"FragmentPath=/lib/systemd/system/pveproxy.service\n"
|
||||
"ExecStart={ path=/usr/bin/pveproxy ; argv[]=/usr/bin/pveproxy start }\n\n"
|
||||
"[dpkg]\npve-manager: /lib/systemd/system/pveproxy.service\n"
|
||||
"pve-manager: /usr/bin/pveproxy\nSVCPKG_END"
|
||||
)
|
||||
|
||||
|
||||
def test_the_driver_declares_the_contract():
|
||||
assert issubclass(ProxmoxDriver, ServicePackagesMixin)
|
||||
|
||||
|
||||
def test_it_runs_the_shared_command(driver):
|
||||
with patch.object(driver, "_exec_ssh_command", return_value=WIRE) as exec_:
|
||||
found = driver.get_service_packages()
|
||||
|
||||
exec_.assert_called_once_with(SERVICE_PACKAGES_COMMAND)
|
||||
assert found == {"pveproxy": ["pve-manager"]}
|
||||
|
||||
|
||||
def test_output_without_a_report_raises(driver):
|
||||
with patch.object(driver, "_exec_ssh_command", return_value=""):
|
||||
with pytest.raises(ValueError):
|
||||
driver.get_service_packages()
|
||||
Reference in new issue
Block a user