Bug #36098
Updated by Alfredo Deza over 5 years ago
Specifically, in containers, lsblk can miss the fact that a valid PARTLABEL exists:
<pre>
[root@osd0 /]# lsblk -P -p -o NAME,PARTLABEL,TYPE /dev/sda1
NAME="/dev/sda1" PARTLABEL="" TYPE="part"
[root@osd0 /]# blkid -t PARTLABEL="ceph data"
/dev/sdb1: UUID="4a58f041-e07f-4a41-8da5-ef324857f74d" TYPE="xfs" PARTLABEL="ceph data" PARTUUID="edd042e3-4557-40f1-8f97-4a66f47a3994"
/dev/sda1: UUID="94f52534-5dd2-465a-aff9-1007d2142b39" TYPE="xfs" PARTLABEL="ceph data" PARTUUID="a472b208-16f8-4732-8ad3-18f9ce4e5a3b"
/dev/sdc1: UUID="e332edfe-5cf4-44e7-b0b5-90d469d96aae" TYPE="xfs" PARTLABEL="ceph data" PARTUUID="97a01173-33e4-4ac6-8862-dbc388948b53"
</pre>
The problem with this is that <pre>simple scan</pre> has this check:
<pre>
if disk.is_partition(args.osd_path):
label = disk.lsblk(args.osd_path)['PARTLABEL']
if 'data' not in label:
raise RuntimeError('Device must be the data partition, but got: %s' % label)
</pre>
Specifically this line:
<pre>
label = disk.lsblk(args.osd_path)['PARTLABEL']
</pre>
Should be changed, probably using a helper, that may allow things like:
<pre>
>>> Device.is_ceph_disk
True
>>> Device.ceph_disk.journal
False
>>> Device.ceph_disk.data
True
</pre>