Merge ~bjornt/maas:bug-2052958-3.3 into maas:3.3

Proposed by Björn Tillenius
Status: Merged
Approved by: Björn Tillenius
Approved revision: 05e783147982cb823710e88c4706ab0e2f4ac719
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~bjornt/maas:bug-2052958-3.3
Merge into: maas:3.3
Diff against target: 72 lines (+49/-1)
2 files modified
src/metadataserver/builtin_scripts/hooks.py (+1/-1)
src/metadataserver/builtin_scripts/tests/test_hooks.py (+48/-0)
Reviewer Review Type Date Requested Status
MAAS Lander Needs Fixing
Björn Tillenius Approve
Review via email: mp+465926@code.launchpad.net

Commit message

fix: LP:2052958 cope with disks with missing serial metadata

(cherry picked from commit f57ed04744e7110659d7b6833b2ad2b1571a020e)
(cherry picked from commit c13a8beb452f270d795fd1a722928287ed51bb1f)

To post a comment you must log in.
Revision history for this message
Björn Tillenius (bjornt) wrote :

Self-approve backport.

review: Approve
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b bug-2052958-3.3 lp:~bjornt/maas/+git/maas into -b 3.3 lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/5498/console
COMMIT: 05e783147982cb823710e88c4706ab0e2f4ac719

review: Needs Fixing

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/metadataserver/builtin_scripts/hooks.py b/src/metadataserver/builtin_scripts/hooks.py
2index 7bc96c7..529d62b 100644
3--- a/src/metadataserver/builtin_scripts/hooks.py
4+++ b/src/metadataserver/builtin_scripts/hooks.py
5@@ -763,7 +763,7 @@ def _condense_luns(disks):
6 if dev_match["bus"] == "pci" and "pci_address" not in disk:
7 disk["pci_address"] = dev_match["bus_addr"]
8
9- if disk["serial"] and (rexp_list := _MP_PATH_ID.get(proto)):
10+ if disk.get("serial") and (rexp_list := _MP_PATH_ID.get(proto)):
11 for r in rexp_list:
12 if m := r.match(device):
13 serial_lun_map[(disk["serial"], m["lun"])].append(disk)
14diff --git a/src/metadataserver/builtin_scripts/tests/test_hooks.py b/src/metadataserver/builtin_scripts/tests/test_hooks.py
15index a2334fa..ab3602d 100644
16--- a/src/metadataserver/builtin_scripts/tests/test_hooks.py
17+++ b/src/metadataserver/builtin_scripts/tests/test_hooks.py
18@@ -4017,6 +4017,54 @@ class TestUpdateNodePhysicalBlockDevices(MAASServerTestCase):
19 ["sda", "sdb"],
20 )
21
22+ def test_no_condense_luns_no_serial(self):
23+ node = factory.make_Node()
24+ resources = deepcopy(SAMPLE_LXD_RESOURCES)
25+ resources["storage"]["disks"] = [
26+ {
27+ "id": "sde",
28+ "device": "8:64",
29+ "model": "IPR-0 6DC90500",
30+ "type": "scsi",
31+ "read_only": False,
32+ "size": 283794997248,
33+ "removable": False,
34+ "numa_node": 0,
35+ "device_path": "pci-0001:08:00.0-scsi-0:2:4:0",
36+ "block_size": 4096,
37+ "rpm": 1,
38+ "serial": "IBM_IPR-0_6DC90500000000A0",
39+ "device_id": "scsi-1IBM_IPR-0_6DC90500000000A0",
40+ "partitions": [],
41+ },
42+ {
43+ "id": "sr9",
44+ "device": "11:0",
45+ "model": "RMBO0140532",
46+ "type": "cdrom",
47+ "read_only": False,
48+ "size": 0,
49+ "removable": True,
50+ "numa_node": 0,
51+ "device_path": "pci-0001:08:00.0-scsi-0:0:7:0",
52+ "block_size": 0,
53+ "firmware_version": "RA64",
54+ "rpm": 1,
55+ "device_id": "",
56+ "partitions": [],
57+ },
58+ ]
59+
60+ _update_node_physical_block_devices(
61+ node, resources, create_numa_nodes(node)
62+ )
63+
64+ # sr9 is not included because it's a cdrom
65+ self.assertCountEqual(
66+ node.physicalblockdevice_set.values_list("name", flat=True),
67+ ["sde"],
68+ )
69+
70
71 class TestUpdateNodeNetworkInformation(MAASServerTestCase):
72 """Tests the update_node_network_information function using data from LXD.

Subscribers

People subscribed via source and target branches