Bug #64353
openceph-volume fails to parse LVs with single-character name
0%
Description
In `ceph_volume/api/lvm.py`'s `get_lv_path_from_mapper`, we have
```
def get_lv_path_from_mapper(mapper):
"""
This functions translates a given mapper device under the format:
/dev/mapper/LV to the format /dev/VG/LV.
eg:
from:
/dev/mapper/ceph--c1a97e46--234c--46aa--a549--3ca1d1f356a9-osd--block--32e8e896--172e--4a38--a06a--3702598510ec
to:
/dev/ceph-c1a97e46-234c-46aa-a549-3ca1d1f356a9/osd-block-32e8e896-172e-4a38-a06a-3702598510ec
"""
results = re.split(r'^\/dev\/mapper\/(.+\w)-(\w.*)', mapper)
results = list(filter(None, results))
if len(results) != 2:
return None
return f"/dev/{results[0].replace('--', '-')}/{results[1].replace('--', '-')}"
```
This fails for e.g. `/dev/mapper/local_nvme-a`.
I am not sure whether changing the regular expression to be `r'^\/dev\/mapper\/(.+\w)-(\w.*)` has any bad consequences.
With this bug `ceph volume inventory /dev/sda` fails.
Updated by Tobias Florek 3 months ago
Sorry for the formatting. I was blindly writing Markdown.