def delete_disks(self, context, instance, storage_elems): """Removes the disks specified by the mappings. :param context: nova context for operation :param instance: instance to delete the disk for. :param storage_elems: A list of the storage elements (LU ElementWrappers) that are to be deleted. Derived from the return value from disconnect_image_disk. """ tsk_stg.rm_ssp_storage(self._ssp, storage_elems)
def test_rm_ssp_storage(self): lu_names = set(lu.name for lu in self.ssp.logical_units) # This one should remove the disk LU but *not* the image LU ssp = ts.rm_ssp_storage(self.ssp, [self.dsk_lu3], del_unused_images=False) lu_names.remove(self.dsk_lu3.name) self.assertEqual(lu_names, set(lu.name for lu in ssp.logical_units)) # This one should remove *both* the disk LU and the image LU ssp = ts.rm_ssp_storage(self.ssp, [self.dsk_lu4]) lu_names.remove(self.dsk_lu4.name) lu_names.remove(self.img_lu2.name) self.assertEqual(lu_names, set(lu.name for lu in ssp.logical_units)) # This one should remove the disk LU but *not* the image LU, even # though it's now unused. self.assertTrue(ts._image_lu_in_use(self.ssp, self.img_lu5)) ssp = ts.rm_ssp_storage(self.ssp, [self.dsk_lu6], del_unused_images=False) lu_names.remove(self.dsk_lu6.name) self.assertEqual(lu_names, set(lu.name for lu in ssp.logical_units)) self.assertFalse(ts._image_lu_in_use(self.ssp, self.img_lu5)) # No update if no change self.adpt.update_by_path = lambda *a, **k: self.fail() ssp = ts.rm_ssp_storage(self.ssp, [self.dsk_lu4])
def test_rm_lu_by_lu(self): lu = self.ssp.logical_units[2] ssp = ts.rm_ssp_storage(self.ssp, [lu]) self.assertNotIn(lu, ssp.logical_units) self.assertEqual(ssp.etag, 'after') self.assertEqual(len(ssp.logical_units), 4)