From da7c5a9a8017d55105e232879c79c4cb6806b8fb Mon Sep 17 00:00:00 2001 From: Guillaume Abrioux Date: Tue, 8 Aug 2023 12:06:41 +0000 Subject: [PATCH] ceph-volume: add two helper functions this adds `get_lv_path_from_mapper()` and `get_mapper_from_lv_path()` functions in api.lvm. they will help translating either an LV path from `/dev/mapper/LV` to the format `/dev/VG/LV` or the opposite. Signed-off-by: Guillaume Abrioux (cherry picked from commit c7164dfd599a1b406f9f1c870212cc0cbf08317d) --- src/ceph-volume/ceph_volume/api/lvm.py | 37 ++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/ceph-volume/ceph_volume/api/lvm.py b/src/ceph-volume/ceph_volume/api/lvm.py index 16cbc08b262..dcc4f186272 100644 --- a/src/ceph-volume/ceph_volume/api/lvm.py +++ b/src/ceph-volume/ceph_volume/api/lvm.py @@ -6,6 +6,7 @@ set of utilities for interacting with LVM. import logging import os import uuid +import re from itertools import repeat from math import floor from ceph_volume import process, util, conf @@ -1209,3 +1210,39 @@ def get_lv_by_fullname(full_name): except ValueError: res_lv = None return res_lv + +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('--', '-')}" + +def get_mapper_from_lv_path(lv_path): + """ + This functions translates a given lv path under the format: + /dev/VG/LV to the format /dev/mapper/LV. + eg: + from: + /dev/ceph-c1a97e46-234c-46aa-a549-3ca1d1f356a9/osd-block-32e8e896-172e-4a38-a06a-3702598510ec + to: + /dev/mapper/ceph--c1a97e46--234c--46aa--a549--3ca1d1f356a9-osd--block--32e8e896--172e--4a38--a06a--3702598510ec + """ + results = re.split(r'^\/dev\/(.+\w)-(\w.+)', lv_path) + results = list(filter(None, results)) + + if len(results) != 2: + return None + + return f"/dev/mapper/{results[0].replace('-', '--')}/{results[1].replace('-', '--')}" -- 2.39.5