]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume: Dereference symlink in lvm list 32877/head
authorBenoît Knecht <bknecht@protonmail.ch>
Thu, 2 Jan 2020 07:07:21 +0000 (08:07 +0100)
committerShyukri Shyukriev <shshyukriev@suse.com>
Sat, 8 Feb 2020 20:34:35 +0000 (22:34 +0200)
This allows for a symlink to be passed to

```
ceph-volume lvm list <path>
```

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 <bknecht@protonmail.ch>
(cherry picked from commit 09fa3df8a39d361f2af11bded8aab9e0da334d51)

src/ceph-volume/ceph_volume/devices/lvm/listing.py

index f3416472a0b9cc14c56839e9d1ada5bfb5ae26f5..1bb50c1d592a6a3a3320673fb8e66c9c94dcfa43 100644 (file)
@@ -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)