Beispiel #1
0
    def test_dynamic_provisioning_block_vol_with_custom_prefix(self):
        """Verify creation of block volume with custom prefix
        """
        node = self.ocp_master_node[0]
        prefix = "autotest-{}".format(utils.get_random_str())

        # cmd to get available space
        cmd_get_free_space = "df -h | grep '/mnt'| awk '{{print $4}}'"

        # cmd to create a 100M file
        cmd_run_io = 'dd if=/dev/zero of=/mnt/testfile bs=1024 count=102400'

        # Create sc with prefix
        sc_name = self.create_storage_class(sc_name_prefix=prefix,
                                            create_vol_name_prefix=True,
                                            vol_name_prefix=prefix)

        # Create pvc and wait for it to be in bound state
        pvc_name = self.create_and_wait_for_pvc(sc_name=sc_name, pvc_size=1)

        # Verify blockvolume list with prefix
        h_block_vol = heketi_blockvolume_list_by_name_prefix(
            self.heketi_client_node, self.heketi_server_url, prefix)
        self.assertIsNotNone(
            h_block_vol,
            "Failed to find blockvolume with prefix {}".format(prefix))
        self.assertTrue(
            h_block_vol[0][2].startswith(prefix),
            "Failed to create blockvolume with the prefix {}".format(prefix))

        # Create app pod
        dc_name, pod_name = self.create_dc_with_pvc(pvc_name)

        err_msg = ("Failed to get the free space for the mount point of the "
                   "app pod {} with error {}")
        # Get free space of app pod before IO run
        _, free_space_before, err = oc_rsh(node, pod_name, cmd_get_free_space)
        self.assertTrue(free_space_before, err_msg.format(pod_name, err))

        # Running IO on the app pod
        ret, _, err = oc_rsh(node, pod_name, cmd_run_io)
        self.assertFalse(
            ret, "Failed to run the Io with the error msg {}".format(err))

        # Get free space of app pod after IO run
        _, free_space_after, err = oc_rsh(node, pod_name, cmd_get_free_space)
        self.assertTrue(free_space_after, err_msg.format(pod_name, err))
        self.assertGreaterEqual(
            free_space_before, free_space_after,
            "Expecting free space in app pod before {} should be greater than"
            " {} as 100M file is created".format(free_space_before,
                                                 free_space_after))
Beispiel #2
0
    def validate_volumes_and_blocks(self):
        """Validates PVC and block volumes generated through heketi and OCS
        """
        heketi_operations = heketi_server_operations_list(
            self.heketi_client_node,
            self.heketi_server_url,
            secret=self.heketi_cli_key,
            user=self.heketi_cli_user)

        for heketi_operation in heketi_operations:
            if heketi_operation["status"] == "failed":
                heketi_server_operation_cleanup(self.heketi_client_node,
                                                self.heketi_server_url,
                                                heketi_operation["id"],
                                                secret=self.heketi_cli_key,
                                                user=self.heketi_cli_user)

        # verify pvc status is in "Bound" for all the pvc
        for pvc in self.pvc_list:
            verify_pvc_status_is_bound(self.oc_node,
                                       pvc,
                                       timeout=300,
                                       wait_step=10)

        # validate pvcs and pvs created on OCS
        match_pvc_and_pv(self.oc_node, self.prefix)

        # get list of block volumes using heketi
        h_blockvol_list = heketi_blockvolume_list_by_name_prefix(
            self.heketi_client_node, self.heketi_server_url, self.prefix)

        # validate block volumes listed by heketi and pvs
        heketi_blockvolume_ids = sorted([bv[0] for bv in h_blockvol_list])
        match_pv_and_heketi_block_volumes(self.oc_node, heketi_blockvolume_ids,
                                          self.prefix)

        # validate block volumes listed by heketi and gluster
        heketi_blockvolume_names = sorted(
            [bv[1].replace("%s_" % self.prefix, "") for bv in h_blockvol_list])
        match_heketi_and_gluster_block_volumes_by_prefix(
            heketi_blockvolume_names, "%s_" % self.prefix)