Merge ~raharper/curtin:fix/block-discover-skip-invalid-wwn-serial into curtin:master

Proposed by Ryan Harper
Status: Merged
Approved by: Ryan Harper
Approved revision: 9f8a0570e5950095a2eb9f6298bb178d26540afc
Merge reported by: Server Team CI bot
Merged at revision: not available
Proposed branch: ~raharper/curtin:fix/block-discover-skip-invalid-wwn-serial
Merge into: curtin:master
Diff against target: 1354 lines (+1312/-1)
3 files modified
curtin/storage_config.py (+9/-1)
tests/data/probert_storage_bogus_wwn.json (+1258/-0)
tests/unittests/test_storage_config.py (+45/-0)
Reviewer Review Type Date Requested Status
Server Team CI bot continuous-integration Approve
Michael Hudson-Doyle Approve
curtin developers Pending
Review via email: mp+383547@code.launchpad.net

Commit message

block-discover: ignore invalid id_serial/id_wwn values

When obtaining unique ids for identifying a block storage
device, block-discover looks for ID_WWN and ID_SERIAL values
and will use them in the rendered storage config. In some cases
the value of these attributes may be invalid. For example, some
consumer disks might have an invalid WWN number:

0x00000000000000000000

Curtin will also ignore empty values, like
ID_SERIAL=' '

Excluded ids will not be emitted in the final storage config.

LP: #1876848

To post a comment you must log in.
Revision history for this message
Michael Hudson-Doyle (mwhudson) wrote :

Thanks for the quick update :)

review: Approve
Revision history for this message
Server Team CI bot (server-team-bot) wrote :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/curtin/storage_config.py b/curtin/storage_config.py
2index eccb96b..51efd82 100644
3--- a/curtin/storage_config.py
4+++ b/curtin/storage_config.py
5@@ -664,6 +664,13 @@ class BlockdevParser(ProbertParser):
6 configs.append(entry)
7 return (configs, errors)
8
9+ def valid_id(self, id_value):
10+ # reject wwn=0x0+
11+ if id_value.lower().startswith('0x'):
12+ return int(id_value, 16) > 0
13+ # accept non-empty (removing whitspace) strings
14+ return len(''.join(id_value.split())) > 0
15+
16 def get_unique_ids(self, blockdev):
17 """ extract preferred ID_* keys for www and serial values.
18
19@@ -679,7 +686,8 @@ class BlockdevParser(ProbertParser):
20 for skey, id_keys in source_keys.items():
21 for id_key in id_keys:
22 if id_key in blockdev and skey not in uniq:
23- uniq[skey] = blockdev[id_key]
24+ if self.valid_id(blockdev[id_key]):
25+ uniq[skey] = blockdev[id_key]
26
27 return uniq
28
29diff --git a/tests/data/probert_storage_bogus_wwn.json b/tests/data/probert_storage_bogus_wwn.json
30new file mode 100644
31index 0000000..b3211fd
32--- /dev/null
33+++ b/tests/data/probert_storage_bogus_wwn.json
34@@ -0,0 +1,1258 @@
35+{
36+ "filesystem": {
37+ "/dev/sdc": {
38+ "BOOT_SYSTEM_ID": "EL\\x20TORITO\\x20SPECIFICATION",
39+ "LABEL": "Ubuntu-Server_20.04_LTS_amd64",
40+ "LABEL_ENC": "Ubuntu-Server\\x2020.04\\x20LTS\\x20amd64",
41+ "TYPE": "iso9660",
42+ "USAGE": "filesystem",
43+ "UUID": "2020-04-23-08-02-07-00",
44+ "UUID_ENC": "2020-04-23-08-02-07-00",
45+ "VERSION": "Joliet Extension"
46+ },
47+ "/dev/sdc1": {
48+ "BOOT_SYSTEM_ID": "EL\\x20TORITO\\x20SPECIFICATION",
49+ "LABEL": "Ubuntu-Server_20.04_LTS_amd64",
50+ "LABEL_ENC": "Ubuntu-Server\\x2020.04\\x20LTS\\x20amd64",
51+ "TYPE": "iso9660",
52+ "USAGE": "filesystem",
53+ "UUID": "2020-04-23-08-02-07-00",
54+ "UUID_ENC": "2020-04-23-08-02-07-00",
55+ "VERSION": "Joliet Extension"
56+ },
57+ "/dev/sdc2": {
58+ "TYPE": "vfat",
59+ "USAGE": "filesystem",
60+ "UUID": "1AC3-20ED",
61+ "UUID_ENC": "1AC3-20ED",
62+ "VERSION": "FAT12"
63+ },
64+ "/dev/sdc3": {
65+ "LABEL": "writable",
66+ "LABEL_ENC": "writable",
67+ "TYPE": "ext4",
68+ "USAGE": "filesystem",
69+ "UUID": "8bcd1ba9-a05d-4f66-b64a-2d9042753ee7",
70+ "UUID_ENC": "8bcd1ba9-a05d-4f66-b64a-2d9042753ee7",
71+ "VERSION": "1.0"
72+ }
73+ },
74+ "dmcrypt": {},
75+ "mount": [
76+ {
77+ "target": "/",
78+ "source": "/cow",
79+ "fstype": "overlay",
80+ "options": "rw,relatime,lowerdir=/installer.squashfs:/filesystem.squashfs,upperdir=/cow/upper,workdir=/cow/work",
81+ "children": [
82+ {
83+ "target": "/sys",
84+ "source": "sysfs",
85+ "fstype": "sysfs",
86+ "options": "rw,nosuid,nodev,noexec,relatime",
87+ "children": [
88+ {
89+ "target": "/sys/kernel/security",
90+ "source": "securityfs",
91+ "fstype": "securityfs",
92+ "options": "rw,nosuid,nodev,noexec,relatime"
93+ },
94+ {
95+ "target": "/sys/fs/cgroup",
96+ "source": "tmpfs",
97+ "fstype": "tmpfs",
98+ "options": "ro,nosuid,nodev,noexec,mode=755",
99+ "children": [
100+ {
101+ "target": "/sys/fs/cgroup/unified",
102+ "source": "cgroup2",
103+ "fstype": "cgroup2",
104+ "options": "rw,nosuid,nodev,noexec,relatime,nsdelegate"
105+ },
106+ {
107+ "target": "/sys/fs/cgroup/systemd",
108+ "source": "cgroup",
109+ "fstype": "cgroup",
110+ "options": "rw,nosuid,nodev,noexec,relatime,xattr,name=systemd"
111+ },
112+ {
113+ "target": "/sys/fs/cgroup/rdma",
114+ "source": "cgroup",
115+ "fstype": "cgroup",
116+ "options": "rw,nosuid,nodev,noexec,relatime,rdma"
117+ },
118+ {
119+ "target": "/sys/fs/cgroup/cpu,cpuacct",
120+ "source": "cgroup",
121+ "fstype": "cgroup",
122+ "options": "rw,nosuid,nodev,noexec,relatime,cpu,cpuacct"
123+ },
124+ {
125+ "target": "/sys/fs/cgroup/pids",
126+ "source": "cgroup",
127+ "fstype": "cgroup",
128+ "options": "rw,nosuid,nodev,noexec,relatime,pids"
129+ },
130+ {
131+ "target": "/sys/fs/cgroup/memory",
132+ "source": "cgroup",
133+ "fstype": "cgroup",
134+ "options": "rw,nosuid,nodev,noexec,relatime,memory"
135+ },
136+ {
137+ "target": "/sys/fs/cgroup/devices",
138+ "source": "cgroup",
139+ "fstype": "cgroup",
140+ "options": "rw,nosuid,nodev,noexec,relatime,devices"
141+ },
142+ {
143+ "target": "/sys/fs/cgroup/freezer",
144+ "source": "cgroup",
145+ "fstype": "cgroup",
146+ "options": "rw,nosuid,nodev,noexec,relatime,freezer"
147+ },
148+ {
149+ "target": "/sys/fs/cgroup/net_cls,net_prio",
150+ "source": "cgroup",
151+ "fstype": "cgroup",
152+ "options": "rw,nosuid,nodev,noexec,relatime,net_cls,net_prio"
153+ },
154+ {
155+ "target": "/sys/fs/cgroup/perf_event",
156+ "source": "cgroup",
157+ "fstype": "cgroup",
158+ "options": "rw,nosuid,nodev,noexec,relatime,perf_event"
159+ },
160+ {
161+ "target": "/sys/fs/cgroup/blkio",
162+ "source": "cgroup",
163+ "fstype": "cgroup",
164+ "options": "rw,nosuid,nodev,noexec,relatime,blkio"
165+ },
166+ {
167+ "target": "/sys/fs/cgroup/hugetlb",
168+ "source": "cgroup",
169+ "fstype": "cgroup",
170+ "options": "rw,nosuid,nodev,noexec,relatime,hugetlb"
171+ },
172+ {
173+ "target": "/sys/fs/cgroup/cpuset",
174+ "source": "cgroup",
175+ "fstype": "cgroup",
176+ "options": "rw,nosuid,nodev,noexec,relatime,cpuset"
177+ }
178+ ]
179+ },
180+ {
181+ "target": "/sys/fs/pstore",
182+ "source": "pstore",
183+ "fstype": "pstore",
184+ "options": "rw,nosuid,nodev,noexec,relatime"
185+ },
186+ {
187+ "target": "/sys/fs/bpf",
188+ "source": "none",
189+ "fstype": "bpf",
190+ "options": "rw,nosuid,nodev,noexec,relatime,mode=700"
191+ },
192+ {
193+ "target": "/sys/kernel/debug",
194+ "source": "debugfs",
195+ "fstype": "debugfs",
196+ "options": "rw,nosuid,nodev,noexec,relatime"
197+ },
198+ {
199+ "target": "/sys/kernel/tracing",
200+ "source": "tracefs",
201+ "fstype": "tracefs",
202+ "options": "rw,nosuid,nodev,noexec,relatime"
203+ },
204+ {
205+ "target": "/sys/kernel/config",
206+ "source": "configfs",
207+ "fstype": "configfs",
208+ "options": "rw,nosuid,nodev,noexec,relatime"
209+ },
210+ {
211+ "target": "/sys/fs/fuse/connections",
212+ "source": "fusectl",
213+ "fstype": "fusectl",
214+ "options": "rw,nosuid,nodev,noexec,relatime"
215+ }
216+ ]
217+ },
218+ {
219+ "target": "/proc",
220+ "source": "proc",
221+ "fstype": "proc",
222+ "options": "rw,nosuid,nodev,noexec,relatime",
223+ "children": [
224+ {
225+ "target": "/proc/sys/fs/binfmt_misc",
226+ "source": "systemd-1",
227+ "fstype": "autofs",
228+ "options": "rw,relatime,fd=28,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=17022"
229+ }
230+ ]
231+ },
232+ {
233+ "target": "/dev",
234+ "source": "udev",
235+ "fstype": "devtmpfs",
236+ "options": "rw,nosuid,noexec,relatime,size=16353256k,nr_inodes=4088314,mode=755",
237+ "children": [
238+ {
239+ "target": "/dev/pts",
240+ "source": "devpts",
241+ "fstype": "devpts",
242+ "options": "rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000"
243+ },
244+ {
245+ "target": "/dev/shm",
246+ "source": "tmpfs",
247+ "fstype": "tmpfs",
248+ "options": "rw,nosuid,nodev"
249+ },
250+ {
251+ "target": "/dev/hugepages",
252+ "source": "hugetlbfs",
253+ "fstype": "hugetlbfs",
254+ "options": "rw,relatime,pagesize=2M"
255+ },
256+ {
257+ "target": "/dev/mqueue",
258+ "source": "mqueue",
259+ "fstype": "mqueue",
260+ "options": "rw,nosuid,nodev,noexec,relatime"
261+ }
262+ ]
263+ },
264+ {
265+ "target": "/run",
266+ "source": "tmpfs",
267+ "fstype": "tmpfs",
268+ "options": "rw,nosuid,nodev,noexec,relatime,size=3279500k,mode=755",
269+ "children": [
270+ {
271+ "target": "/run/lock",
272+ "source": "tmpfs",
273+ "fstype": "tmpfs",
274+ "options": "rw,nosuid,nodev,noexec,relatime,size=5120k"
275+ }
276+ ]
277+ },
278+ {
279+ "target": "/cdrom",
280+ "source": "/dev/sdc1",
281+ "fstype": "iso9660",
282+ "options": "ro,noatime,nojoliet,check=s,map=n,blocksize=2048"
283+ },
284+ {
285+ "target": "/rofs",
286+ "source": "/dev/loop0",
287+ "fstype": "squashfs",
288+ "options": "ro,noatime"
289+ },
290+ {
291+ "target": "/var/log",
292+ "source": "/dev/disk/by-label/writable[/install-logs-2020-05-04.0/log]",
293+ "fstype": "ext4",
294+ "options": "rw,relatime"
295+ },
296+ {
297+ "target": "/var/crash",
298+ "source": "/dev/disk/by-label/writable[/install-logs-2020-05-04.0/crash]",
299+ "fstype": "ext4",
300+ "options": "rw,relatime"
301+ },
302+ {
303+ "target": "/usr/lib/modules",
304+ "source": "/dev/loop2",
305+ "fstype": "squashfs",
306+ "options": "ro,relatime"
307+ },
308+ {
309+ "target": "/media/filesystem",
310+ "source": "/dev/loop0",
311+ "fstype": "squashfs",
312+ "options": "ro,relatime"
313+ },
314+ {
315+ "target": "/tmp",
316+ "source": "tmpfs",
317+ "fstype": "tmpfs",
318+ "options": "rw,nosuid,nodev,relatime"
319+ },
320+ {
321+ "target": "/snap/snapd/7264",
322+ "source": "/dev/loop3",
323+ "fstype": "squashfs",
324+ "options": "ro,nodev,relatime"
325+ },
326+ {
327+ "target": "/snap/core18/1705",
328+ "source": "/dev/loop4",
329+ "fstype": "squashfs",
330+ "options": "ro,nodev,relatime"
331+ },
332+ {
333+ "target": "/snap/subiquity/1772",
334+ "source": "/dev/loop5",
335+ "fstype": "squashfs",
336+ "options": "ro,nodev,relatime"
337+ }
338+ ]
339+ }
340+ ],
341+ "multipath": {
342+ "paths": [
343+ {
344+ "device": "nvme0n1",
345+ "serial": "S4EVNJ0N203359W ",
346+ "multipath": "[orphan]",
347+ "host_wwnn": "[undef]",
348+ "target_wwnn": "[undef]",
349+ "host_wwpn": "[undef]",
350+ "target_wwpn": "[undef]",
351+ "host_adapter": "[undef]"
352+ },
353+ {
354+ "device": "sda",
355+ "serial": "13207907000097410026",
356+ "multipath": "[orphan]",
357+ "host_wwnn": "[undef]",
358+ "target_wwnn": "ata-1.00",
359+ "host_wwpn": "[undef]",
360+ "target_wwpn": "[undef]",
361+ "host_adapter": "[undef]"
362+ },
363+ {
364+ "device": "sdb",
365+ "serial": "1320790700009741003D",
366+ "multipath": "[orphan]",
367+ "host_wwnn": "[undef]",
368+ "target_wwnn": "ata-2.00",
369+ "host_wwpn": "[undef]",
370+ "target_wwpn": "[undef]",
371+ "host_adapter": "[undef]"
372+ }
373+ ]
374+ },
375+ "lvm": {},
376+ "dasd": {},
377+ "raid": {
378+ "/dev/md127": {
379+ "DEVLINKS": "/dev/md/ubuntu-server:0 /dev/disk/by-id/md-name-ubuntu-server:0 /dev/disk/by-id/md-uuid-079fa971:c86dcd37:05c54ec1:b343dc99",
380+ "DEVNAME": "/dev/md127",
381+ "DEVPATH": "/devices/virtual/block/md127",
382+ "DEVTYPE": "disk",
383+ "MAJOR": "9",
384+ "MD_DEVICES": "2",
385+ "MD_DEVICE_ev_sda2_DEV": "/dev/sda2",
386+ "MD_DEVICE_ev_sda2_ROLE": "0",
387+ "MD_DEVICE_ev_sdb2_DEV": "/dev/sdb2",
388+ "MD_DEVICE_ev_sdb2_ROLE": "1",
389+ "MD_DEVNAME": "ubuntu-server:0",
390+ "MD_LEVEL": "raid1",
391+ "MD_METADATA": "1.2",
392+ "MD_NAME": "ubuntu-server:0",
393+ "MD_UUID": "079fa971:c86dcd37:05c54ec1:b343dc99",
394+ "MINOR": "127",
395+ "SUBSYSTEM": "block",
396+ "SYSTEMD_WANTS": "mdmonitor.service",
397+ "TAGS": ":systemd:",
398+ "USEC_INITIALIZED": "1083467",
399+ "raidlevel": "raid1",
400+ "devices": [
401+ "/dev/sda2",
402+ "/dev/sdb2"
403+ ],
404+ "spare_devices": []
405+ }
406+ },
407+ "zfs": {
408+ "zpools": {}
409+ },
410+ "blockdev": {
411+ "/dev/sdc": {
412+ "DEVLINKS": "/dev/disk/by-uuid/2020-04-23-08-02-07-00 /dev/disk/by-path/pci-0000:00:14.0-usb-0:11:1.0-scsi-0:0:0:0 /dev/disk/by-id/usb-Generic_Flash_Disk_72FFA457-0:0 /dev/disk/by-label/Ubuntu-Server\\x2020.04\\x20LTS\\x20amd64",
413+ "DEVNAME": "/dev/sdc",
414+ "DEVPATH": "/devices/pci0000:00/0000:00:14.0/usb3/3-11/3-11:1.0/host6/target6:0:0/6:0:0:0/block/sdc",
415+ "DEVTYPE": "disk",
416+ "ID_BUS": "usb",
417+ "ID_FS_BOOT_SYSTEM_ID": "EL\\x20TORITO\\x20SPECIFICATION",
418+ "ID_FS_LABEL": "Ubuntu-Server_20.04_LTS_amd64",
419+ "ID_FS_LABEL_ENC": "Ubuntu-Server\\x2020.04\\x20LTS\\x20amd64",
420+ "ID_FS_TYPE": "iso9660",
421+ "ID_FS_USAGE": "filesystem",
422+ "ID_FS_UUID": "2020-04-23-08-02-07-00",
423+ "ID_FS_UUID_ENC": "2020-04-23-08-02-07-00",
424+ "ID_FS_VERSION": "Joliet Extension",
425+ "ID_INSTANCE": "0:0",
426+ "ID_MODEL": "Flash_Disk",
427+ "ID_MODEL_ENC": "Flash\\x20Disk\\x20\\x20\\x20\\x20\\x20\\x20",
428+ "ID_MODEL_ID": "6387",
429+ "ID_PART_TABLE_TYPE": "dos",
430+ "ID_PART_TABLE_UUID": "36b64baf",
431+ "ID_PATH": "pci-0000:00:14.0-usb-0:11:1.0-scsi-0:0:0:0",
432+ "ID_PATH_TAG": "pci-0000_00_14_0-usb-0_11_1_0-scsi-0_0_0_0",
433+ "ID_REVISION": "8.07",
434+ "ID_SCSI": "1",
435+ "ID_SCSI_INQUIRY": "1",
436+ "ID_SERIAL": "Generic_Flash_Disk_72FFA457-0:0",
437+ "ID_SERIAL_SHORT": "72FFA457",
438+ "ID_TYPE": "disk",
439+ "ID_USB_DRIVER": "usb-storage",
440+ "ID_USB_INTERFACES": ":080650:",
441+ "ID_USB_INTERFACE_NUM": "00",
442+ "ID_VENDOR": "Generic",
443+ "ID_VENDOR_ENC": "Generic\\x20",
444+ "ID_VENDOR_ID": "058f",
445+ "MAJOR": "8",
446+ "MINOR": "32",
447+ "MPATH_SBIN_PATH": "/sbin",
448+ "SCSI_MODEL": "Flash_Disk",
449+ "SCSI_MODEL_ENC": "Flash\\x20Disk\\x20\\x20\\x20\\x20\\x20\\x20",
450+ "SCSI_REVISION": "8.07",
451+ "SCSI_TPGS": "0",
452+ "SCSI_TYPE": "disk",
453+ "SCSI_VENDOR": "Generic",
454+ "SCSI_VENDOR_ENC": "Generic\\x20",
455+ "SUBSYSTEM": "block",
456+ "TAGS": ":systemd:",
457+ "USEC_INITIALIZED": "2376183",
458+ "attrs": {
459+ "alignment_offset": "0",
460+ "bdi": null,
461+ "capability": "51",
462+ "dev": "8:32",
463+ "device": null,
464+ "discard_alignment": "0",
465+ "events": "media_change",
466+ "events_async": "",
467+ "events_poll_msecs": "-1",
468+ "ext_range": "256",
469+ "hidden": "0",
470+ "inflight": " 0 0",
471+ "range": "16",
472+ "removable": "1",
473+ "ro": "0",
474+ "size": "33409990656",
475+ "stat": " 15770 95 1885214 86569 1333 1088 284936 138030 0 40216 204400 0 0 0 0",
476+ "subsystem": "block",
477+ "uevent": "MAJOR=8\nMINOR=32\nDEVNAME=sdc\nDEVTYPE=disk"
478+ },
479+ "partitiontable": {
480+ "label": "dos",
481+ "id": "0x36b64baf",
482+ "device": "/dev/sdc",
483+ "unit": "sectors",
484+ "partitions": [
485+ {
486+ "node": "/dev/sdc1",
487+ "start": 0,
488+ "size": 1859584,
489+ "type": "0",
490+ "bootable": true
491+ },
492+ {
493+ "node": "/dev/sdc2",
494+ "start": 21052,
495+ "size": 7936,
496+ "type": "ef"
497+ },
498+ {
499+ "node": "/dev/sdc3",
500+ "start": 1859584,
501+ "size": 63394304,
502+ "type": "83"
503+ }
504+ ]
505+ }
506+ },
507+ "/dev/sdc1": {
508+ "DEVLINKS": "/dev/disk/by-id/usb-Generic_Flash_Disk_72FFA457-0:0-part1 /dev/disk/by-partuuid/36b64baf-01 /dev/disk/by-uuid/2020-04-23-08-02-07-00 /dev/disk/by-path/pci-0000:00:14.0-usb-0:11:1.0-scsi-0:0:0:0-part1 /dev/disk/by-label/Ubuntu-Server\\x2020.04\\x20LTS\\x20amd64",
509+ "DEVNAME": "/dev/sdc1",
510+ "DEVPATH": "/devices/pci0000:00/0000:00:14.0/usb3/3-11/3-11:1.0/host6/target6:0:0/6:0:0:0/block/sdc/sdc1",
511+ "DEVTYPE": "partition",
512+ "ID_BUS": "usb",
513+ "ID_FS_BOOT_SYSTEM_ID": "EL\\x20TORITO\\x20SPECIFICATION",
514+ "ID_FS_LABEL": "Ubuntu-Server_20.04_LTS_amd64",
515+ "ID_FS_LABEL_ENC": "Ubuntu-Server\\x2020.04\\x20LTS\\x20amd64",
516+ "ID_FS_TYPE": "iso9660",
517+ "ID_FS_USAGE": "filesystem",
518+ "ID_FS_UUID": "2020-04-23-08-02-07-00",
519+ "ID_FS_UUID_ENC": "2020-04-23-08-02-07-00",
520+ "ID_FS_VERSION": "Joliet Extension",
521+ "ID_INSTANCE": "0:0",
522+ "ID_MODEL": "Flash_Disk",
523+ "ID_MODEL_ENC": "Flash\\x20Disk\\x20\\x20\\x20\\x20\\x20\\x20",
524+ "ID_MODEL_ID": "6387",
525+ "ID_PART_ENTRY_DISK": "8:32",
526+ "ID_PART_ENTRY_FLAGS": "0x80",
527+ "ID_PART_ENTRY_NUMBER": "1",
528+ "ID_PART_ENTRY_OFFSET": "0",
529+ "ID_PART_ENTRY_SCHEME": "dos",
530+ "ID_PART_ENTRY_SIZE": "1859584",
531+ "ID_PART_ENTRY_TYPE": "0x0",
532+ "ID_PART_ENTRY_UUID": "36b64baf-01",
533+ "ID_PART_TABLE_TYPE": "dos",
534+ "ID_PART_TABLE_UUID": "36b64baf",
535+ "ID_PATH": "pci-0000:00:14.0-usb-0:11:1.0-scsi-0:0:0:0",
536+ "ID_PATH_TAG": "pci-0000_00_14_0-usb-0_11_1_0-scsi-0_0_0_0",
537+ "ID_REVISION": "8.07",
538+ "ID_SCSI": "1",
539+ "ID_SCSI_INQUIRY": "1",
540+ "ID_SERIAL": "Generic_Flash_Disk_72FFA457-0:0",
541+ "ID_SERIAL_SHORT": "72FFA457",
542+ "ID_TYPE": "disk",
543+ "ID_USB_DRIVER": "usb-storage",
544+ "ID_USB_INTERFACES": ":080650:",
545+ "ID_USB_INTERFACE_NUM": "00",
546+ "ID_VENDOR": "Generic",
547+ "ID_VENDOR_ENC": "Generic\\x20",
548+ "ID_VENDOR_ID": "058f",
549+ "MAJOR": "8",
550+ "MINOR": "33",
551+ "PARTN": "1",
552+ "SCSI_MODEL": "Flash_Disk",
553+ "SCSI_MODEL_ENC": "Flash\\x20Disk\\x20\\x20\\x20\\x20\\x20\\x20",
554+ "SCSI_REVISION": "8.07",
555+ "SCSI_TPGS": "0",
556+ "SCSI_TYPE": "disk",
557+ "SCSI_VENDOR": "Generic",
558+ "SCSI_VENDOR_ENC": "Generic\\x20",
559+ "SUBSYSTEM": "block",
560+ "TAGS": ":systemd:",
561+ "USEC_INITIALIZED": "13873530",
562+ "attrs": {
563+ "alignment_offset": "0",
564+ "dev": "8:33",
565+ "discard_alignment": "0",
566+ "inflight": " 0 0",
567+ "partition": "1",
568+ "ro": "0",
569+ "size": "952107008",
570+ "start": "0",
571+ "stat": " 15342 92 1866238 81581 0 0 0 0 0 34464 65564 0 0 0 0",
572+ "subsystem": "block",
573+ "uevent": "MAJOR=8\nMINOR=33\nDEVNAME=sdc1\nDEVTYPE=partition\nPARTN=1"
574+ },
575+ "partitiontable": {
576+ "label": "dos",
577+ "id": "0x36b64baf",
578+ "device": "/dev/sdc1",
579+ "unit": "sectors",
580+ "partitions": [
581+ {
582+ "node": "/dev/sdc1p1",
583+ "start": 0,
584+ "size": 1859584,
585+ "type": "0",
586+ "bootable": true
587+ },
588+ {
589+ "node": "/dev/sdc1p2",
590+ "start": 21052,
591+ "size": 7936,
592+ "type": "ef"
593+ },
594+ {
595+ "node": "/dev/sdc1p3",
596+ "start": 1859584,
597+ "size": 63394304,
598+ "type": "83"
599+ }
600+ ]
601+ }
602+ },
603+ "/dev/sdc2": {
604+ "DEVLINKS": "/dev/disk/by-partuuid/36b64baf-02 /dev/disk/by-id/usb-Generic_Flash_Disk_72FFA457-0:0-part2 /dev/disk/by-path/pci-0000:00:14.0-usb-0:11:1.0-scsi-0:0:0:0-part2 /dev/disk/by-uuid/1AC3-20ED",
605+ "DEVNAME": "/dev/sdc2",
606+ "DEVPATH": "/devices/pci0000:00/0000:00:14.0/usb3/3-11/3-11:1.0/host6/target6:0:0/6:0:0:0/block/sdc/sdc2",
607+ "DEVTYPE": "partition",
608+ "ID_BUS": "usb",
609+ "ID_FS_TYPE": "vfat",
610+ "ID_FS_USAGE": "filesystem",
611+ "ID_FS_UUID": "1AC3-20ED",
612+ "ID_FS_UUID_ENC": "1AC3-20ED",
613+ "ID_FS_VERSION": "FAT12",
614+ "ID_INSTANCE": "0:0",
615+ "ID_MODEL": "Flash_Disk",
616+ "ID_MODEL_ENC": "Flash\\x20Disk\\x20\\x20\\x20\\x20\\x20\\x20",
617+ "ID_MODEL_ID": "6387",
618+ "ID_PART_ENTRY_DISK": "8:32",
619+ "ID_PART_ENTRY_NUMBER": "2",
620+ "ID_PART_ENTRY_OFFSET": "21052",
621+ "ID_PART_ENTRY_SCHEME": "dos",
622+ "ID_PART_ENTRY_SIZE": "7936",
623+ "ID_PART_ENTRY_TYPE": "0xef",
624+ "ID_PART_ENTRY_UUID": "36b64baf-02",
625+ "ID_PART_TABLE_TYPE": "dos",
626+ "ID_PART_TABLE_UUID": "36b64baf",
627+ "ID_PATH": "pci-0000:00:14.0-usb-0:11:1.0-scsi-0:0:0:0",
628+ "ID_PATH_TAG": "pci-0000_00_14_0-usb-0_11_1_0-scsi-0_0_0_0",
629+ "ID_REVISION": "8.07",
630+ "ID_SCSI": "1",
631+ "ID_SCSI_INQUIRY": "1",
632+ "ID_SERIAL": "Generic_Flash_Disk_72FFA457-0:0",
633+ "ID_SERIAL_SHORT": "72FFA457",
634+ "ID_TYPE": "disk",
635+ "ID_USB_DRIVER": "usb-storage",
636+ "ID_USB_INTERFACES": ":080650:",
637+ "ID_USB_INTERFACE_NUM": "00",
638+ "ID_VENDOR": "Generic",
639+ "ID_VENDOR_ENC": "Generic\\x20",
640+ "ID_VENDOR_ID": "058f",
641+ "MAJOR": "8",
642+ "MINOR": "34",
643+ "PARTN": "2",
644+ "SCSI_MODEL": "Flash_Disk",
645+ "SCSI_MODEL_ENC": "Flash\\x20Disk\\x20\\x20\\x20\\x20\\x20\\x20",
646+ "SCSI_REVISION": "8.07",
647+ "SCSI_TPGS": "0",
648+ "SCSI_TYPE": "disk",
649+ "SCSI_VENDOR": "Generic",
650+ "SCSI_VENDOR_ENC": "Generic\\x20",
651+ "SUBSYSTEM": "block",
652+ "TAGS": ":systemd:",
653+ "USEC_INITIALIZED": "13544949",
654+ "attrs": {
655+ "alignment_offset": "0",
656+ "dev": "8:34",
657+ "discard_alignment": "0",
658+ "inflight": " 0 0",
659+ "partition": "2",
660+ "ro": "0",
661+ "size": "4063232",
662+ "start": "21052",
663+ "stat": " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0",
664+ "subsystem": "block",
665+ "uevent": "MAJOR=8\nMINOR=34\nDEVNAME=sdc2\nDEVTYPE=partition\nPARTN=2"
666+ },
667+ "partitiontable": {
668+ "label": "dos",
669+ "id": "0x00000000",
670+ "device": "/dev/sdc2",
671+ "unit": "sectors",
672+ "grain": "512",
673+ "partitions": []
674+ }
675+ },
676+ "/dev/sdc3": {
677+ "DEVLINKS": "/dev/disk/by-partuuid/36b64baf-03 /dev/disk/by-id/usb-Generic_Flash_Disk_72FFA457-0:0-part3 /dev/disk/by-uuid/8bcd1ba9-a05d-4f66-b64a-2d9042753ee7 /dev/disk/by-label/writable /dev/disk/by-path/pci-0000:00:14.0-usb-0:11:1.0-scsi-0:0:0:0-part3",
678+ "DEVNAME": "/dev/sdc3",
679+ "DEVPATH": "/devices/pci0000:00/0000:00:14.0/usb3/3-11/3-11:1.0/host6/target6:0:0/6:0:0:0/block/sdc/sdc3",
680+ "DEVTYPE": "partition",
681+ "ID_BUS": "usb",
682+ "ID_FS_LABEL": "writable",
683+ "ID_FS_LABEL_ENC": "writable",
684+ "ID_FS_TYPE": "ext4",
685+ "ID_FS_USAGE": "filesystem",
686+ "ID_FS_UUID": "8bcd1ba9-a05d-4f66-b64a-2d9042753ee7",
687+ "ID_FS_UUID_ENC": "8bcd1ba9-a05d-4f66-b64a-2d9042753ee7",
688+ "ID_FS_VERSION": "1.0",
689+ "ID_INSTANCE": "0:0",
690+ "ID_MODEL": "Flash_Disk",
691+ "ID_MODEL_ENC": "Flash\\x20Disk\\x20\\x20\\x20\\x20\\x20\\x20",
692+ "ID_MODEL_ID": "6387",
693+ "ID_PART_ENTRY_DISK": "8:32",
694+ "ID_PART_ENTRY_NUMBER": "3",
695+ "ID_PART_ENTRY_OFFSET": "1859584",
696+ "ID_PART_ENTRY_SCHEME": "dos",
697+ "ID_PART_ENTRY_SIZE": "63394304",
698+ "ID_PART_ENTRY_TYPE": "0x83",
699+ "ID_PART_ENTRY_UUID": "36b64baf-03",
700+ "ID_PART_TABLE_TYPE": "dos",
701+ "ID_PART_TABLE_UUID": "36b64baf",
702+ "ID_PATH": "pci-0000:00:14.0-usb-0:11:1.0-scsi-0:0:0:0",
703+ "ID_PATH_TAG": "pci-0000_00_14_0-usb-0_11_1_0-scsi-0_0_0_0",
704+ "ID_REVISION": "8.07",
705+ "ID_SCSI": "1",
706+ "ID_SCSI_INQUIRY": "1",
707+ "ID_SERIAL": "Generic_Flash_Disk_72FFA457-0:0",
708+ "ID_SERIAL_SHORT": "72FFA457",
709+ "ID_TYPE": "disk",
710+ "ID_USB_DRIVER": "usb-storage",
711+ "ID_USB_INTERFACES": ":080650:",
712+ "ID_USB_INTERFACE_NUM": "00",
713+ "ID_VENDOR": "Generic",
714+ "ID_VENDOR_ENC": "Generic\\x20",
715+ "ID_VENDOR_ID": "058f",
716+ "MAJOR": "8",
717+ "MINOR": "35",
718+ "PARTN": "3",
719+ "SCSI_MODEL": "Flash_Disk",
720+ "SCSI_MODEL_ENC": "Flash\\x20Disk\\x20\\x20\\x20\\x20\\x20\\x20",
721+ "SCSI_REVISION": "8.07",
722+ "SCSI_TPGS": "0",
723+ "SCSI_TYPE": "disk",
724+ "SCSI_VENDOR": "Generic",
725+ "SCSI_VENDOR_ENC": "Generic\\x20",
726+ "SUBSYSTEM": "block",
727+ "TAGS": ":systemd:",
728+ "USEC_INITIALIZED": "12691034",
729+ "attrs": {
730+ "alignment_offset": "0",
731+ "dev": "8:35",
732+ "discard_alignment": "0",
733+ "inflight": " 0 0",
734+ "partition": "3",
735+ "ro": "0",
736+ "size": "32457883648",
737+ "start": "1859584",
738+ "stat": " 211 3 10310 4443 1332 1088 284928 137320 0 5916 137836 0 0 0 0",
739+ "subsystem": "block",
740+ "uevent": "MAJOR=8\nMINOR=35\nDEVNAME=sdc3\nDEVTYPE=partition\nPARTN=3"
741+ }
742+ },
743+ "/dev/nvme0n1": {
744+ "DEVLINKS": "/dev/disk/by-id/nvme-Samsung_SSD_970_EVO_Plus_500GB_S4EVNJ0N203359W /dev/disk/by-id/nvme-eui.0025385201404936 /dev/disk/by-path/pci-0000:04:00.0-nvme-1",
745+ "DEVNAME": "/dev/nvme0n1",
746+ "DEVPATH": "/devices/pci0000:00/0000:00:1c.4/0000:04:00.0/nvme/nvme0/nvme0n1",
747+ "DEVTYPE": "disk",
748+ "DM_MULTIPATH_DEVICE_PATH": "0",
749+ "ID_MODEL": "Samsung SSD 970 EVO Plus 500GB",
750+ "ID_PATH": "pci-0000:04:00.0-nvme-1",
751+ "ID_PATH_TAG": "pci-0000_04_00_0-nvme-1",
752+ "ID_REVISION": "2B2QEXM7",
753+ "ID_SERIAL": "Samsung SSD 970 EVO Plus 500GB_S4EVNJ0N203359W",
754+ "ID_SERIAL_SHORT": "S4EVNJ0N203359W",
755+ "ID_WWN": "eui.0025385201404936",
756+ "MAJOR": "259",
757+ "MINOR": "0",
758+ "MPATH_SBIN_PATH": "/sbin",
759+ "SUBSYSTEM": "block",
760+ "TAGS": ":systemd:",
761+ "USEC_INITIALIZED": "1075625",
762+ "attrs": {
763+ "alignment_offset": "0",
764+ "bdi": null,
765+ "capability": "50",
766+ "dev": "259:0",
767+ "device": null,
768+ "discard_alignment": "0",
769+ "eui": "00 25 38 52 01 40 49 36",
770+ "events": "",
771+ "events_async": "",
772+ "events_poll_msecs": "-1",
773+ "ext_range": "256",
774+ "hidden": "0",
775+ "inflight": " 0 0",
776+ "nsid": "1",
777+ "range": "0",
778+ "removable": "0",
779+ "ro": "0",
780+ "size": "500107862016",
781+ "stat": " 646 0 29360 93 0 0 0 0 0 172 28 0 0 0 0",
782+ "subsystem": "block",
783+ "uevent": "MAJOR=259\nMINOR=0\nDEVNAME=nvme0n1\nDEVTYPE=disk",
784+ "wwid": "eui.0025385201404936"
785+ }
786+ },
787+ "/dev/sda": {
788+ "DEVLINKS": "/dev/disk/by-id/scsi-30000000000000000 /dev/disk/by-id/scsi-SATA_Corsair_Force_GS_13207907000097410026 /dev/disk/by-id/wwn-0x0000000000000000 /dev/disk/by-path/pci-0000:00:1f.2-ata-1 /dev/disk/by-id/scsi-0ATA_Corsair_Force_GS_13207907000097410026 /dev/disk/by-id/ata-Corsair_Force_GS_13207907000097410026 /dev/disk/by-id/scsi-1ATA_Corsair_Force_GS_13207907000097410026",
789+ "DEVNAME": "/dev/sda",
790+ "DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda",
791+ "DEVTYPE": "disk",
792+ "DM_MULTIPATH_DEVICE_PATH": "0",
793+ "ID_ATA": "1",
794+ "ID_BUS": "ata",
795+ "ID_MODEL": "Corsair_Force_GS",
796+ "ID_MODEL_ENC": "Corsair\\x20Force\\x20GS",
797+ "ID_PART_TABLE_TYPE": "gpt",
798+ "ID_PART_TABLE_UUID": "f3254c46-a7dc-4a2b-8ed1-acb53a05ce0a",
799+ "ID_PATH": "pci-0000:00:1f.2-ata-1",
800+ "ID_PATH_TAG": "pci-0000_00_1f_2-ata-1",
801+ "ID_REVISION": "A",
802+ "ID_SCSI": "1",
803+ "ID_SCSI_INQUIRY": "1",
804+ "ID_SERIAL": "Corsair_Force_GS_13207907000097410026",
805+ "ID_SERIAL_SHORT": "13207907000097410026",
806+ "ID_TYPE": "disk",
807+ "ID_VENDOR": "ATA",
808+ "ID_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
809+ "ID_WWN": "0x0000000000000000",
810+ "ID_WWN_WITH_EXTENSION": "0x0000000000000000",
811+ "MAJOR": "8",
812+ "MINOR": "0",
813+ "MPATH_SBIN_PATH": "/sbin",
814+ "SCSI_IDENT_LUN_ATA": "Corsair_Force_GS_13207907000097410026",
815+ "SCSI_IDENT_LUN_NAA_LOCAL": "0000000000000000",
816+ "SCSI_IDENT_LUN_T10": "ATA_Corsair_Force_GS_13207907000097410026",
817+ "SCSI_IDENT_LUN_VENDOR": "13207907000097410026",
818+ "SCSI_IDENT_SERIAL": "13207907000097410026",
819+ "SCSI_MODEL": "Corsair_Force_GS",
820+ "SCSI_MODEL_ENC": "Corsair\\x20Force\\x20GS",
821+ "SCSI_REVISION": "A",
822+ "SCSI_TPGS": "0",
823+ "SCSI_TYPE": "disk",
824+ "SCSI_VENDOR": "ATA",
825+ "SCSI_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
826+ "SUBSYSTEM": "block",
827+ "TAGS": ":systemd:",
828+ "USEC_INITIALIZED": "1078655",
829+ "attrs": {
830+ "alignment_offset": "0",
831+ "bdi": null,
832+ "capability": "50",
833+ "dev": "8:0",
834+ "device": null,
835+ "discard_alignment": "0",
836+ "events": "",
837+ "events_async": "",
838+ "events_poll_msecs": "-1",
839+ "ext_range": "256",
840+ "hidden": "0",
841+ "inflight": " 0 0",
842+ "range": "16",
843+ "removable": "0",
844+ "ro": "0",
845+ "size": "128035676160",
846+ "stat": " 711 0 27630 117 1 0 1 0 0 248 0 0 0 0 0",
847+ "subsystem": "block",
848+ "uevent": "MAJOR=8\nMINOR=0\nDEVNAME=sda\nDEVTYPE=disk"
849+ },
850+ "partitiontable": {
851+ "label": "gpt",
852+ "id": "F3254C46-A7DC-4A2B-8ED1-ACB53A05CE0A",
853+ "device": "/dev/sda",
854+ "unit": "sectors",
855+ "firstlba": 34,
856+ "lastlba": 250069646,
857+ "partitions": [
858+ {
859+ "node": "/dev/sda1",
860+ "start": 2048,
861+ "size": 1,
862+ "type": "21686148-6449-6E6F-744E-656564454649",
863+ "uuid": "91F8E67C-5675-4B6B-B0C4-54B990FBC684",
864+ "name": "BIOS boot partition"
865+ },
866+ {
867+ "node": "/dev/sda2",
868+ "start": 4096,
869+ "size": 247463936,
870+ "type": "0FC63DAF-8483-4772-8E79-3D69D8477DE4",
871+ "uuid": "2942FC77-138E-4269-9850-9E80D0D1E13B",
872+ "name": "Linux filesystem"
873+ }
874+ ]
875+ }
876+ },
877+ "/dev/sda1": {
878+ "DEVLINKS": "/dev/disk/by-id/ata-Corsair_Force_GS_13207907000097410026-part1 /dev/disk/by-id/wwn-0x0000000000000000-part1 /dev/disk/by-path/pci-0000:00:1f.2-ata-1-part1 /dev/disk/by-id/scsi-0ATA_Corsair_Force_GS_13207907000097410026-part1 /dev/disk/by-partuuid/91f8e67c-5675-4b6b-b0c4-54b990fbc684 /dev/disk/by-partlabel/BIOS\\x20boot\\x20partition /dev/disk/by-id/scsi-SATA_Corsair_Force_GS_13207907000097410026-part1 /dev/disk/by-id/scsi-30000000000000000-part1 /dev/disk/by-id/scsi-1ATA_Corsair_Force_GS_13207907000097410026-part1",
879+ "DEVNAME": "/dev/sda1",
880+ "DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda1",
881+ "DEVTYPE": "partition",
882+ "DM_MULTIPATH_DEVICE_PATH": "0",
883+ "ID_ATA": "1",
884+ "ID_BUS": "ata",
885+ "ID_MODEL": "Corsair_Force_GS",
886+ "ID_MODEL_ENC": "Corsair\\x20Force\\x20GS",
887+ "ID_PART_ENTRY_DISK": "8:0",
888+ "ID_PART_ENTRY_NAME": "BIOS\\x20boot\\x20partition",
889+ "ID_PART_ENTRY_NUMBER": "1",
890+ "ID_PART_ENTRY_OFFSET": "2048",
891+ "ID_PART_ENTRY_SCHEME": "gpt",
892+ "ID_PART_ENTRY_SIZE": "1",
893+ "ID_PART_ENTRY_TYPE": "21686148-6449-6e6f-744e-656564454649",
894+ "ID_PART_ENTRY_UUID": "91f8e67c-5675-4b6b-b0c4-54b990fbc684",
895+ "ID_PART_TABLE_TYPE": "gpt",
896+ "ID_PART_TABLE_UUID": "f3254c46-a7dc-4a2b-8ed1-acb53a05ce0a",
897+ "ID_PATH": "pci-0000:00:1f.2-ata-1",
898+ "ID_PATH_TAG": "pci-0000_00_1f_2-ata-1",
899+ "ID_REVISION": "A",
900+ "ID_SCSI": "1",
901+ "ID_SCSI_INQUIRY": "1",
902+ "ID_SERIAL": "Corsair_Force_GS_13207907000097410026",
903+ "ID_SERIAL_SHORT": "13207907000097410026",
904+ "ID_TYPE": "disk",
905+ "ID_VENDOR": "ATA",
906+ "ID_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
907+ "ID_WWN": "0x0000000000000000",
908+ "ID_WWN_WITH_EXTENSION": "0x0000000000000000",
909+ "MAJOR": "8",
910+ "MINOR": "1",
911+ "PARTN": "1",
912+ "PARTNAME": "BIOS boot partition",
913+ "SCSI_IDENT_LUN_ATA": "Corsair_Force_GS_13207907000097410026",
914+ "SCSI_IDENT_LUN_NAA_LOCAL": "0000000000000000",
915+ "SCSI_IDENT_LUN_T10": "ATA_Corsair_Force_GS_13207907000097410026",
916+ "SCSI_IDENT_LUN_VENDOR": "13207907000097410026",
917+ "SCSI_IDENT_SERIAL": "13207907000097410026",
918+ "SCSI_MODEL": "Corsair_Force_GS",
919+ "SCSI_MODEL_ENC": "Corsair\\x20Force\\x20GS",
920+ "SCSI_REVISION": "A",
921+ "SCSI_TPGS": "0",
922+ "SCSI_TYPE": "disk",
923+ "SCSI_VENDOR": "ATA",
924+ "SCSI_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
925+ "SUBSYSTEM": "block",
926+ "TAGS": ":systemd:",
927+ "USEC_INITIALIZED": "1081180",
928+ "attrs": {
929+ "alignment_offset": "0",
930+ "dev": "8:1",
931+ "discard_alignment": "0",
932+ "inflight": " 0 0",
933+ "partition": "1",
934+ "ro": "0",
935+ "size": "512",
936+ "start": "2048",
937+ "stat": " 12 0 26 7 0 0 0 0 0 44 0 0 0 0 0",
938+ "subsystem": "block",
939+ "uevent": "MAJOR=8\nMINOR=1\nDEVNAME=sda1\nDEVTYPE=partition\nPARTN=1\nPARTNAME=BIOS boot partition"
940+ }
941+ },
942+ "/dev/sda2": {
943+ "DEVLINKS": "/dev/disk/by-id/scsi-30000000000000000-part2 /dev/disk/by-partlabel/Linux\\x20filesystem /dev/disk/by-id/scsi-0ATA_Corsair_Force_GS_13207907000097410026-part2 /dev/disk/by-id/scsi-SATA_Corsair_Force_GS_13207907000097410026-part2 /dev/disk/by-id/ata-Corsair_Force_GS_13207907000097410026-part2 /dev/disk/by-id/scsi-1ATA_Corsair_Force_GS_13207907000097410026-part2 /dev/disk/by-path/pci-0000:00:1f.2-ata-1-part2 /dev/disk/by-id/wwn-0x0000000000000000-part2 /dev/disk/by-partuuid/2942fc77-138e-4269-9850-9e80d0d1e13b",
944+ "DEVNAME": "/dev/sda2",
945+ "DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda2",
946+ "DEVTYPE": "partition",
947+ "DM_MULTIPATH_DEVICE_PATH": "0",
948+ "ID_ATA": "1",
949+ "ID_BUS": "ata",
950+ "ID_FS_LABEL": "ubuntu-server:0",
951+ "ID_FS_LABEL_ENC": "ubuntu-server:0",
952+ "ID_FS_TYPE": "linux_raid_member",
953+ "ID_FS_USAGE": "raid",
954+ "ID_FS_UUID": "079fa971-c86d-cd37-05c5-4ec1b343dc99",
955+ "ID_FS_UUID_ENC": "079fa971-c86d-cd37-05c5-4ec1b343dc99",
956+ "ID_FS_UUID_SUB": "383e86fc-6472-2d62-e62b-bec2529b2c2d",
957+ "ID_FS_UUID_SUB_ENC": "383e86fc-6472-2d62-e62b-bec2529b2c2d",
958+ "ID_FS_VERSION": "1.2",
959+ "ID_MODEL": "Corsair_Force_GS",
960+ "ID_MODEL_ENC": "Corsair\\x20Force\\x20GS",
961+ "ID_PART_ENTRY_DISK": "8:0",
962+ "ID_PART_ENTRY_NAME": "Linux\\x20filesystem",
963+ "ID_PART_ENTRY_NUMBER": "2",
964+ "ID_PART_ENTRY_OFFSET": "4096",
965+ "ID_PART_ENTRY_SCHEME": "gpt",
966+ "ID_PART_ENTRY_SIZE": "247463936",
967+ "ID_PART_ENTRY_TYPE": "0fc63daf-8483-4772-8e79-3d69d8477de4",
968+ "ID_PART_ENTRY_UUID": "2942fc77-138e-4269-9850-9e80d0d1e13b",
969+ "ID_PART_TABLE_TYPE": "gpt",
970+ "ID_PART_TABLE_UUID": "f3254c46-a7dc-4a2b-8ed1-acb53a05ce0a",
971+ "ID_PATH": "pci-0000:00:1f.2-ata-1",
972+ "ID_PATH_TAG": "pci-0000_00_1f_2-ata-1",
973+ "ID_REVISION": "A",
974+ "ID_SCSI": "1",
975+ "ID_SCSI_INQUIRY": "1",
976+ "ID_SERIAL": "Corsair_Force_GS_13207907000097410026",
977+ "ID_SERIAL_SHORT": "13207907000097410026",
978+ "ID_TYPE": "disk",
979+ "ID_VENDOR": "ATA",
980+ "ID_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
981+ "ID_WWN": "0x0000000000000000",
982+ "ID_WWN_WITH_EXTENSION": "0x0000000000000000",
983+ "MAJOR": "8",
984+ "MINOR": "2",
985+ "PARTN": "2",
986+ "PARTNAME": "Linux filesystem",
987+ "SCSI_IDENT_LUN_ATA": "Corsair_Force_GS_13207907000097410026",
988+ "SCSI_IDENT_LUN_NAA_LOCAL": "0000000000000000",
989+ "SCSI_IDENT_LUN_T10": "ATA_Corsair_Force_GS_13207907000097410026",
990+ "SCSI_IDENT_LUN_VENDOR": "13207907000097410026",
991+ "SCSI_IDENT_SERIAL": "13207907000097410026",
992+ "SCSI_MODEL": "Corsair_Force_GS",
993+ "SCSI_MODEL_ENC": "Corsair\\x20Force\\x20GS",
994+ "SCSI_REVISION": "A",
995+ "SCSI_TPGS": "0",
996+ "SCSI_TYPE": "disk",
997+ "SCSI_VENDOR": "ATA",
998+ "SCSI_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
999+ "SUBSYSTEM": "block",
1000+ "TAGS": ":systemd:",
1001+ "USEC_INITIALIZED": "1083076",
1002+ "attrs": {
1003+ "alignment_offset": "0",
1004+ "dev": "8:2",
1005+ "discard_alignment": "0",
1006+ "inflight": " 0 0",
1007+ "partition": "2",
1008+ "ro": "0",
1009+ "size": "126701535232",
1010+ "start": "4096",
1011+ "stat": " 600 0 21796 80 1 0 1 0 0 188 0 0 0 0 0",
1012+ "subsystem": "block",
1013+ "uevent": "MAJOR=8\nMINOR=2\nDEVNAME=sda2\nDEVTYPE=partition\nPARTN=2\nPARTNAME=Linux filesystem"
1014+ }
1015+ },
1016+ "/dev/sdb": {
1017+ "DEVLINKS": "/dev/disk/by-id/scsi-1ATA_Corsair_Force_GS_1320790700009741003D /dev/disk/by-id/ata-Corsair_Force_GS_1320790700009741003D /dev/disk/by-id/wwn-0x0000000000000000 /dev/disk/by-id/scsi-30000000000000000 /dev/disk/by-id/scsi-0ATA_Corsair_Force_GS_1320790700009741003D /dev/disk/by-path/pci-0000:00:1f.2-ata-2 /dev/disk/by-id/scsi-SATA_Corsair_Force_GS_1320790700009741003D",
1018+ "DEVNAME": "/dev/sdb",
1019+ "DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb",
1020+ "DEVTYPE": "disk",
1021+ "DM_MULTIPATH_DEVICE_PATH": "0",
1022+ "ID_ATA": "1",
1023+ "ID_BUS": "ata",
1024+ "ID_MODEL": "Corsair_Force_GS",
1025+ "ID_MODEL_ENC": "Corsair\\x20Force\\x20GS",
1026+ "ID_PART_TABLE_TYPE": "gpt",
1027+ "ID_PART_TABLE_UUID": "f3254c46-a7dc-4a2b-8ed1-acb53a05ce0a",
1028+ "ID_PATH": "pci-0000:00:1f.2-ata-2",
1029+ "ID_PATH_TAG": "pci-0000_00_1f_2-ata-2",
1030+ "ID_REVISION": "A",
1031+ "ID_SCSI": "1",
1032+ "ID_SCSI_INQUIRY": "1",
1033+ "ID_SERIAL": "Corsair_Force_GS_1320790700009741003D",
1034+ "ID_SERIAL_SHORT": "1320790700009741003D",
1035+ "ID_TYPE": "disk",
1036+ "ID_VENDOR": "ATA",
1037+ "ID_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
1038+ "ID_WWN": "0x0000000000000000",
1039+ "ID_WWN_WITH_EXTENSION": "0x0000000000000000",
1040+ "MAJOR": "8",
1041+ "MINOR": "16",
1042+ "MPATH_SBIN_PATH": "/sbin",
1043+ "SCSI_IDENT_LUN_ATA": "Corsair_Force_GS_1320790700009741003D",
1044+ "SCSI_IDENT_LUN_NAA_LOCAL": "0000000000000000",
1045+ "SCSI_IDENT_LUN_T10": "ATA_Corsair_Force_GS_1320790700009741003D",
1046+ "SCSI_IDENT_LUN_VENDOR": "1320790700009741003D",
1047+ "SCSI_IDENT_SERIAL": "1320790700009741003D",
1048+ "SCSI_MODEL": "Corsair_Force_GS",
1049+ "SCSI_MODEL_ENC": "Corsair\\x20Force\\x20GS",
1050+ "SCSI_REVISION": "A",
1051+ "SCSI_TPGS": "0",
1052+ "SCSI_TYPE": "disk",
1053+ "SCSI_VENDOR": "ATA",
1054+ "SCSI_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
1055+ "SUBSYSTEM": "block",
1056+ "TAGS": ":systemd:",
1057+ "USEC_INITIALIZED": "1079071",
1058+ "attrs": {
1059+ "alignment_offset": "0",
1060+ "bdi": null,
1061+ "capability": "50",
1062+ "dev": "8:16",
1063+ "device": null,
1064+ "discard_alignment": "0",
1065+ "events": "",
1066+ "events_async": "",
1067+ "events_poll_msecs": "-1",
1068+ "ext_range": "256",
1069+ "hidden": "0",
1070+ "inflight": " 0 0",
1071+ "range": "16",
1072+ "removable": "0",
1073+ "ro": "0",
1074+ "size": "128035676160",
1075+ "stat": " 298 0 12529 72 1 0 1 0 0 188 0 0 0 0 0",
1076+ "subsystem": "block",
1077+ "uevent": "MAJOR=8\nMINOR=16\nDEVNAME=sdb\nDEVTYPE=disk"
1078+ },
1079+ "partitiontable": {
1080+ "label": "gpt",
1081+ "id": "F3254C46-A7DC-4A2B-8ED1-ACB53A05CE0A",
1082+ "device": "/dev/sdb",
1083+ "unit": "sectors",
1084+ "firstlba": 34,
1085+ "lastlba": 250069646,
1086+ "partitions": [
1087+ {
1088+ "node": "/dev/sdb1",
1089+ "start": 2048,
1090+ "size": 1,
1091+ "type": "21686148-6449-6E6F-744E-656564454649",
1092+ "uuid": "D997F579-F242-4C88-B51A-87BF5111545D",
1093+ "name": "BIOS boot partition"
1094+ },
1095+ {
1096+ "node": "/dev/sdb2",
1097+ "start": 4096,
1098+ "size": 247463936,
1099+ "type": "0FC63DAF-8483-4772-8E79-3D69D8477DE4",
1100+ "uuid": "8B3C809D-54AC-4515-B719-CDE1F8A361B7",
1101+ "name": "Linux filesystem"
1102+ }
1103+ ]
1104+ }
1105+ },
1106+ "/dev/sdb1": {
1107+ "DEVLINKS": "/dev/disk/by-path/pci-0000:00:1f.2-ata-2-part1 /dev/disk/by-id/scsi-1ATA_Corsair_Force_GS_1320790700009741003D-part1 /dev/disk/by-id/scsi-30000000000000000-part1 /dev/disk/by-id/ata-Corsair_Force_GS_1320790700009741003D-part1 /dev/disk/by-id/scsi-0ATA_Corsair_Force_GS_1320790700009741003D-part1 /dev/disk/by-partlabel/BIOS\\x20boot\\x20partition /dev/disk/by-partuuid/d997f579-f242-4c88-b51a-87bf5111545d /dev/disk/by-id/wwn-0x0000000000000000-part1 /dev/disk/by-id/scsi-SATA_Corsair_Force_GS_1320790700009741003D-part1",
1108+ "DEVNAME": "/dev/sdb1",
1109+ "DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb/sdb1",
1110+ "DEVTYPE": "partition",
1111+ "DM_MULTIPATH_DEVICE_PATH": "0",
1112+ "ID_ATA": "1",
1113+ "ID_BUS": "ata",
1114+ "ID_MODEL": "Corsair_Force_GS",
1115+ "ID_MODEL_ENC": "Corsair\\x20Force\\x20GS",
1116+ "ID_PART_ENTRY_DISK": "8:16",
1117+ "ID_PART_ENTRY_NAME": "BIOS\\x20boot\\x20partition",
1118+ "ID_PART_ENTRY_NUMBER": "1",
1119+ "ID_PART_ENTRY_OFFSET": "2048",
1120+ "ID_PART_ENTRY_SCHEME": "gpt",
1121+ "ID_PART_ENTRY_SIZE": "1",
1122+ "ID_PART_ENTRY_TYPE": "21686148-6449-6e6f-744e-656564454649",
1123+ "ID_PART_ENTRY_UUID": "d997f579-f242-4c88-b51a-87bf5111545d",
1124+ "ID_PART_TABLE_TYPE": "gpt",
1125+ "ID_PART_TABLE_UUID": "f3254c46-a7dc-4a2b-8ed1-acb53a05ce0a",
1126+ "ID_PATH": "pci-0000:00:1f.2-ata-2",
1127+ "ID_PATH_TAG": "pci-0000_00_1f_2-ata-2",
1128+ "ID_REVISION": "A",
1129+ "ID_SCSI": "1",
1130+ "ID_SCSI_INQUIRY": "1",
1131+ "ID_SERIAL": "Corsair_Force_GS_1320790700009741003D",
1132+ "ID_SERIAL_SHORT": "1320790700009741003D",
1133+ "ID_TYPE": "disk",
1134+ "ID_VENDOR": "ATA",
1135+ "ID_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
1136+ "ID_WWN": "0x0000000000000000",
1137+ "ID_WWN_WITH_EXTENSION": "0x0000000000000000",
1138+ "MAJOR": "8",
1139+ "MINOR": "17",
1140+ "PARTN": "1",
1141+ "PARTNAME": "BIOS boot partition",
1142+ "SCSI_IDENT_LUN_ATA": "Corsair_Force_GS_1320790700009741003D",
1143+ "SCSI_IDENT_LUN_NAA_LOCAL": "0000000000000000",
1144+ "SCSI_IDENT_LUN_T10": "ATA_Corsair_Force_GS_1320790700009741003D",
1145+ "SCSI_IDENT_LUN_VENDOR": "1320790700009741003D",
1146+ "SCSI_IDENT_SERIAL": "1320790700009741003D",
1147+ "SCSI_MODEL": "Corsair_Force_GS",
1148+ "SCSI_MODEL_ENC": "Corsair\\x20Force\\x20GS",
1149+ "SCSI_REVISION": "A",
1150+ "SCSI_TPGS": "0",
1151+ "SCSI_TYPE": "disk",
1152+ "SCSI_VENDOR": "ATA",
1153+ "SCSI_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
1154+ "SUBSYSTEM": "block",
1155+ "TAGS": ":systemd:",
1156+ "USEC_INITIALIZED": "1082533",
1157+ "attrs": {
1158+ "alignment_offset": "0",
1159+ "dev": "8:17",
1160+ "discard_alignment": "0",
1161+ "inflight": " 0 0",
1162+ "partition": "1",
1163+ "ro": "0",
1164+ "size": "512",
1165+ "start": "2048",
1166+ "stat": " 12 0 26 11 0 0 0 0 0 48 0 0 0 0 0",
1167+ "subsystem": "block",
1168+ "uevent": "MAJOR=8\nMINOR=17\nDEVNAME=sdb1\nDEVTYPE=partition\nPARTN=1\nPARTNAME=BIOS boot partition"
1169+ }
1170+ },
1171+ "/dev/sdb2": {
1172+ "DEVLINKS": "/dev/disk/by-id/scsi-0ATA_Corsair_Force_GS_1320790700009741003D-part2 /dev/disk/by-path/pci-0000:00:1f.2-ata-2-part2 /dev/disk/by-partuuid/8b3c809d-54ac-4515-b719-cde1f8a361b7 /dev/disk/by-id/scsi-1ATA_Corsair_Force_GS_1320790700009741003D-part2 /dev/disk/by-id/scsi-SATA_Corsair_Force_GS_1320790700009741003D-part2 /dev/disk/by-id/scsi-30000000000000000-part2 /dev/disk/by-id/ata-Corsair_Force_GS_1320790700009741003D-part2 /dev/disk/by-id/wwn-0x0000000000000000-part2 /dev/disk/by-partlabel/Linux\\x20filesystem",
1173+ "DEVNAME": "/dev/sdb2",
1174+ "DEVPATH": "/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb/sdb2",
1175+ "DEVTYPE": "partition",
1176+ "DM_MULTIPATH_DEVICE_PATH": "0",
1177+ "ID_ATA": "1",
1178+ "ID_BUS": "ata",
1179+ "ID_FS_LABEL": "ubuntu-server:0",
1180+ "ID_FS_LABEL_ENC": "ubuntu-server:0",
1181+ "ID_FS_TYPE": "linux_raid_member",
1182+ "ID_FS_USAGE": "raid",
1183+ "ID_FS_UUID": "079fa971-c86d-cd37-05c5-4ec1b343dc99",
1184+ "ID_FS_UUID_ENC": "079fa971-c86d-cd37-05c5-4ec1b343dc99",
1185+ "ID_FS_UUID_SUB": "df50ba68-38bd-acc2-3ad1-057980954294",
1186+ "ID_FS_UUID_SUB_ENC": "df50ba68-38bd-acc2-3ad1-057980954294",
1187+ "ID_FS_VERSION": "1.2",
1188+ "ID_MODEL": "Corsair_Force_GS",
1189+ "ID_MODEL_ENC": "Corsair\\x20Force\\x20GS",
1190+ "ID_PART_ENTRY_DISK": "8:16",
1191+ "ID_PART_ENTRY_NAME": "Linux\\x20filesystem",
1192+ "ID_PART_ENTRY_NUMBER": "2",
1193+ "ID_PART_ENTRY_OFFSET": "4096",
1194+ "ID_PART_ENTRY_SCHEME": "gpt",
1195+ "ID_PART_ENTRY_SIZE": "247463936",
1196+ "ID_PART_ENTRY_TYPE": "0fc63daf-8483-4772-8e79-3d69d8477de4",
1197+ "ID_PART_ENTRY_UUID": "8b3c809d-54ac-4515-b719-cde1f8a361b7",
1198+ "ID_PART_TABLE_TYPE": "gpt",
1199+ "ID_PART_TABLE_UUID": "f3254c46-a7dc-4a2b-8ed1-acb53a05ce0a",
1200+ "ID_PATH": "pci-0000:00:1f.2-ata-2",
1201+ "ID_PATH_TAG": "pci-0000_00_1f_2-ata-2",
1202+ "ID_REVISION": "A",
1203+ "ID_SCSI": "1",
1204+ "ID_SCSI_INQUIRY": "1",
1205+ "ID_SERIAL": "Corsair_Force_GS_1320790700009741003D",
1206+ "ID_SERIAL_SHORT": "1320790700009741003D",
1207+ "ID_TYPE": "disk",
1208+ "ID_VENDOR": "ATA",
1209+ "ID_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
1210+ "ID_WWN": "0x0000000000000000",
1211+ "ID_WWN_WITH_EXTENSION": "0x0000000000000000",
1212+ "MAJOR": "8",
1213+ "MINOR": "18",
1214+ "PARTN": "2",
1215+ "PARTNAME": "Linux filesystem",
1216+ "SCSI_IDENT_LUN_ATA": "Corsair_Force_GS_1320790700009741003D",
1217+ "SCSI_IDENT_LUN_NAA_LOCAL": "0000000000000000",
1218+ "SCSI_IDENT_LUN_T10": "ATA_Corsair_Force_GS_1320790700009741003D",
1219+ "SCSI_IDENT_LUN_VENDOR": "1320790700009741003D",
1220+ "SCSI_IDENT_SERIAL": "1320790700009741003D",
1221+ "SCSI_MODEL": "Corsair_Force_GS",
1222+ "SCSI_MODEL_ENC": "Corsair\\x20Force\\x20GS",
1223+ "SCSI_REVISION": "A",
1224+ "SCSI_TPGS": "0",
1225+ "SCSI_TYPE": "disk",
1226+ "SCSI_VENDOR": "ATA",
1227+ "SCSI_VENDOR_ENC": "ATA\\x20\\x20\\x20\\x20\\x20",
1228+ "SUBSYSTEM": "block",
1229+ "TAGS": ":systemd:",
1230+ "USEC_INITIALIZED": "1103395",
1231+ "attrs": {
1232+ "alignment_offset": "0",
1233+ "dev": "8:18",
1234+ "discard_alignment": "0",
1235+ "inflight": " 0 0",
1236+ "partition": "2",
1237+ "ro": "0",
1238+ "size": "126701535232",
1239+ "start": "4096",
1240+ "stat": " 187 0 6695 31 1 0 1 0 0 140 0 0 0 0 0",
1241+ "subsystem": "block",
1242+ "uevent": "MAJOR=8\nMINOR=18\nDEVNAME=sdb2\nDEVTYPE=partition\nPARTN=2\nPARTNAME=Linux filesystem"
1243+ }
1244+ },
1245+ "/dev/md127": {
1246+ "DEVLINKS": "/dev/md/ubuntu-server:0 /dev/disk/by-id/md-name-ubuntu-server:0 /dev/disk/by-id/md-uuid-079fa971:c86dcd37:05c54ec1:b343dc99",
1247+ "DEVNAME": "/dev/md127",
1248+ "DEVPATH": "/devices/virtual/block/md127",
1249+ "DEVTYPE": "disk",
1250+ "MAJOR": "9",
1251+ "MD_DEVICES": "2",
1252+ "MD_DEVICE_ev_sda2_DEV": "/dev/sda2",
1253+ "MD_DEVICE_ev_sda2_ROLE": "0",
1254+ "MD_DEVICE_ev_sdb2_DEV": "/dev/sdb2",
1255+ "MD_DEVICE_ev_sdb2_ROLE": "1",
1256+ "MD_DEVNAME": "ubuntu-server:0",
1257+ "MD_LEVEL": "raid1",
1258+ "MD_METADATA": "1.2",
1259+ "MD_NAME": "ubuntu-server:0",
1260+ "MD_UUID": "079fa971:c86dcd37:05c54ec1:b343dc99",
1261+ "MINOR": "127",
1262+ "SUBSYSTEM": "block",
1263+ "SYSTEMD_WANTS": "mdmonitor.service",
1264+ "TAGS": ":systemd:",
1265+ "USEC_INITIALIZED": "1083467",
1266+ "attrs": {
1267+ "alignment_offset": "0",
1268+ "bdi": null,
1269+ "capability": "50",
1270+ "dev": "9:127",
1271+ "discard_alignment": "0",
1272+ "events": "",
1273+ "events_async": "",
1274+ "events_poll_msecs": "-1",
1275+ "ext_range": "256",
1276+ "hidden": "0",
1277+ "inflight": " 0 0",
1278+ "range": "1",
1279+ "removable": "0",
1280+ "ro": "0",
1281+ "size": "126633377792",
1282+ "stat": " 619 0 26848 0 0 0 0 0 0 0 0 0 0 0 0",
1283+ "subsystem": "block",
1284+ "uevent": "MAJOR=9\nMINOR=127\nDEVNAME=md127\nDEVTYPE=disk"
1285+ }
1286+ }
1287+ },
1288+ "bcache": {
1289+ "backing": {},
1290+ "caching": {}
1291+ }
1292+}
1293diff --git a/tests/unittests/test_storage_config.py b/tests/unittests/test_storage_config.py
1294index 1f2b833..ecdc565 100644
1295--- a/tests/unittests/test_storage_config.py
1296+++ b/tests/unittests/test_storage_config.py
1297@@ -232,6 +232,34 @@ class TestBlockdevParser(CiTestCase):
1298 self.assertDictEqual(expected_ids,
1299 self.bdevp.get_unique_ids(blockdev))
1300
1301+ def test_get_unique_ids_ignores_empty_wwn_values(self):
1302+ """ BlockdevParser skips invalid ID_WWN_* values. """
1303+ self.bdevp.blockdev_data['/dev/sda'] = {
1304+ 'DEVTYPE': 'disk',
1305+ 'DEVNAME': 'sda',
1306+ 'ID_SERIAL': 'Corsair_Force_GS_1785234921906',
1307+ 'ID_SERIAL_SHORT': '1785234921906',
1308+ 'ID_WWN': '0x0000000000000000',
1309+ 'ID_WWN_WITH_EXTENSION': '0x0000000000000000',
1310+ }
1311+ blockdev = self.bdevp.blockdev_data['/dev/sda']
1312+ expected_ids = {'serial': 'Corsair_Force_GS_1785234921906'}
1313+ self.assertEqual(expected_ids,
1314+ self.bdevp.get_unique_ids(blockdev))
1315+
1316+ def test_get_unique_ids_ignores_empty_serial_values(self):
1317+ """ BlockdevParser skips invalid ID_SERIAL_* values. """
1318+ self.bdevp.blockdev_data['/dev/sda'] = {
1319+ 'DEVTYPE': 'disk',
1320+ 'DEVNAME': 'sda',
1321+ 'ID_SERIAL': ' ',
1322+ 'ID_SERIAL_SHORT': 'My Serial is My PassPort',
1323+ }
1324+ blockdev = self.bdevp.blockdev_data['/dev/sda']
1325+ expected_ids = {'serial': 'My Serial is My PassPort'}
1326+ self.assertEqual(expected_ids,
1327+ self.bdevp.get_unique_ids(blockdev))
1328+
1329 def test_partition_parent_devname(self):
1330 """ BlockdevParser calculate partition parent name. """
1331 expected_parent = '/dev/sda'
1332@@ -984,5 +1012,22 @@ class TestExtractStorageConfig(CiTestCase):
1333 self.assertEqual(1, len(disks))
1334 self.assertEqual(expected_dict, disks[0])
1335
1336+ @skipUnlessJsonSchema()
1337+ def test_blockdev_skips_invalid_wwn(self):
1338+ self.probe_data = _get_data('probert_storage_bogus_wwn.json')
1339+ extracted = storage_config.extract_storage_config(self.probe_data)
1340+ config = extracted['storage']['config']
1341+ disks = [cfg for cfg in config
1342+ if cfg['type'] == 'disk' and cfg['path'] == '/dev/sda']
1343+ expected_dict = {
1344+ 'id': 'disk-sda',
1345+ 'path': '/dev/sda',
1346+ 'ptable': 'gpt',
1347+ 'serial': 'Corsair_Force_GS_13207907000097410026',
1348+ 'type': 'disk',
1349+ }
1350+ self.assertEqual(1, len(disks))
1351+ self.assertEqual(expected_dict, disks[0])
1352+
1353
1354 # vi: ts=4 expandtab syntax=python

Subscribers

People subscribed via source and target branches