num_osds = len(plan)
if num_osds == 0:
mlogger.info('All data devices are unavailable')
- exit(0)
+ return plan
requested_osds = args.osds_per_device * len(phys_devs) + len(lvm_devs)
fast_type = 'block_db' if args.bluestore else 'journal'
fast_type)
if fast_devices and not fast_allocations:
mlogger.info('{} fast devices were passed, but none are available'.format(len(fast_devices)))
- exit(0)
+ return []
if fast_devices and not len(fast_allocations) == num_osds:
mlogger.error('{} fast allocations != {} num_osds'.format(
len(fast_allocations), num_osds))
'block_wal')
if very_fast_devices and not very_fast_allocations:
mlogger.info('{} very fast devices were passed, but none are available'.format(len(very_fast_devices)))
- exit(0)
+ return []
if very_fast_devices and not len(very_fast_allocations) == num_osds:
mlogger.error('{} very fast allocations != {} num_osds'.format(
len(very_fast_allocations), num_osds))
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)]
+ devs = []
args = factory(data_slots=1,
osds_per_device=1,
osd_ids=[],
report = b._create_report(plan)
json.loads(report)
+ @pytest.mark.parametrize('format_', ['json', 'json-pretty'])
+ def test_json_report_valid_empty_unavailable_fast(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)]
+ fast_devs = [mock_device_generator()]
+ fast_devs[0].available_lvm = False
+ args = factory(data_slots=1,
+ osds_per_device=1,
+ osd_ids=[],
+ report=True,
+ format=format_,
+ devices=devs,
+ db_devices=fast_devs,
+ 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)
+
+
+ @pytest.mark.parametrize('format_', ['json', 'json-pretty'])
+ def test_json_report_valid_empty_unavailable_very_fast(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)]
+ fast_devs = [mock_device_generator()]
+ very_fast_devs = [mock_device_generator()]
+ very_fast_devs[0].available_lvm = False
+ args = factory(data_slots=1,
+ osds_per_device=1,
+ osd_ids=[],
+ report=True,
+ format=format_,
+ devices=devs,
+ db_devices=fast_devs,
+ wal_devices=very_fast_devs,
+ 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,