def test_cast_create_volume(self, mock_time): props = {} spec = {'volume_id': None, 'source_volid': None, 'snapshot_id': None, 'image_id': None, 'source_replicaid': None, 'consistencygroup_id': None, 'cgsnapshot_id': None} # Fake objects assert specs task = create_volume.VolumeCastTask( fake_volume_api.FakeSchedulerRpcAPI(spec, self), fake_volume_api.FakeVolumeAPI(spec, self), fake_volume_api.FakeDb()) task._cast_create_volume(self.ctxt, spec, props) spec = {'volume_id': 1, 'source_volid': 2, 'snapshot_id': 3, 'image_id': 4, 'source_replicaid': 5, 'consistencygroup_id': 5, 'cgsnapshot_id': None} # Fake objects assert specs task = create_volume.VolumeCastTask( fake_volume_api.FakeSchedulerRpcAPI(spec, self), fake_volume_api.FakeVolumeAPI(spec, self), fake_volume_api.FakeDb()) task._cast_create_volume(self.ctxt, spec, props)
def test_cast_create_volume(self, consistencygroup_get_by_id, mock_time, mock_extract_host, volume_get_by_id): mock_time.side_effect = self.time_inc volume = fake_volume.fake_volume_obj(self.ctxt) volume_get_by_id.return_value = volume props = {} cg_obj = (fake_consistencygroup.fake_consistencyobject_obj( self.ctxt, consistencygroup_id=1, host='host@backend#pool')) consistencygroup_get_by_id.return_value = cg_obj spec = { 'volume_id': None, 'volume': None, 'source_volid': None, 'snapshot_id': None, 'image_id': None, 'source_replicaid': None, 'consistencygroup_id': None, 'cgsnapshot_id': None, 'group_id': None, } # Fake objects assert specs task = create_volume.VolumeCastTask( fake_volume_api.FakeSchedulerRpcAPI(spec, self), fake_volume_api.FakeVolumeAPI(spec, self), fake_volume_api.FakeDb()) task._cast_create_volume(self.ctxt, spec, props) spec = { 'volume_id': volume.id, 'volume': volume, 'source_volid': 2, 'snapshot_id': 3, 'image_id': 4, 'source_replicaid': 5, 'consistencygroup_id': 5, 'cgsnapshot_id': None, 'group_id': None, } # Fake objects assert specs task = create_volume.VolumeCastTask( fake_volume_api.FakeSchedulerRpcAPI(spec, self), fake_volume_api.FakeVolumeAPI(spec, self), fake_volume_api.FakeDb()) task._cast_create_volume(self.ctxt, spec, props) consistencygroup_get_by_id.assert_called_once_with(self.ctxt, 5) mock_extract_host.assert_called_once_with('host@backend#pool')
def test_cast_create_volume(self, consistencygroup_get_by_id, mock_time, volume_get_by_id): volume = fake_volume.fake_volume_obj(self.ctxt) volume_get_by_id.return_value = volume props = {} consistencygroup_obj = \ fake_consistencygroup.fake_consistencyobject_obj( self.ctxt, consistencygroup_id=1, host=None) consistencygroup_get_by_id.return_value = consistencygroup_obj spec = { 'volume_id': None, 'source_volid': None, 'snapshot_id': None, 'image_id': None, 'source_replicaid': None, 'consistencygroup_id': None, 'cgsnapshot_id': None } # Fake objects assert specs task = create_volume.VolumeCastTask( fake_volume_api.FakeSchedulerRpcAPI(spec, self), fake_volume_api.FakeVolumeAPI(spec, self), fake_volume_api.FakeDb()) task._cast_create_volume(self.ctxt, spec, props) spec = { 'volume_id': 1, 'source_volid': 2, 'snapshot_id': 3, 'image_id': 4, 'source_replicaid': 5, 'consistencygroup_id': 5, 'cgsnapshot_id': None } # Fake objects assert specs task = create_volume.VolumeCastTask( fake_volume_api.FakeSchedulerRpcAPI(spec, self), fake_volume_api.FakeVolumeAPI(spec, self), fake_volume_api.FakeDb()) task._cast_create_volume(self.ctxt, spec, props) consistencygroup_get_by_id.assert_called_once_with(self.ctxt, 5)
def test_cast_manage_existing(self): volume = mock.MagicMock(return_value=None) spec = { 'name': 'name', 'description': 'description', 'host': 'host', 'ref': 'ref', 'volume_type': 'volume_type', 'metadata': 'metadata', 'availability_zone': 'availability_zone', 'bootable': 'bootable' } # Fake objects assert specs task = manage_existing.ManageCastTask( fake_volume_api.FakeSchedulerRpcAPI(spec, self), fake_volume_api.FakeDb()) create_what = spec.copy() create_what.update({'volume': volume}) task.execute(self.ctxt, **create_what) volume = mock.MagicMock(return_value={'id': 1}) spec = { 'name': 'name', 'description': 'description', 'host': 'host', 'ref': 'ref', 'volume_type': 'volume_type', 'metadata': 'metadata', 'availability_zone': 'availability_zone', 'bootable': 'bootable' } # Fake objects assert specs task = manage_existing.ManageCastTask( fake_volume_api.FakeSchedulerRpcAPI(spec, self), fake_volume_api.FakeDb()) create_what = spec.copy() create_what.update({'volume': volume}) task.execute(self.ctxt, **create_what)
def test_revert_manage_existing_with_ft_failure(self): fake_db = fake_volume_api.FakeDb() fake_db.volume_destroy = mock.MagicMock() mock_failure = mock.Mock(spec=ft.Failure) task = manage_existing.EntryCreateTask(fake_db) task.revert(self.ctxt, mock_failure) # Check DB entry task is not destroyed fake_db.volume_destroy.assert_not_called()
def test_revert_manage_existing(self): fake_db = fake_volume_api.FakeDb() fake_db.volume_destroy = mock.MagicMock() self.ctxt.elevated = mock.Mock() task = manage_existing.EntryCreateTask(fake_db) task.revert(self.ctxt, {'volume_id': fakes.VOLUME_ID}) # Check DB entry task is destroyed fake_db.volume_destroy.assert_called_once_with( self.ctxt.elevated.return_value, fakes.VOLUME_ID)
def test_cast_manage_existing_revert(self): volume = fake_volume.fake_volume_obj(self.ctxt) volume.save = mock.MagicMock() # Fake objects assert specs task = manage_existing.ManageCastTask( fake_volume_api.FakeSchedulerRpcAPI({}, self), fake_volume_api.FakeDb()) flow_failures = [mock.MagicMock()] task.revert(self.ctxt, {}, flow_failures, volume) # Check that volume status is updated and saved self.assertEqual('error_managing', volume.status) volume.save.assert_called_once()
def test_create_db_entry_task_with_multiattach(self): fake_volume_type = fake_volume.fake_volume_type_obj( self.ctxt, extra_specs={'multiattach': '<is> True'}) spec = { 'name': 'name', 'description': 'description', 'host': 'host', 'ref': 'ref', 'volume_type': fake_volume_type, 'metadata': {}, 'availability_zone': 'availability_zone', 'bootable': 'bootable', 'volume_type_id': fake_volume_type.id, 'cluster_name': 'fake_cluster' } task = manage_existing.EntryCreateTask(fake_volume_api.FakeDb()) result = task.execute(self.ctxt, **spec) self.assertTrue(result['volume_properties']['multiattach'])
def test_cast_manage_existing(self): volume = fake_volume.fake_volume_obj(self.ctxt) spec = { 'name': 'name', 'description': 'description', 'host': 'host', 'ref': 'ref', 'volume_type': 'volume_type', 'metadata': 'metadata', 'availability_zone': 'availability_zone', 'bootable': 'bootable', 'volume_id': volume.id, } # Fake objects assert specs task = manage_existing.ManageCastTask( fake_volume_api.FakeSchedulerRpcAPI(spec, self), fake_volume_api.FakeDb()) create_what = spec.copy() create_what.update({'volume': volume}) create_what.pop('volume_id') task.execute(self.ctxt, **create_what)