Exemple #1
0
    def test_multi_refresh_on_slaves_deactivate_error(self):
        vgName = "test_vg"
        sr_uuid = str(uuid.uuid4())
        vdi_uuid = str(uuid.uuid4())
        lv_name = 'test_lv'

        lock_ref = lvhdutil.NS_PREFIX_LVM + sr_uuid

        self.mock_lvmcache.deactivate.side_effect = util.CommandException(
            errno.EIO, 'activate')

        args = {
            "vgName": vgName,
            "action1": "activate",
            "uuid1": vdi_uuid,
            "ns1": lock_ref,
            "lvName1": lv_name,
            "action2": "refresh",
            "lvName2": lv_name,
            "action3": "deactivate",
            "uuid3": vdi_uuid,
            "ns3": lock_ref,
            "lvName3": lv_name
        }

        with self.assertRaises(util.CommandException):
            on_slave.multi(self.session, args)

        self.mock_lvmcache.activate.assert_called_once_with(
            lock_ref, vdi_uuid, lv_name, False)
        self.mock_lvmcache.activateNoRefcount.assert_called_once_with(
            lv_name, True)
        self.mock_lvmcache.deactivate.assert_called_once_with(
            lock_ref, vdi_uuid, lv_name, False)
Exemple #2
0
    def test_multi_rename_refresh_error(self, mock_refcount):
        vgName = "test_vg"
        old_name_lv = "old-lv-name"
        vdi_fileName = "test-vdi.vhd"
        origParentUuid = str(uuid.uuid4())
        vdi_uuid = str(uuid.uuid4())

        lock_ref = lvhdutil.NS_PREFIX_LVM + vdi_uuid

        self.mock_lvmcache.activateNoRefcount.side_effect = util.CommandException(
            errno.EIO, 'activate')

        args = {
            "vgName": vgName,
            "action1": "deactivateNoRefcount",
            "lvName1": old_name_lv,
            "action2": "refresh",
            "lvName2": vdi_fileName,
            "action3": "cleanupLockAndRefcount",
            "uuid3": origParentUuid,
            "ns3": lock_ref
        }

        with self.assertRaises(util.CommandException):
            on_slave.multi(self.session, args)

        self.mock_lvmcache.deactivateNoRefcount.assert_called_once_with(
            old_name_lv)
        self.assertEqual(0, mock_refcount.reset.call_count)
Exemple #3
0
    def test_multi_refresh_on_slaves(self):
        vgName = "test_vg"
        sr_uuid = str(uuid.uuid4())
        vdi_uuid = str(uuid.uuid4())
        lv_name = 'test_lv'

        lock_ref = lvhdutil.NS_PREFIX_LVM + sr_uuid

        args = {
            "vgName": vgName,
            "action1": "activate",
            "uuid1": vdi_uuid,
            "ns1": lock_ref,
            "lvName1": lv_name,
            "action2": "refresh",
            "lvName2": lv_name,
            "action3": "deactivate",
            "uuid3": vdi_uuid,
            "ns3": lock_ref,
            "lvName3": lv_name
        }

        on_slave.multi(self.session, args)

        self.mock_lvmcache.activate.assert_called_once_with(
            lock_ref, vdi_uuid, lv_name, False)
        self.mock_lvmcache.activateNoRefcount.assert_called_once_with(
            lv_name, True)
        self.mock_lvmcache.deactivate.assert_called_once_with(
            lock_ref, vdi_uuid, lv_name, False)
Exemple #4
0
    def test_multi_update_slave_rename(self, mock_refcount):
        vgName = "test_vg"
        old_name_lv = "old-lv-name"
        vdi_fileName = "test-vdi.vhd"
        origParentUuid = str(uuid.uuid4())
        vdi_uuid = str(uuid.uuid4())

        lock_ref = lvhdutil.NS_PREFIX_LVM + vdi_uuid

        args = {
            "vgName": vgName,
            "action1": "deactivateNoRefcount",
            "lvName1": old_name_lv,
            "action2": "refresh",
            "lvName2": vdi_fileName,
            "action3": "cleanupLockAndRefcount",
            "uuid3": origParentUuid,
            "ns3": lock_ref
        }

        on_slave.multi(self.session, args)
        self.mock_lvmcache.deactivateNoRefcount.assert_called_once_with(
            old_name_lv)
        self.mock_lvmcache.activateNoRefcount.assert_called_once_with(
            vdi_fileName, True)
        mock_refcount.reset.assert_called_once_with(origParentUuid, lock_ref)
Exemple #5
0
    def test_multi_undo_leaf_coalesce(self):
        vgName = "test_vg"
        sr_uuid = str(uuid.uuid4())
        child_uuid = str(uuid.uuid4())
        child_fileName = "child-vdi.vhd"
        parent_fileName = "parent-vdi.vhd"
        tmpName = lvhdutil.LV_PREFIX[vhdutil.VDI_TYPE_VHD] + \
                self.TMP_RENAME_PREFIX + child_uuid

        args = {
            "vgName": vgName,
            "action1": "deactivateNoRefcount",
            "lvName1": tmpName,
            "action2": "deactivateNoRefcount",
            "lvName2": child_fileName,
            "action3": "refresh",
            "lvName3": child_fileName,
            "action4": "refresh",
            "lvName4": parent_fileName
        }

        on_slave.multi(self.session, args)

        self.mock_lvmcache.deactivateNoRefcount.assert_has_calls(
            [mock.call(tmpName), mock.call(child_fileName)])
        self.mock_lvmcache.activateNoRefcount.assert_has_calls([
            mock.call(child_fileName, True),
            mock.call(parent_fileName, True)
        ])
Exemple #6
0
    def test_multi_vdi_inactive(self, mock_refcount):
        vgName = "test_vg"
        sr_uuid = str(uuid.uuid4())
        vdi_uuid = str(uuid.uuid4())
        vdi_fileName = "test-vdi.vhd"
        lock_ref = lvhdutil.NS_PREFIX_LVM + sr_uuid

        args = {
            "vgName": vgName,
            "action1": "deactivateNoRefcount",
            "lvName1": vdi_fileName,
            "action2": "cleanupLockAndRefcount",
            "uuid2": vdi_uuid,
            "ns2": lock_ref
        }

        on_slave.multi(self.session, args)

        self.mock_lvmcache.deactivateNoRefcount.assert_called_once_with(
            vdi_fileName)
        mock_refcount.reset.assert_called_once_with(vdi_uuid, lock_ref)
Exemple #7
0
    def test_multi_bad_operation(self):
        args = {"vgName": 'test-vg', "action1": "bad_operation"}

        with self.assertRaises(util.SMException):
            on_slave.multi(self.session, args)