Exemplo n.º 1
0
    def test_delete(self):
        """
        Test the delete of a vDisk
            - Create 2 vDisks with identical names on 2 different vPools
            - Delete 1st vDisk and verify other still remains on correct vPool
            - Delete 2nd vDisk and verify no more volumes left
        """
        structure = DalHelper.build_dal_structure({
            'vpools': [1, 2],
            'domains': [1],
            'storagerouters': [1],
            'storagedrivers':
            [(1, 1, 1), (2, 2, 1)],  # (<id>, <vpool_id>, <storagerouter_id>)
            'mds_services': [(1, 1), (2, 2)]
        }  # (<id>, <storagedriver_id>)
                                                  )
        domains = structure['domains']
        storagedrivers = structure['storagedrivers']

        vdisk1 = VDisk(
            VDiskController.create_new(
                volume_name='vdisk_1',
                volume_size=1024**3,
                storagedriver_guid=storagedrivers[1].guid))
        vdisk2 = VDisk(
            VDiskController.create_new(
                volume_name='vdisk_1',
                volume_size=1024**3,
                storagedriver_guid=storagedrivers[2].guid))

        vdisk_domain = VDiskDomain()
        vdisk_domain.domain = domains[1]
        vdisk_domain.vdisk = vdisk1
        vdisk_domain.save()

        # Delete vDisk1 and make some assertions
        VDiskController.delete(vdisk_guid=vdisk1.guid)
        with self.assertRaises(ObjectNotFoundException):
            VDisk(vdisk1.guid)
        self.assertEqual(
            first=len(VDiskController.list_volumes()),
            second=1,
            msg='Expected to find only 1 volume in Storage Driver list_volumes'
        )
        self.assertIn(member=vdisk2,
                      container=VDiskList.get_vdisks(),
                      msg='vDisk2 should still be modeled')

        # Delete vDisk2 and make some assertions
        VDiskController.delete(vdisk_guid=vdisk2.guid)
        with self.assertRaises(ObjectNotFoundException):
            VDisk(vdisk2.guid)
        self.assertEqual(
            first=len(VDiskController.list_volumes()),
            second=0,
            msg=
            'Expected to find no more volumes in Storage Driver list_volumes')
Exemplo n.º 2
0
    def test_delete(self):
        """
        Test the delete of a vDisk
            - Create 2 vDisks with identical names on 2 different vPools
            - Delete 1st vDisk and verify other still remains on correct vPool
            - Delete 2nd vDisk and verify no more volumes left
        """
        structure = Helper.build_service_structure(
            {'vpools': [1, 2],
             'domains': [1],
             'storagerouters': [1],
             'storagedrivers': [(1, 1, 1), (2, 2, 1)],  # (<id>, <vpool_id>, <storagerouter_id>)
             'mds_services': [(1, 1), (2, 2)]}  # (<id>, <storagedriver_id>)
        )
        domains = structure['domains']
        storagedrivers = structure['storagedrivers']

        vdisk1 = VDisk(VDiskController.create_new(volume_name='vdisk_1', volume_size=1024 ** 3, storagedriver_guid=storagedrivers[1].guid))
        vdisk2 = VDisk(VDiskController.create_new(volume_name='vdisk_1', volume_size=1024 ** 3, storagedriver_guid=storagedrivers[2].guid))

        vdisk_domain = VDiskDomain()
        vdisk_domain.domain = domains[1]
        vdisk_domain.vdisk = vdisk1
        vdisk_domain.save()

        # Delete vDisk1 and make some assertions
        VDiskController.delete(vdisk_guid=vdisk1.guid)
        with self.assertRaises(ObjectNotFoundException):
            VDisk(vdisk1.guid)
        self.assertEqual(first=len(VDiskController.list_volumes()),
                         second=1,
                         msg='Expected to find only 1 volume in Storage Driver list_volumes')
        self.assertIn(member=vdisk2,
                      container=VDiskList.get_vdisks(),
                      msg='vDisk2 should still be modeled')

        # Delete vDisk2 and make some assertions
        VDiskController.delete(vdisk_guid=vdisk2.guid)
        with self.assertRaises(ObjectNotFoundException):
            VDisk(vdisk2.guid)
        self.assertEqual(first=len(VDiskController.list_volumes()),
                         second=0,
                         msg='Expected to find no more volumes in Storage Driver list_volumes')
 def _check_volumedriver_remove(vpool_name, vdisk_name, present=True):
     """
     Remove a vdisk from a vpool
     :param vdisk_name: name of a vdisk (e.g. test.raw)
     :type vdisk_name: str
     :param vpool_name: name of a vpool
     :type vpool_name: str
     :param present: should the disk be present?
     :type present: bool
     :return: True if disk is not present anymore
     :rtype: bool
     """
     try:
         vdisk = VDiskHelper.get_vdisk_by_name(vdisk_name=vdisk_name, vpool_name=vpool_name)
         VDiskController.delete(vdisk.guid)
         return True
     except VDiskNotFoundError:
         # not found, if it should be present, re-raise the exception
         if present:
             raise
         else:
             return True
Exemplo n.º 4
0
    def _execute_test(cls):
        """
        Mimics the healthcheck creating and deleting disks with the same name/devicename back to back
        :return: None
        """
        local_sr = SystemHelper.get_local_storagerouter()
        cls.LOGGER.info("Starting creation/deletion test.")
        # Elect vpool
        assert len(
            local_sr.storagedrivers
        ) > 0, 'Node {0} has no storagedriver. Cannot test {1}'.format(
            local_sr.ip, VDiskControllerTester.TEST_NAME)
        random_storagedriver = local_sr.storagedrivers[random.randint(
            0,
            len(local_sr.storagedrivers) - 1)]
        vpool = random_storagedriver.vpool
        disk_size = 1024**3
        disk_name = 'ci_scenario_rapid_create_delete_same_device'
        exceptions = []
        for loop in xrange(0, 100):
            test_passed = False
            try:
                cls.LOGGER.info("Creating new disk.")
                try:
                    VDiskController.create_new(disk_name, disk_size,
                                               random_storagedriver.guid)
                except Exception as ex:
                    cls.LOGGER.error(
                        'Creation failed. Got {0} in iteration {1}'.format(
                            str(ex), loop))
                    exceptions.append(
                        'Creation failed. Got {0} in iteration {1}'.format(
                            str(ex), loop))
                    continue
                cls.LOGGER.info("Fetching new disk.")
                try:
                    vdisk = VDiskHelper.get_vdisk_by_name(
                        '{0}.raw'.format(disk_name), vpool.name)
                except Exception as ex:
                    cls.LOGGER.error(
                        'Fetch failed. Got {0} in iteration {1}'.format(
                            str(ex), loop))
                    exceptions.append(
                        'Fetch failed. Got {0} in iteration {1}'.format(
                            str(ex), loop))
                    continue
                cls.LOGGER.info("Deleting new disk.")
                try:
                    VDiskController.delete(vdisk_guid=vdisk.guid)
                except Exception as ex:
                    cls.LOGGER.error(
                        'Delete failed. Got {0} in iteration {1}'.format(
                            str(ex), loop))
                    exceptions.append(
                        'Delete failed. Got {0} in iteration {1}'.format(
                            str(ex), loop))
                test_passed = True
            except Exception as ex:
                cls.LOGGER.error(
                    'Unexpected exception occurred during loop {0}. Got {1}.'.
                    format(loop, str(ex)))
            finally:
                try:
                    cls._cleanup_vdisk(disk_name, vpool.name, not test_passed)
                except Exception as ex:
                    cls.LOGGER.error(
                        "Auto cleanup failed with {0} in iteration {1}.".
                        format(str(ex), loop))
                    exceptions.append(
                        'Auto cleanup failed, got {0} in iteration {1}'.format(
                            str(ex), loop))

        assert len(
            exceptions
        ) == 0, 'Exception occurred during the creation of vdisks with the same devicename. Got {0}'.format(
            ', '.join(exceptions))

        cls.LOGGER.info("Finished create/delete test.")