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))
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)