Merge ~ack/maas:1939340-lxd-usb-device-no-interfaces into maas:master

Proposed by Alberto Donato
Status: Merged
Approved by: Alberto Donato
Approved revision: 086f34e45685d60b2adff389e61c95fe73dc86a6
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~ack/maas:1939340-lxd-usb-device-no-interfaces
Merge into: maas:master
Diff against target: 55 lines (+26/-1)
2 files modified
src/metadataserver/builtin_scripts/hooks.py (+3/-1)
src/metadataserver/builtin_scripts/tests/test_hooks.py (+23/-0)
Reviewer Review Type Date Requested Status
Adam Collard (community) Approve
MAAS Lander Approve
Review via email: mp+411149@code.launchpad.net

Commit message

LP:1939340 handle "interfaces" field for reported USB devices being null

To post a comment you must log in.
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b 1939340-lxd-usb-device-no-interfaces lp:~ack/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: 086f34e45685d60b2adff389e61c95fe73dc86a6

review: Approve
Revision history for this message
Adam Collard (adam-collard) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/src/metadataserver/builtin_scripts/hooks.py b/src/metadataserver/builtin_scripts/hooks.py
index 746437c..26395c9 100644
--- a/src/metadataserver/builtin_scripts/hooks.py
+++ b/src/metadataserver/builtin_scripts/hooks.py
@@ -466,13 +466,15 @@ def _process_usb_devices(add_func, data):
466 device["device_address"],466 device["device_address"],
467 )467 )
468 key = (device["vendor_id"], device["product_id"], usb_address)468 key = (device["vendor_id"], device["product_id"], usb_address)
469 # the "interfaces" field can be present but None
470 interfaces = device.get("interfaces") or []
469 # USB devices can have different drivers for each471 # USB devices can have different drivers for each
470 # functionality. e.g a webcam has a video and audio driver.472 # functionality. e.g a webcam has a video and audio driver.
471 commissioning_driver = ", ".join(473 commissioning_driver = ", ".join(
472 set(474 set(
473 [475 [
474 interface["driver"]476 interface["driver"]
475 for interface in device.get("interfaces", [])477 for interface in interfaces
476 if "driver" in interface478 if "driver" in interface
477 ]479 ]
478 )480 )
diff --git a/src/metadataserver/builtin_scripts/tests/test_hooks.py b/src/metadataserver/builtin_scripts/tests/test_hooks.py
index 5ad4486..134848c 100644
--- a/src/metadataserver/builtin_scripts/tests/test_hooks.py
+++ b/src/metadataserver/builtin_scripts/tests/test_hooks.py
@@ -1850,6 +1850,29 @@ class TestProcessLXDResults(MAASServerTestCase):
1850 pcie_node_device.pci_address, pcie_device["pci_address"]1850 pcie_node_device.pci_address, pcie_device["pci_address"]
1851 )1851 )
18521852
1853 def test_usb_device_null_interfaces(self):
1854 node = factory.make_Node()
1855 lxd_output = make_lxd_output()
1856 usb_device = make_lxd_usb_device()
1857 usb_device["interfaces"] = None
1858 lxd_output["resources"]["usb"] = {
1859 "devices": [usb_device],
1860 "total": 1,
1861 }
1862 process_lxd_results(node, json.dumps(lxd_output).encode(), 0)
1863 usb_node_device = node.node_devices.get(bus=NODE_DEVICE_BUS.USB)
1864 self.assertEqual(usb_node_device.hardware_type, HARDWARE_TYPE.NODE)
1865 self.assertEqual(usb_node_device.vendor_id, usb_device["vendor_id"])
1866 self.assertEqual(usb_node_device.product_id, usb_device["product_id"])
1867 self.assertEqual(usb_node_device.vendor_name, usb_device["vendor"])
1868 self.assertEqual(usb_node_device.product_name, usb_device["product"])
1869 self.assertEqual(usb_node_device.bus_number, usb_device["bus_address"])
1870 self.assertEqual(usb_node_device.commissioning_driver, "")
1871 self.assertEqual(
1872 usb_node_device.device_number, usb_device["device_address"]
1873 )
1874 self.assertIsNone(usb_node_device.pci_address)
1875
1853 def test_updates_node_device(self):1876 def test_updates_node_device(self):
1854 node = factory.make_Node()1877 node = factory.make_Node()
1855 pcie_device = factory.make_NodeDevice(1878 pcie_device = factory.make_NodeDevice(

Subscribers

People subscribed via source and target branches