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_image_lu_in_use(self): # The orphan will trigger a warning as we cycle through all the LUs # without finding any backed by this image. with self.assertLogs(ts.__name__, 'WARNING'): self.assertFalse(ts._image_lu_in_use(self.ssp, self.img_lu1)) self.assertTrue(ts._image_lu_in_use(self.ssp, self.img_lu2))