def test_ceph_volume_command_4(): spec = DriveGroupSpec(placement=PlacementSpec(host_pattern='*'), service_id='foobar', data_devices=DeviceSelection(size='200GB:350GB', rotational=True), db_devices=DeviceSelection(size='200GB:350GB', rotational=False), wal_devices=DeviceSelection(size='10G'), block_db_size='500M', block_wal_size='500M', osds_per_device=3, encrypted=True) spec.validate() inventory = _mk_inventory( _mk_device(rotational=True, size="300.00 GB") * 2 + _mk_device(rotational=False, size="300.00 GB") * 2 + _mk_device(size="10.0 GB", rotational=False) * 2) sel = drive_selection.DriveSelection(spec, inventory) cmds = translate.to_ceph_volume(sel, []).run() assert all(cmd == ( 'lvm batch --no-auto /dev/sda /dev/sdb ' '--db-devices /dev/sdc /dev/sdd --wal-devices /dev/sde /dev/sdf ' '--block-wal-size 500M --block-db-size 500M --dmcrypt ' '--osds-per-device 3 --yes --no-systemd') for cmd in cmds), f'Expected {cmd} in {cmds}'
def test_ceph_volume_command_1(): spec = DriveGroupSpec(host_pattern='*', data_devices=DeviceSelection(rotational=True), db_devices=DeviceSelection(rotational=False)) inventory = _mk_inventory( _mk_device(rotational=True) * 2 + _mk_device(rotational=False) * 2) sel = drive_selection.DriveSelection(spec, inventory) cmd = translate.to_ceph_volume(spec, sel).run() assert cmd == ('lvm batch --no-auto /dev/sda /dev/sdb ' '--db-devices /dev/sdc /dev/sdd --yes --no-systemd')
def test_ceph_volume_command_1(): spec = DriveGroupSpec(placement=PlacementSpec(host_pattern='*'), service_id='foobar', data_devices=DeviceSelection(rotational=True), db_devices=DeviceSelection(rotational=False)) spec.validate() inventory = _mk_inventory( _mk_device(rotational=True) * 2 + _mk_device(rotational=False) * 2) sel = drive_selection.DriveSelection(spec, inventory) cmds = translate.to_ceph_volume(sel, []).run() assert all(cmd == ('lvm batch --no-auto /dev/sda /dev/sdb ' '--db-devices /dev/sdc /dev/sdd --yes --no-systemd') for cmd in cmds), f'Expected {cmd} in {cmds}'
def test_ceph_volume_command_6(): spec = DriveGroupSpec(host_pattern='*', data_devices=DeviceSelection(rotational=False), journal_devices=DeviceSelection(rotational=True), journal_size='500M', objectstore='filestore') inventory = _mk_inventory( _mk_device(rotational=True) * 2 + _mk_device(rotational=False) * 2) sel = drive_selection.DriveSelection(spec, inventory) cmd = translate.to_ceph_volume(spec, sel).run() assert cmd == ('lvm batch --no-auto /dev/sdc /dev/sdd ' '--journal-size 500M --journal-devices /dev/sda /dev/sdb ' '--filestore --yes --no-systemd')
def test_ceph_volume_command_2(): spec = DriveGroupSpec(placement=PlacementSpec(host_pattern='*'), data_devices=DeviceSelection(size='200GB:350GB', rotational=True), db_devices=DeviceSelection(size='200GB:350GB', rotational=False), wal_devices=DeviceSelection(size='10G') ) inventory = _mk_inventory(_mk_device(rotational=True, size="300.00 GB")*2 + _mk_device(rotational=False, size="300.00 GB")*2 + _mk_device(size="10.0 GB", rotational=False)*2 ) sel = drive_selection.DriveSelection(spec, inventory) cmd = translate.to_ceph_volume(spec, sel).run() assert cmd == ('lvm batch --no-auto /dev/sda /dev/sdb ' '--db-devices /dev/sdc /dev/sdd --wal-devices /dev/sde /dev/sdf ' '--yes --no-systemd')
def test_ceph_volume_command_6(): spec = DriveGroupSpec(placement=PlacementSpec(host_pattern='*'), service_id='foobar', data_devices=DeviceSelection(rotational=False), journal_devices=DeviceSelection(rotational=True), journal_size='500M', objectstore='filestore') with pytest.raises(DriveGroupValidationError): spec.validate() inventory = _mk_inventory( _mk_device(rotational=True) * 2 + _mk_device(rotational=False) * 2) sel = drive_selection.DriveSelection(spec, inventory) cmd = translate.to_ceph_volume(sel, []).run() assert cmd == ('lvm batch --no-auto /dev/sdc /dev/sdd ' '--journal-size 500M --journal-devices /dev/sda /dev/sdb ' '--filestore --yes --no-systemd')
def test_ceph_volume_command_0(): spec = DriveGroupSpec(host_pattern='*', data_devices=DeviceSelection(all=True)) inventory = _mk_inventory(_mk_device() * 2) sel = drive_selection.DriveSelection(spec, inventory) cmd = translate.to_ceph_volume(spec, sel).run() assert cmd == 'lvm batch --no-auto /dev/sda /dev/sdb --yes --no-systemd'
def test_raw_ceph_volume_command_1(): spec = DriveGroupSpec( placement=PlacementSpec(host_pattern='*'), service_id='foobar', data_devices=DeviceSelection(rotational=True), db_devices=DeviceSelection(rotational=False), method='raw', ) spec.validate() inventory = _mk_inventory( _mk_device(rotational=True) + # data _mk_device(rotational=True) + # data _mk_device(rotational=False) # db ) sel = drive_selection.DriveSelection(spec, inventory) with pytest.raises(ValueError): cmds = translate.to_ceph_volume(sel, []).run()
def test_ceph_volume_command_7(): spec = DriveGroupSpec(placement=PlacementSpec(host_pattern='*'), data_devices=DeviceSelection(all=True), osd_id_claims={'host1': ['0', '1']}) inventory = _mk_inventory(_mk_device(rotational=True) * 2) sel = drive_selection.DriveSelection(spec, inventory) cmd = translate.to_ceph_volume(spec, sel, ['0', '1']).run() assert cmd == 'lvm batch --no-auto /dev/sda /dev/sdb --osd-ids 0 1 --yes --no-systemd'
def test_ceph_volume_command_5(): spec = DriveGroupSpec(placement=PlacementSpec(host_pattern='*'), data_devices=DeviceSelection(rotational=True), objectstore='filestore') inventory = _mk_inventory(_mk_device(rotational=True) * 2) sel = drive_selection.DriveSelection(spec, inventory) cmd = translate.to_ceph_volume(spec, sel, []).run() assert cmd == 'lvm batch --no-auto /dev/sda /dev/sdb --filestore --yes --no-systemd'
def test_ceph_volume_command_9(): spec = DriveGroupSpec(placement=PlacementSpec(host_pattern='*'), service_id='foobar', data_devices=DeviceSelection(all=True), data_allocate_fraction=0.8) spec.validate() inventory = _mk_inventory(_mk_device() * 2) sel = drive_selection.DriveSelection(spec, inventory) cmd = translate.to_ceph_volume(sel, []).run() assert cmd == 'lvm batch --no-auto /dev/sda /dev/sdb --data-allocate-fraction 0.8 --yes --no-systemd'
def test_ceph_volume_command_8(): spec = DriveGroupSpec(placement=PlacementSpec(host_pattern='*'), data_devices=DeviceSelection(rotational=True, model='INTEL SSDS'), db_devices=DeviceSelection(model='INTEL SSDP'), filter_logic='OR', osd_id_claims={}) inventory = _mk_inventory( _mk_device(rotational=True, size='1.82 TB', model='ST2000DM001-1ER1') + # data _mk_device(rotational=False, size="223.0 GB", model='INTEL SSDSC2KG24') + # data _mk_device(rotational=False, size="349.0 GB", model='INTEL SSDPED1K375GA') # wal/db ) sel = drive_selection.DriveSelection(spec, inventory) cmd = translate.to_ceph_volume(sel, []).run() assert cmd == 'lvm batch --no-auto /dev/sda /dev/sdb --db-devices /dev/sdc --yes --no-systemd'
def test_ceph_volume_command_4(): spec = DriveGroupSpec(host_pattern='*', data_devices=DeviceSelection(size='200GB:350GB', rotational=True), db_devices=DeviceSelection(size='200GB:350GB', rotational=False), wal_devices=DeviceSelection(size='10G'), block_db_size='500M', block_wal_size='500M', osds_per_device=3, encrypted=True ) inventory = _mk_inventory(_mk_device(rotational=True)*2 + _mk_device(rotational=False)*2 + _mk_device(size="10.0 GB", rotational=False)*2 ) sel = drive_selection.DriveSelection(spec, inventory) cmd = translate.to_ceph_volume(spec, sel).run() assert cmd == ('lvm batch --no-auto /dev/sda /dev/sdb ' '--db-devices /dev/sdc /dev/sdd --wal-devices /dev/sde /dev/sdf ' '--block-wal-size 500M --block-db-size 500M --dmcrypt ' '--osds-per-device 3 --yes --no-systemd')
def test_raw_ceph_volume_command_0(): spec = DriveGroupSpec( placement=PlacementSpec(host_pattern='*'), service_id='foobar', data_devices=DeviceSelection(rotational=True), db_devices=DeviceSelection(rotational=False), method='raw', ) spec.validate() inventory = _mk_inventory( _mk_device(rotational=True) + # data _mk_device(rotational=True) + # data _mk_device(rotational=False) + # db _mk_device(rotational=False) # db ) exp_cmds = [ 'raw prepare --bluestore --data /dev/sda --block.db /dev/sdc', 'raw prepare --bluestore --data /dev/sdb --block.db /dev/sdd' ] sel = drive_selection.DriveSelection(spec, inventory) cmds = translate.to_ceph_volume(sel, []).run() assert all(cmd in exp_cmds for cmd in cmds), f'Expected {exp_cmds} to match {cmds}'
def test_ceph_volume_command_5(): spec = DriveGroupSpec(placement=PlacementSpec(host_pattern='*'), service_id='foobar', data_devices=DeviceSelection(rotational=True), objectstore='filestore') with pytest.raises(DriveGroupValidationError): spec.validate() inventory = _mk_inventory(_mk_device(rotational=True) * 2) sel = drive_selection.DriveSelection(spec, inventory) cmds = translate.to_ceph_volume(sel, []).run() assert all( cmd == 'lvm batch --no-auto /dev/sda /dev/sdb --filestore --yes --no-systemd' for cmd in cmds), f'Expected {cmd} in {cmds}'
class TestDriveSelection(object): testdata = [ (DriveGroupSpec(placement=PlacementSpec(host_pattern='*'), service_id='foobar', data_devices=DeviceSelection(all=True)), _mk_inventory(_mk_device() * 5), ['/dev/sda', '/dev/sdb', '/dev/sdc', '/dev/sdd', '/dev/sde'], []), (DriveGroupSpec(placement=PlacementSpec(host_pattern='*'), service_id='foobar', data_devices=DeviceSelection(all=True, limit=3), db_devices=DeviceSelection(all=True)), _mk_inventory(_mk_device() * 5), ['/dev/sda', '/dev/sdb', '/dev/sdc'], ['/dev/sdd', '/dev/sde']), (DriveGroupSpec(placement=PlacementSpec(host_pattern='*'), service_id='foobar', data_devices=DeviceSelection(rotational=True), db_devices=DeviceSelection(rotational=False)), _mk_inventory( _mk_device(rotational=False) + _mk_device(rotational=True)), ['/dev/sdb'], ['/dev/sda']), (DriveGroupSpec(placement=PlacementSpec(host_pattern='*'), service_id='foobar', data_devices=DeviceSelection(rotational=True), db_devices=DeviceSelection(rotational=False)), _mk_inventory( _mk_device(rotational=True) * 2 + _mk_device(rotational=False)), ['/dev/sda', '/dev/sdb'], ['/dev/sdc']), (DriveGroupSpec(placement=PlacementSpec(host_pattern='*'), service_id='foobar', data_devices=DeviceSelection(rotational=True), db_devices=DeviceSelection(rotational=False)), _mk_inventory(_mk_device(rotational=True) * 2), ['/dev/sda', '/dev/sdb'], []), ] @pytest.mark.parametrize("spec,inventory,expected_data,expected_db", testdata) def test_disk_selection(self, spec, inventory, expected_data, expected_db): sel = drive_selection.DriveSelection(spec, inventory) assert [d.path for d in sel.data_devices()] == expected_data assert [d.path for d in sel.db_devices()] == expected_db