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,
+ )
self.args = parser.parse_args(self.argv)
if self.args.path:
self.format_report(Device(self.args.path))
else:
- self.format_report(Devices())
+ self.format_report(Devices(self.args.filter_for_batch))
+
+ def get_report(self):
+ if self.args.path:
+ return Device(self.args.path).json_report()
+ else:
+ return Devices(self.args.filter_for_batch).json_report()
def format_report(self, inventory):
if self.args.format == 'json':
from functools import total_ordering
from ceph_volume import sys_info, process
from ceph_volume.api import lvm
-from ceph_volume.util import disk
+from ceph_volume.util import disk, system
from ceph_volume.util.constants import ceph_disk_guids
report_template = """
A container for Device instances with reporting
"""
- def __init__(self, devices=None):
+ def __init__(self, devices=None, filter_for_batch=False):
if not sys_info.devices:
sys_info.devices = disk.get_devices()
self.devices = [Device(k) for k in
sys_info.devices.keys()]
+ if filter_for_batch:
+ self.devices = [d for d in self.devices if d.available_lvm_batch]
- def pretty_report(self, all=True):
+ def pretty_report(self):
output = [
report_template.format(
dev='Device Path',
return len(rejected) == 0, rejected
+ @property
+ def available_lvm_batch(self):
+ if self.sys_api.get("partitions"):
+ return False
+ if system.device_is_mounted(self.path):
+ return False
+ return self.is_device or self.is_lv
+
class CephDiskDevice(object):
"""