def test_create_volume_with_options(self): testvol = { 'project_id': 'testprjid', 'name': 'testvol', 'size': 1, 'id': 'deadbeef-8068-11e4-98c0-5254008ea111', 'volume_type_id': 'drbdmanage', 'created_at': timeutils.utcnow() } self.configuration.safe_get = self._fake_safe_get_with_options dmd = drv.DrbdManageIscsiDriver(configuration=self.configuration) dmd.drbdmanage_devs_on_controller = False dmd.odm = DrbdManageFakeDriver() dmd.create_volume(testvol) self.assertEqual("create_resource", dmd.odm.calls[0][0]) self.assertEqual("set_drbdsetup_props", dmd.odm.calls[1][0]) self.assertEqual("reso", dmd.odm.calls[1][1]["type"]) self.assertEqual("300", dmd.odm.calls[1][1]["auto-promote-timeout"]) self.assertEqual("set_drbdsetup_props", dmd.odm.calls[2][0]) self.assertEqual("neto", dmd.odm.calls[2][1]["type"]) self.assertEqual("30", dmd.odm.calls[2][1]["ko-count"]) self.assertEqual("list_volumes", dmd.odm.calls[3][0]) self.assertEqual("create_volume", dmd.odm.calls[4][0]) self.assertEqual(1048576, dmd.odm.calls[4][2]) self.assertEqual("auto_deploy", dmd.odm.calls[5][0]) self.assertEqual(7, len(dmd.odm.calls))
def test_create_volume_from_snapshot_larger_size(self): snap = { 'project_id': 'testprjid', 'name': 'testvol', 'volume_size': 1, 'id': 'ba253fd0-8068-11e4-98c0-5254008ea111', 'volume_type_id': 'drbdmanage', 'created_at': timeutils.utcnow() } newvol = {'size': 5, 'id': 'ca253fd0-8068-11e4-98c0-5254008ea111'} dmd = drv.DrbdManageIscsiDriver(configuration=self.configuration) dmd.odm = DrbdManageFakeDriver() dmd.create_volume_from_snapshot(newvol, snap) self.assertEqual("list_snapshots", dmd.odm.calls[0][0]) self.assertEqual("restore_snapshot", dmd.odm.calls[1][0]) self.assertEqual("run_external_plugin", dmd.odm.calls[2][0]) # resize image checks self.assertEqual("list_volumes", dmd.odm.calls[3][0]) self.assertEqual(newvol['id'], dmd.odm.calls[3][3]["aux:cinder-id"]) self.assertEqual("resize_volume", dmd.odm.calls[4][0]) self.assertEqual("res", dmd.odm.calls[4][1]) self.assertEqual(2, dmd.odm.calls[4][2]) self.assertEqual(-1, dmd.odm.calls[4][3]) self.assertEqual(5242880, dmd.odm.calls[4][4])
def test_create_cloned_volume(self): srcvol = { 'project_id': 'testprjid', 'name': 'testvol', 'size': 1, 'id': 'ba253fd0-8068-11e4-98c0-5254008ea111', 'volume_type_id': 'drbdmanage', 'created_at': timeutils.utcnow() } newvol = {'id': 'ca253fd0-8068-11e4-98c0-5254008ea111'} dmd = drv.DrbdManageIscsiDriver(configuration=self.configuration) dmd.odm = DrbdManageFakeDriver() dmd.create_cloned_volume(newvol, srcvol) self.assertEqual("list_volumes", dmd.odm.next_call()) self.assertEqual("list_assignments", dmd.odm.next_call()) self.assertEqual("create_snapshot", dmd.odm.next_call()) self.assertEqual("run_external_plugin", dmd.odm.next_call()) self.assertEqual("list_snapshots", dmd.odm.next_call()) self.assertEqual("restore_snapshot", dmd.odm.next_call()) self.assertEqual("set_drbdsetup_props", dmd.odm.next_call()) self.assertEqual("set_drbdsetup_props", dmd.odm.next_call()) self.assertEqual("set_drbdsetup_props", dmd.odm.next_call()) self.assertEqual("run_external_plugin", dmd.odm.next_call()) self.assertEqual("list_snapshots", dmd.odm.next_call()) self.assertEqual("remove_snapshot", dmd.odm.next_call())
def test_create_volume_controller_all_vols(self): testvol = { 'project_id': 'testprjid', 'name': 'testvol', 'size': 1, 'id': 'deadbeef-8068-11e4-98c0-5254008ea111', 'volume_type_id': 'drbdmanage', 'created_at': timeutils.utcnow() } dmd = drv.DrbdManageIscsiDriver(configuration=self.configuration) dmd.drbdmanage_devs_on_controller = True dmd.odm = DrbdManageFakeDriver() dmd.create_volume(testvol) self.assertEqual("create_resource", dmd.odm.next_call()) self.assertEqual("set_drbdsetup_props", dmd.odm.next_call()) self.assertEqual("set_drbdsetup_props", dmd.odm.next_call()) self.assertEqual("set_drbdsetup_props", dmd.odm.next_call()) self.assertEqual("list_volumes", dmd.odm.next_call()) self.assertEqual("create_volume", dmd.odm.next_call()) self.assertEqual(1048576, dmd.odm.call_parm(2)) self.assertEqual("auto_deploy", dmd.odm.next_call()) self.assertEqual("run_external_plugin", dmd.odm.next_call()) self.assertEqual("assign", dmd.odm.next_call()) self.assertEqual(9, dmd.odm.call_count())
def test_delete_snapshot(self): testsnap = {'id': 'ca253fd0-8068-11e4-98c0-5254008ea111'} dmd = drv.DrbdManageIscsiDriver(configuration=self.configuration) dmd.odm = DrbdManageFakeDriver() dmd.delete_snapshot(testsnap) self.assertEqual("list_snapshots", dmd.odm.calls[0][0]) self.assertEqual("remove_snapshot", dmd.odm.calls[1][0])
def test_create_snapshot(self): testsnap = {'id': 'ca253fd0-8068-11e4-98c0-5254008ea111', 'volume_id': 'ba253fd0-8068-11e4-98c0-5254008ea111'} dmd = drv.DrbdManageIscsiDriver(configuration=self.configuration) dmd.odm = DrbdManageFakeDriver() dmd.create_snapshot(testsnap) self.assertEqual("list_volumes", dmd.odm.next_call()) self.assertEqual("list_assignments", dmd.odm.next_call()) self.assertEqual("create_snapshot", dmd.odm.next_call()) self.assertIn('node', dmd.odm.call_parm(3))
def test_unit_conversions(self): dmd = drv.DrbdManageIscsiDriver(configuration=self.configuration) self.assertEqual(1048576, dmd._vol_size_to_dm(1)) self.assertEqual(1, dmd._vol_size_to_cinder(1048576)) self.assertEqual(5368709120, dmd._vol_size_to_dm(5120)) self.assertEqual(5120, dmd._vol_size_to_cinder(5368709120)) self.assertEqual(10737418240, dmd._vol_size_to_dm(10240)) self.assertEqual(10240, dmd._vol_size_to_cinder(10737418240))
def test_local_path(self): testvol = {'project_id': 'testprjid', 'name': 'testvol', 'size': 1, 'id': 'ba253fd0-8068-11e4-98c0-5254008ea111', 'volume_type_id': 'drbdmanage', 'created_at': timeutils.utcnow()} dmd = drv.DrbdManageIscsiDriver(configuration=self.configuration) dmd.odm = DrbdManageFakeDriver() data = dmd.local_path(testvol) self.assertTrue(data.startswith("/dev/drbd"))
def test_delete_volume(self): testvol = {'project_id': 'testprjid', 'name': 'testvol', 'size': 1, 'id': 'ba253fd0-8068-11e4-98c0-5254008ea111', 'volume_type_id': 'drbdmanage', 'created_at': timeutils.utcnow()} dmd = drv.DrbdManageIscsiDriver(configuration=self.configuration) dmd.odm = DrbdManageFakeDriver() dmd.delete_volume(testvol) self.assertEqual("list_volumes", dmd.odm.next_call()) self.assertEqual(testvol['id'], dmd.odm.call_parm(3)["aux:cinder-id"]) self.assertEqual("remove_volume", dmd.odm.next_call())
def test_create_volume_from_snapshot(self): snap = { 'project_id': 'testprjid', 'name': 'testvol', 'volume_size': 1, 'id': 'ba253fd0-8068-11e4-98c0-5254008ea111', 'volume_type_id': 'drbdmanage', 'created_at': timeutils.utcnow() } newvol = {'id': 'ca253fd0-8068-11e4-98c0-5254008ea111'} dmd = drv.DrbdManageIscsiDriver(configuration=self.configuration) dmd.odm = DrbdManageFakeDriver() dmd.create_volume_from_snapshot(newvol, snap) self.assertEqual("list_snapshots", dmd.odm.calls[0][0]) self.assertEqual("restore_snapshot", dmd.odm.calls[1][0]) self.assertEqual("run_external_plugin", dmd.odm.calls[2][0])
def test_extend_volume(self): testvol = {'project_id': 'testprjid', 'name': 'testvol', 'size': 1, 'id': 'ba253fd0-8068-11e4-98c0-5254008ea111', 'volume_type_id': 'drbdmanage', 'created_at': timeutils.utcnow()} dmd = drv.DrbdManageIscsiDriver(configuration=self.configuration) dmd.odm = DrbdManageFakeDriver() dmd.extend_volume(testvol, 5) self.assertEqual("list_volumes", dmd.odm.calls[0][0]) self.assertEqual(testvol['id'], dmd.odm.calls[0][3]["aux:cinder-id"]) self.assertEqual("resize_volume", dmd.odm.calls[1][0]) self.assertEqual("res", dmd.odm.calls[1][1]) self.assertEqual(2, dmd.odm.calls[1][2]) self.assertEqual(-1, dmd.odm.calls[1][3]) self.assertEqual(5242880, dmd.odm.calls[1][4])
def test_create_volume(self): testvol = {'project_id': 'testprjid', 'name': 'testvol', 'size': 1, 'id': 'deadbeef-8068-11e4-98c0-5254008ea111', 'volume_type_id': 'drbdmanage', 'created_at': timeutils.utcnow()} dmd = drv.DrbdManageIscsiDriver(configuration=self.configuration) dmd.drbdmanage_devs_on_controller = False dmd.odm = DrbdManageFakeDriver() dmd.create_volume(testvol) self.assertEqual("create_resource", dmd.odm.calls[0][0]) self.assertEqual("list_volumes", dmd.odm.calls[1][0]) self.assertEqual("create_volume", dmd.odm.calls[2][0]) self.assertEqual(1048576, dmd.odm.calls[2][2]) self.assertEqual("auto_deploy", dmd.odm.calls[3][0]) self.assertEqual(len(dmd.odm.calls), 4)
def test_create_cloned_volume_larger_size(self): srcvol = { 'project_id': 'testprjid', 'name': 'testvol', 'size': 1, 'id': 'ba253fd0-8068-11e4-98c0-5254008ea111', 'volume_type_id': 'drbdmanage', 'created_at': timeutils.utcnow() } newvol = {'size': 5, 'id': 'ca253fd0-8068-11e4-98c0-5254008ea111'} dmd = drv.DrbdManageIscsiDriver(configuration=self.configuration) dmd.odm = DrbdManageFakeDriver() dmd.create_cloned_volume(newvol, srcvol) self.assertEqual("list_volumes", dmd.odm.next_call()) self.assertEqual("list_assignments", dmd.odm.next_call()) self.assertEqual("create_snapshot", dmd.odm.next_call()) self.assertEqual("run_external_plugin", dmd.odm.next_call()) self.assertEqual("list_snapshots", dmd.odm.next_call()) self.assertEqual("restore_snapshot", dmd.odm.next_call()) self.assertEqual("set_drbdsetup_props", dmd.odm.next_call()) self.assertEqual("set_drbdsetup_props", dmd.odm.next_call()) self.assertEqual("set_drbdsetup_props", dmd.odm.next_call()) self.assertEqual("run_external_plugin", dmd.odm.next_call()) # resize image checks self.assertEqual("list_volumes", dmd.odm.next_call()) self.assertEqual(newvol['id'], dmd.odm.call_parm(3)["aux:cinder-id"]) self.assertEqual("resize_volume", dmd.odm.next_call()) self.assertEqual("res", dmd.odm.call_parm(1)) self.assertEqual(2, dmd.odm.call_parm(2)) self.assertEqual(-1, dmd.odm.call_parm(3)) self.assertEqual(5242880, dmd.odm.call_parm(4)) self.assertEqual("run_external_plugin", dmd.odm.next_call()) self.assertEqual("list_snapshots", dmd.odm.next_call()) self.assertEqual("remove_snapshot", dmd.odm.next_call())