Ejemplo n.º 1
0
    def test_pvc_deletion_measurement_performance(self, teardown_factory,
                                                  pvc_size):
        """
        Measuring PVC deletion time is within supported limits
        """
        logging.info('Start creating new PVC')

        pvc_obj = helpers.create_pvc(sc_name=self.sc_obj.name, size=pvc_size)
        helpers.wait_for_resource_state(pvc_obj, constants.STATUS_BOUND)
        pvc_obj.reload()
        pv_name = pvc_obj.backed_pv
        pvc_reclaim_policy = pvc_obj.reclaim_policy
        teardown_factory(pvc_obj)
        pvc_obj.delete()
        logging.info('Start deletion of PVC')
        pvc_obj.ocp.wait_for_delete(pvc_obj.name)
        if pvc_reclaim_policy == constants.RECLAIM_POLICY_DELETE:
            helpers.validate_pv_delete(pvc_obj.backed_pv)
        delete_time = helpers.measure_pvc_deletion_time(
            self.interface, pv_name)
        # Deletion time for CephFS PVC is a little over 3 seconds
        deletion_time = 4 if self.interface == constants.CEPHFILESYSTEM else 3
        logging.info(f"PVC deleted in {delete_time} seconds")
        if delete_time > deletion_time:
            raise ex.PerformanceException(
                f"PVC deletion time is {delete_time} and greater than {deletion_time} second"
            )
        push_to_pvc_time_dashboard(self.interface, "deletion", delete_time)
Ejemplo n.º 2
0
 def finalizer():
     """
     Delete the resources created in the test
     """
     for instance in instances[::-1]:
         if not instance.is_deleted:
             instance.delete()
             instance.ocp.wait_for_delete(instance.name)
             if instance.kind == constants.PVC:
                 if instance.reclaim_policy == constants.RECLAIM_POLICY_DELETE:
                     helpers.validate_pv_delete(instance.backed_pv)
Ejemplo n.º 3
0
 def finalizer():
     """
     Delete multiple PVCs
     """
     if hasattr(class_instance, 'pvc_objs'):
         for pvc_obj in class_instance.pvc_objs:
             pvc_obj.reload()
             backed_pv_name = pvc_obj.backed_pv
             pvc_obj.delete()
         for pvc_obj in class_instance.pvc_objs:
             pvc_obj.ocp.wait_for_delete(pvc_obj.name)
             helpers.validate_pv_delete(backed_pv_name)
    def cleanup(self):
        """
        Removes resources created during test execution and verifies
        the reclaim policy is honored
        """

        pod_objs = pod.get_all_pods(namespace=self.namespace)
        if len(pod_objs) > 0:
            for pod_obj in pod_objs:
                pod_obj.delete()
                pod_obj.ocp.wait_for_delete(resource_name=pod_obj.name)

        if hasattr(self, 'pvc_obj'):
            pv_obj = self.pvc_obj.backed_pv_obj
            self.pvc_obj.delete()

            try:
                assert helpers.validate_pv_delete(pv_obj.name)

            except AssertionError:
                if self.reclaim_policy == constants.RECLAIM_POLICY_RETAIN:
                    helpers.wait_for_resource_state(pv_obj,
                                                    constants.STATUS_RELEASED)
                    # TODO: deletion of ceph rbd image, blocked by BZ#1723656
                    pv_obj.delete()

                else:
                    raise UnexpectedBehaviour(
                        f"PV {pv_obj.name} is not deleted after deleting PVC")

        if hasattr(self, 'sc_obj'):
            self.sc_obj.delete()
Ejemplo n.º 5
0
def verify_pv_not_exists(pvc_obj, cbp_name, rbd_image_id):
    """
    Ensure that pv does not exists
    """

    # Validate on ceph side
    logger.info(f"Verifying PV {pvc_obj.backed_pv} exists on backend")

    status = helpers.verify_volume_deleted_in_backend(
        interface=constants.CEPHBLOCKPOOL,
        image_uuid=rbd_image_id,
        pool_name=cbp_name)

    if not status:
        raise UnexpectedBehaviour(f"PV {pvc_obj.backed_pv} exists on backend")
    logger.info(f"Expected: PV {pvc_obj.backed_pv} "
                f"doesn't exist on backend after deleting PVC")

    # Validate on oc side
    logger.info("Verifying whether PV is deleted")
    try:
        assert helpers.validate_pv_delete(pvc_obj.backed_pv)
    except AssertionError as ecf:
        assert "not found" in str(ecf), (
            f"Unexpected: PV {pvc_obj.backed_pv} still exists")
    logger.info(f"Expected: PV should not be found "
                f"after deleting corresponding PVC")
Ejemplo n.º 6
0
    def cleanup(self):
        """
        Removes resources created in dynamic_pvc_base() and verifies
        the reclaim policy is honored
        """
        if hasattr(self, 'pvc_obj'):
            pv_obj = self.pvc_obj.backed_pv_obj
            self.pvc_obj.delete()

            try:
                assert helpers.validate_pv_delete(pv_obj.name)

            except AssertionError:
                if self.reclaim_policy == constants.RECLAIM_POLICY_RETAIN:
                    assert helpers.wait_for_resource_state(
                        pv_obj, constants.STATUS_RELEASED)
                    # TODO: deletion of ceph rbd image, blocked by BZ#1723656
                    pv_obj.delete()

                else:
                    raise UnexpectedBehaviour(
                        f"PV {pv_obj.name} is not deleted after deleting PVC")

        if hasattr(self, 'sc_obj'):
            self.sc_obj.delete()
 def finalizer():
     for instance in pvcs:
         if not instance.is_deleted:
             instance.delete()
             instance.ocp.wait_for_delete(
                 instance.name
             )
         assert helpers.validate_pv_delete(instance.backed_pv)
def teardown_fs():
    global CEPHFS_PVC_OBJ, CEPHFS_POD_OBJ
    log.info('deleting cephfs pod')
    CEPHFS_POD_OBJ.delete()
    log.info('deleting cephfs pvc')
    CEPHFS_PVC_OBJ.delete()
    assert helpers.validate_pv_delete(CEPHFS_PVC_OBJ.backed_pv)
    log.info("Deleting CEPHFS Secret")
    CEPHFS_SECRET_OBJ.delete()
    log.info("Deleting CephFS Storageclass")
    CEPHFS_SC_OBJ.delete()
def teardown_rbd():
    """
    Tearing down the environment
    Deleting pod,replicated pool,pvc,storageclass,secret of rbd
    """
    global RBD_PVC_OBJ, RBD_POD_OBJ
    log.info('deleting rbd pod')
    RBD_POD_OBJ.delete()
    log.info("Deleting RBD PVC")
    RBD_PVC_OBJ.delete()
    assert helpers.validate_pv_delete(RBD_PVC_OBJ.backed_pv)
    log.info("Deleting CEPH BLOCK POOL")
    RBD_POOL.delete()
    log.info("Deleting RBD Secret")
    RBD_SECRET_OBJ.delete()
    log.info("Deleting RBD Storageclass")
    RBD_SC_OBJ.delete()
Ejemplo n.º 10
0
 def finalizer():
     """
         Delete the resources created during the test
         """
     failed_to_delete = []
     for resource_type in pod, pvc, storageclass:
         for resource in resource_type:
             resource.delete()
             try:
                 resource.ocp.wait_for_delete(resource.name)
             except TimeoutError:
                 failed_to_delete.append(resource)
             if resource.kind == constants.PVC:
                 log.info("Checking whether PV is deleted")
                 assert helpers.validate_pv_delete(resource.backed_pv)
     if failed_to_delete:
         raise ResourceLeftoversException(
             f"Failed to delete resources: {failed_to_delete}")