From 032e695f510252f9a512f4b29dda8b3f530b70e2 Mon Sep 17 00:00:00 2001 From: "cnv-tests-github-webhook-dollierp[bot]" Date: Tue, 14 Jul 2026 18:35:29 +0300 Subject: [PATCH] CherryPicked: [cnv-4.20] [4.21][Storage] De-quarantine libguestfs test and use data source (#5577) Cherry-pick from `cnv-4.21` branch, original PR: https://github.com/RedHatQE/openshift-virtualization-tests/pull/5263, PR owner: ema-aka-young --------- Co-authored-by: Emanuele Prella Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Signed-off-by: cnv-tests-github-webhook-dollierp[bot] --- tests/storage/test_libguestfs.py | 46 ++++++++++++++++++++------------ tests/storage/utils.py | 23 ---------------- 2 files changed, 29 insertions(+), 40 deletions(-) diff --git a/tests/storage/test_libguestfs.py b/tests/storage/test_libguestfs.py index 2f555266b5..7241633643 100644 --- a/tests/storage/test_libguestfs.py +++ b/tests/storage/test_libguestfs.py @@ -1,3 +1,9 @@ +""" +Test virtctl guestfs command with specific user. + +Jira: https://redhat.atlassian.net/browse/CNV-7487 # +""" + from subprocess import check_output import pexpect @@ -5,9 +11,9 @@ from ocp_resources.pod import Pod from pytest_testconfig import config as py_config -from tests.storage.utils import create_cirros_dv -from utilities.constants import QUARANTINED, TIMEOUT_1MIN, UNPRIVILEGED_PASSWORD, UNPRIVILEGED_USER +from utilities.constants import TIMEOUT_1MIN, TIMEOUT_10MIN, UNPRIVILEGED_PASSWORD, UNPRIVILEGED_USER from utilities.infra import login_with_user_password +from utilities.storage import create_dv, get_dv_size_from_datasource pytestmark = pytest.mark.post_upgrade @@ -22,17 +28,19 @@ def virtctl_libguestfs_by_user( f"virtctl guestfs {dv_created_by_specific_user.name} -n {dv_created_by_specific_user.namespace} \ {fs_group_flag}" ) - + libguestfs_pod = Pod( + client=unprivileged_client, + name=f"libguestfs-tools-{dv_created_by_specific_user.name}", + namespace=dv_created_by_specific_user.namespace, + ) + libguestfs_pod.wait_for_status(status=Pod.Status.RUNNING, timeout=TIMEOUT_10MIN) guestfs_proc.send("\n\n") - guestfs_proc.expect("$", timeout=TIMEOUT_1MIN) + guestfs_proc.expect(r"\$", timeout=TIMEOUT_1MIN) yield guestfs_proc guestfs_proc.send("exit\n") guestfs_proc.expect(pexpect.EOF, timeout=TIMEOUT_1MIN) guestfs_proc.close() - Pod( - name=f"libguestfs-tools-{dv_created_by_specific_user.name}", - namespace=dv_created_by_specific_user.namespace, - ).wait_deleted() + libguestfs_pod.wait_deleted() @pytest.fixture @@ -40,13 +48,22 @@ def dv_created_by_specific_user( request, namespace, client_for_test, + fedora_data_source_scope_module, ): - yield from create_cirros_dv( - name=request.param["data_volume_name"], - namespace=namespace.name, + with create_dv( + dv_name=request.param["data_volume_name"], storage_class=py_config["default_storage_class"], client=client_for_test, - ) + namespace=namespace.name, + source_ref={ + "kind": fedora_data_source_scope_module.kind, + "name": fedora_data_source_scope_module.name, + "namespace": fedora_data_source_scope_module.namespace, + }, + size=get_dv_size_from_datasource(data_source=fedora_data_source_scope_module), + ) as dv: + dv.wait_for_dv_success() + yield dv @pytest.fixture() @@ -67,10 +84,6 @@ def client_for_test(request, admin_client, unprivileged_client): ) -@pytest.mark.xfail( - reason=f"{QUARANTINED}: the test is not stable; tracked in CNV-62312", - run=False, -) @pytest.mark.parametrize( ( "client_for_test", @@ -91,7 +104,6 @@ def client_for_test(request, admin_client, unprivileged_client): indirect=True, ) def test_virtctl_libguestfs_with_specific_user( - client_for_test, virtctl_libguestfs_by_user, ): virtctl_libguestfs_by_user.sendline("libguestfs-test-tool") diff --git a/tests/storage/utils.py b/tests/storage/utils.py index 33c08804b5..62e6495b86 100644 --- a/tests/storage/utils.py +++ b/tests/storage/utils.py @@ -371,29 +371,6 @@ def create_windows19_vm(dv_name, namespace, client, vm_name, cpu_model, storage_ ) -def create_cirros_dv( - namespace, - name, - storage_class, - access_modes=None, - volume_mode=None, - client=None, - dv_size=Images.Cirros.DEFAULT_DV_SIZE, -): - with create_dv( - dv_name=f"dv-{name}", - namespace=namespace, - url=get_http_image_url(image_directory=Images.Cirros.DIR, image_name=Images.Cirros.QCOW2_IMG), - size=dv_size, - storage_class=storage_class, - access_modes=access_modes, - volume_mode=volume_mode, - client=client, - ) as dv: - dv.wait_for_dv_success() - yield dv - - def check_snapshot_indication(snapshot, is_online): snapshot_indications = snapshot.instance.status.indications online = "Online"