From: Benoît Knecht Date: Thu, 2 Jan 2020 07:07:21 +0000 (+0100) Subject: ceph-volume: Dereference symlink in lvm list X-Git-Tag: v14.2.8~70^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F32877%2Fhead;p=ceph.git ceph-volume: Dereference symlink in lvm list This allows for a symlink to be passed to ``` ceph-volume lvm list ``` which makes it possible to use `/dev/disk/by-path/*` devices, for instance. Fixes: https://tracker.ceph.com/issues/43497 Signed-off-by: Benoît Knecht (cherry picked from commit 09fa3df8a39d361f2af11bded8aab9e0da334d51) --- diff --git a/src/ceph-volume/ceph_volume/devices/lvm/listing.py b/src/ceph-volume/ceph_volume/devices/lvm/listing.py index f3416472a0b9..1bb50c1d592a 100644 --- a/src/ceph-volume/ceph_volume/devices/lvm/listing.py +++ b/src/ceph-volume/ceph_volume/devices/lvm/listing.py @@ -2,6 +2,7 @@ from __future__ import print_function import argparse import json import logging +import os.path from textwrap import dedent from ceph_volume import decorators from ceph_volume.util import disk @@ -162,7 +163,14 @@ class List(object): this tool before and contain enough metadata. """ if args.device: - return self.single_report(args.device, lvs) + # The `args.device` argument can be a logical volume name or a + # device path. If it's a path that exists, use the canonical path + # (in particular, dereference symlinks); otherwise, assume it's a + # logical volume name and use it as-is. + device = args.device + if os.path.exists(device): + device = os.path.realpath(device) + return self.single_report(device, lvs) else: return self.full_report(lvs)