setattr(self, '{}usable'.format(dev_list), [])
def report(self, plan):
- if self.args.format == 'json':
- print(json.dumps([osd.report_json() for osd in plan]))
- elif self.args.format == 'json-pretty':
- print(json.dumps([osd.report_json() for osd in plan], indent=4,
- sort_keys=True))
- else:
+ report = self._create_report(plan)
+ print(report)
+
+ def _create_report(self, plan):
+ if self.args.format == 'pretty':
report = ''
report += templates.total_osds.format(total_osds=len(plan))
for osd in plan:
report += templates.osd_header
report += osd.report()
-
- print(report)
+ return report
+ else:
+ json_report = []
+ for osd in plan:
+ json_report.append(osd.report_json())
+ if self.args.format == 'json':
+ return json.dumps(json_report)
+ elif self.args.format == 'json-pretty':
+ return json.dumps(json_report, indent=4,
+ sort_keys=True)
def _check_slot_args(self):
'''
import pytest
+import json
import random
from ceph_volume.devices.lvm import batch
assert 'Device lists are not disjoint' in str(disjoint_ex.value)
@pytest.mark.parametrize('format_', ['pretty', 'json', 'json-pretty'])
- def test_json_report(self, format_, factory, conf_ceph_stub, mock_device_generator):
+ def test_report(self, format_, factory, conf_ceph_stub, mock_device_generator):
# just ensure reporting works
conf_ceph_stub('[global]\nfsid=asdf-lkjh')
devs = [mock_device_generator() for _ in range(5)]
b.args = args
b.report(plan)
+ @pytest.mark.parametrize('format_', ['json', 'json-pretty'])
+ def test_json_report_valid_empty(self, format_, factory, conf_ceph_stub, mock_device_generator):
+ # ensure json reports are valid when empty
+ conf_ceph_stub('[global]\nfsid=asdf-lkjh')
+ devs = [mock_device_generator() for _ in range(5)]
+ args = factory(data_slots=1,
+ osds_per_device=1,
+ osd_ids=[],
+ report=True,
+ format=format_,
+ devices=devs,
+ db_devices=[],
+ wal_devices=[],
+ bluestore=True,
+ block_db_size="1G",
+ dmcrypt=True,
+ )
+ b = batch.Batch([])
+ plan = b.get_plan(args)
+ b.args = args
+ report = b._create_report(plan)
+ json.loads(report)
+
def test_get_physical_osds_return_len(self, factory,
mock_devices_available,
conf_ceph_stub,