summaryrefslogtreecommitdiffstats
path: root/src/ceph-volume/ceph_volume/inventory
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
commite6918187568dbd01842d8d1d2c808ce16a894239 (patch)
tree64f88b554b444a49f656b6c656111a145cbbaa28 /src/ceph-volume/ceph_volume/inventory
parentInitial commit. (diff)
downloadceph-e6918187568dbd01842d8d1d2c808ce16a894239.tar.xz
ceph-e6918187568dbd01842d8d1d2c808ce16a894239.zip
Adding upstream version 18.2.2.upstream/18.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/ceph-volume/ceph_volume/inventory')
-rw-r--r--src/ceph-volume/ceph_volume/inventory/__init__.py1
-rw-r--r--src/ceph-volume/ceph_volume/inventory/main.py76
2 files changed, 77 insertions, 0 deletions
diff --git a/src/ceph-volume/ceph_volume/inventory/__init__.py b/src/ceph-volume/ceph_volume/inventory/__init__.py
new file mode 100644
index 000000000..c9e0c0ccc
--- /dev/null
+++ b/src/ceph-volume/ceph_volume/inventory/__init__.py
@@ -0,0 +1 @@
+from .main import Inventory # noqa
diff --git a/src/ceph-volume/ceph_volume/inventory/main.py b/src/ceph-volume/ceph_volume/inventory/main.py
new file mode 100644
index 000000000..da0ff6c88
--- /dev/null
+++ b/src/ceph-volume/ceph_volume/inventory/main.py
@@ -0,0 +1,76 @@
+# -*- coding: utf-8 -*-
+
+import argparse
+import json
+
+from ceph_volume.util.device import Devices, Device
+
+
+class Inventory(object):
+
+ help = "Get this nodes available disk inventory"
+
+ def __init__(self, argv):
+ self.argv = argv
+
+ def main(self):
+ parser = argparse.ArgumentParser(
+ prog='ceph-volume inventory',
+ formatter_class=argparse.RawDescriptionHelpFormatter,
+ description=self.help,
+ )
+ parser.add_argument(
+ 'path',
+ nargs='?',
+ default=None,
+ help=('Report on specific disk'),
+ )
+ parser.add_argument(
+ '--format',
+ choices=['plain', 'json', 'json-pretty'],
+ default='plain',
+ help='Output format',
+ )
+ parser.add_argument(
+ '--filter-for-batch',
+ action='store_true',
+ help=('Filter devices unsuitable to pass to an OSD service spec, '
+ 'no effect when <path> is passed'),
+ default=False,
+ )
+ parser.add_argument(
+ '--with-lsm',
+ action='store_true',
+ help=('Attempt to retrieve additional health and metadata through '
+ 'libstoragemgmt'),
+ default=False,
+ )
+ parser.add_argument(
+ '--list-all',
+ action='store_true',
+ help=('Whether ceph-volume should list lvm devices'),
+ default=False
+ )
+ self.args = parser.parse_args(self.argv)
+ if self.args.path:
+ self.format_report(Device(self.args.path, with_lsm=self.args.with_lsm))
+ else:
+ self.format_report(Devices(filter_for_batch=self.args.filter_for_batch,
+ with_lsm=self.args.with_lsm,
+ list_all=self.args.list_all))
+
+ def get_report(self):
+ if self.args.path:
+ return Device(self.args.path, with_lsm=self.args.with_lsm).json_report()
+ else:
+ return Devices(filter_for_batch=self.args.filter_for_batch,
+ with_lsm=self.args.with_lsm,
+ list_all=self.args.list_all).json_report()
+
+ def format_report(self, inventory):
+ if self.args.format == 'json':
+ print(json.dumps(inventory.json_report()))
+ elif self.args.format == 'json-pretty':
+ print(json.dumps(inventory.json_report(), indent=4, sort_keys=True))
+ else:
+ print(inventory.pretty_report())