From ae1d09176c66a1ce8bafed54c233f756dbb1f6d5 Mon Sep 17 00:00:00 2001 From: Adam Cinko Date: Thu, 30 Apr 2026 13:38:16 +0200 Subject: [PATCH 1/5] add vTPM for vm from memory dump test Signed-off-by: Adam Cinko --- tests/storage/memory_dump/conftest.py | 39 +++++++++++++------ tests/storage/memory_dump/test_memory_dump.py | 14 +++---- utilities/constants.py | 1 + 3 files changed, 34 insertions(+), 20 deletions(-) diff --git a/tests/storage/memory_dump/conftest.py b/tests/storage/memory_dump/conftest.py index 9020107baa..3b44edcc59 100644 --- a/tests/storage/memory_dump/conftest.py +++ b/tests/storage/memory_dump/conftest.py @@ -5,27 +5,44 @@ import pytest from ocp_resources.datavolume import DataVolume from ocp_resources.persistent_volume_claim import PersistentVolumeClaim +from ocp_resources.virtual_machine_cluster_instancetype import VirtualMachineClusterInstancetype +from ocp_resources.virtual_machine_cluster_preference import VirtualMachineClusterPreference from tests.storage.memory_dump.utils import wait_for_memory_dump_status_completed -from utilities.constants import TIMEOUT_2MIN, Images -from utilities.storage import PodWithPVC, get_containers_for_pods_with_pvc, virtctl_memory_dump -from utilities.virt import running_vm, vm_instance_from_template +from utilities.constants import OS_FLAVOR_WINDOWS, TIMEOUT_2MIN, U1_LARGE, WINDOWS_2K22_PREFERENCE, Images +from utilities.storage import ( + PodWithPVC, + data_volume_template_with_source_ref_dict, + get_containers_for_pods_with_pvc, + virtctl_memory_dump, +) +from utilities.virt import VirtualMachineForTests, running_vm, wait_for_windows_vm @pytest.fixture() -def windows_vm_for_memory_dump( - request, +def windows_vm_with_vtpm_for_memory_dump( unprivileged_client, namespace, golden_image_data_source_scope_function, + cpu_for_migration, ): - with vm_instance_from_template( - request=request, - unprivileged_client=unprivileged_client, - namespace=namespace, - data_source=golden_image_data_source_scope_function, + from pytest_testconfig import config as py_config + + with VirtualMachineForTests( + name="windows-vm-mem", + namespace=namespace.name, + client=unprivileged_client, + os_flavor=OS_FLAVOR_WINDOWS, + vm_instance_type=VirtualMachineClusterInstancetype(name=U1_LARGE, client=unprivileged_client), + vm_preference=VirtualMachineClusterPreference(name=WINDOWS_2K22_PREFERENCE, client=unprivileged_client), + data_volume_template=data_volume_template_with_source_ref_dict( + data_source=golden_image_data_source_scope_function, + storage_class=py_config["default_storage_class"], + ), + cpu_model=cpu_for_migration, ) as vm: - running_vm(vm=vm) + running_vm(vm=vm, wait_for_interfaces=False, check_ssh_connectivity=False) + wait_for_windows_vm(vm=vm, version="2022") yield vm diff --git a/tests/storage/memory_dump/test_memory_dump.py b/tests/storage/memory_dump/test_memory_dump.py index 5d71061236..dd8dca8ca5 100644 --- a/tests/storage/memory_dump/test_memory_dump.py +++ b/tests/storage/memory_dump/test_memory_dump.py @@ -5,24 +5,20 @@ import pytest from pytest_testconfig import config as py_config -from tests.os_params import WINDOWS_LATEST, WINDOWS_LATEST_LABELS from tests.storage.memory_dump.utils import wait_for_memory_dump_status_removed +from utilities.constants import Images @pytest.mark.tier3 @pytest.mark.parametrize( - "golden_image_data_volume_scope_function, windows_vm_for_memory_dump", + "golden_image_data_source_scope_function", [ pytest.param( { - "dv_name": "dv-windows", - "image": WINDOWS_LATEST.get("image_path"), + "dv_name": "dv-windows-2022", + "image": f"{Images.Windows.DIR}/{Images.Windows.WIN2022_IMG}", "storage_class": py_config["default_storage_class"], - "dv_size": WINDOWS_LATEST.get("dv_size"), - }, - { - "vm_name": "windows-vm-mem", - "template_labels": WINDOWS_LATEST_LABELS, + "dv_size": Images.Windows.DEFAULT_DV_SIZE, }, marks=pytest.mark.polarion("CNV-8518"), ), diff --git a/utilities/constants.py b/utilities/constants.py index 4ba19fd9c7..73e11ea36f 100644 --- a/utilities/constants.py +++ b/utilities/constants.py @@ -819,6 +819,7 @@ class NamespacesNames: RHEL8_PREFERENCE = "rhel.8" RHEL9_PREFERENCE = "rhel.9" RHEL10_PREFERENCE = "rhel.10" +WINDOWS_2K22_PREFERENCE = "windows.2k22" U1_SMALL = "u1.small" U1_LARGE = "u1.large" PROMETHEUS_K8S = "prometheus-k8s" From f7908d41f896dcd7d5dd98f4327aeb705c277b30 Mon Sep 17 00:00:00 2001 From: Adam Cinko Date: Mon, 4 May 2026 13:18:57 +0200 Subject: [PATCH 2/5] move import to the top Signed-off-by: Adam Cinko --- tests/storage/memory_dump/conftest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/storage/memory_dump/conftest.py b/tests/storage/memory_dump/conftest.py index 3b44edcc59..429deee9cf 100644 --- a/tests/storage/memory_dump/conftest.py +++ b/tests/storage/memory_dump/conftest.py @@ -7,6 +7,7 @@ from ocp_resources.persistent_volume_claim import PersistentVolumeClaim from ocp_resources.virtual_machine_cluster_instancetype import VirtualMachineClusterInstancetype from ocp_resources.virtual_machine_cluster_preference import VirtualMachineClusterPreference +from pytest_testconfig import config as py_config from tests.storage.memory_dump.utils import wait_for_memory_dump_status_completed from utilities.constants import OS_FLAVOR_WINDOWS, TIMEOUT_2MIN, U1_LARGE, WINDOWS_2K22_PREFERENCE, Images @@ -26,7 +27,6 @@ def windows_vm_with_vtpm_for_memory_dump( golden_image_data_source_scope_function, cpu_for_migration, ): - from pytest_testconfig import config as py_config with VirtualMachineForTests( name="windows-vm-mem", From af93ccb8d7b535c07cc311effefa2e509261cfed Mon Sep 17 00:00:00 2001 From: Adam Cinko Date: Wed, 6 May 2026 08:57:17 +0200 Subject: [PATCH 3/5] create vm using registry Signed-off-by: Adam Cinko --- tests/storage/memory_dump/conftest.py | 63 ++++++++++++++----- tests/storage/memory_dump/test_memory_dump.py | 22 +------ 2 files changed, 50 insertions(+), 35 deletions(-) diff --git a/tests/storage/memory_dump/conftest.py b/tests/storage/memory_dump/conftest.py index 429deee9cf..e45004ebf8 100644 --- a/tests/storage/memory_dump/conftest.py +++ b/tests/storage/memory_dump/conftest.py @@ -10,10 +10,23 @@ from pytest_testconfig import config as py_config from tests.storage.memory_dump.utils import wait_for_memory_dump_status_completed -from utilities.constants import OS_FLAVOR_WINDOWS, TIMEOUT_2MIN, U1_LARGE, WINDOWS_2K22_PREFERENCE, Images +from utilities.artifactory import ( + cleanup_artifactory_secret_and_config_map, + get_artifactory_config_map, + get_artifactory_secret, + get_test_artifact_server_url, +) +from utilities.constants import ( + OS_FLAVOR_WIN_CONTAINER_DISK, + TIMEOUT_2MIN, + U1_LARGE, + WIN_2K22, + WINDOWS_2K22_PREFERENCE, + Images, +) +from utilities.os_utils import get_windows_container_disk_path from utilities.storage import ( PodWithPVC, - data_volume_template_with_source_ref_dict, get_containers_for_pods_with_pvc, virtctl_memory_dump, ) @@ -24,27 +37,43 @@ def windows_vm_with_vtpm_for_memory_dump( unprivileged_client, namespace, - golden_image_data_source_scope_function, cpu_for_migration, ): + artifactory_secret = get_artifactory_secret(namespace=namespace.name) + artifactory_config_map = get_artifactory_config_map(namespace=namespace.name) + + dv = DataVolume( + name="windows-2022-dv", + namespace=namespace.name, + storage_class=py_config["default_storage_class"], + source="registry", + url=f"{get_test_artifact_server_url(schema='registry')}/{get_windows_container_disk_path(os_value=WIN_2K22)}", + size=Images.Windows.CONTAINER_DISK_DV_SIZE, + client=unprivileged_client, + api_name="storage", + secret=artifactory_secret, + cert_configmap=artifactory_config_map.name, + ) + dv.to_dict() with VirtualMachineForTests( name="windows-vm-mem", namespace=namespace.name, client=unprivileged_client, - os_flavor=OS_FLAVOR_WINDOWS, + os_flavor=OS_FLAVOR_WIN_CONTAINER_DISK, vm_instance_type=VirtualMachineClusterInstancetype(name=U1_LARGE, client=unprivileged_client), vm_preference=VirtualMachineClusterPreference(name=WINDOWS_2K22_PREFERENCE, client=unprivileged_client), - data_volume_template=data_volume_template_with_source_ref_dict( - data_source=golden_image_data_source_scope_function, - storage_class=py_config["default_storage_class"], - ), + data_volume_template={"metadata": dv.res["metadata"], "spec": dv.res["spec"]}, cpu_model=cpu_for_migration, ) as vm: running_vm(vm=vm, wait_for_interfaces=False, check_ssh_connectivity=False) wait_for_windows_vm(vm=vm, version="2022") yield vm + cleanup_artifactory_secret_and_config_map( + artifactory_secret=artifactory_secret, artifactory_config_map=artifactory_config_map + ) + @pytest.fixture() def pvc_for_windows_memory_dump(unprivileged_client, namespace, storage_class_with_filesystem_volume_mode): @@ -66,11 +95,11 @@ def pvc_for_windows_memory_dump(unprivileged_client, namespace, storage_class_wi @pytest.fixture() -def windows_vm_memory_dump(namespace, windows_vm_for_memory_dump, pvc_for_windows_memory_dump): +def windows_vm_memory_dump(namespace, windows_vm_with_vtpm_for_memory_dump, pvc_for_windows_memory_dump): status, out, err = virtctl_memory_dump( action="get", namespace=namespace.name, - vm_name=windows_vm_for_memory_dump.name, + vm_name=windows_vm_with_vtpm_for_memory_dump.name, claim_name=pvc_for_windows_memory_dump.name, ) assert status, f"Failed to get memory dump, out: {out}, err: {err}." @@ -78,12 +107,14 @@ def windows_vm_memory_dump(namespace, windows_vm_for_memory_dump, pvc_for_window @pytest.fixture() -def windows_vm_memory_dump_completed(windows_vm_for_memory_dump): - wait_for_memory_dump_status_completed(vm=windows_vm_for_memory_dump) +def windows_vm_memory_dump_completed(windows_vm_with_vtpm_for_memory_dump): + wait_for_memory_dump_status_completed(vm=windows_vm_with_vtpm_for_memory_dump) @pytest.fixture() -def consumer_pod_for_verifying_windows_memory_dump(namespace, windows_vm_for_memory_dump, pvc_for_windows_memory_dump): +def consumer_pod_for_verifying_windows_memory_dump( + namespace, windows_vm_with_vtpm_for_memory_dump, pvc_for_windows_memory_dump +): with PodWithPVC( namespace=namespace.name, name="consumer-pod", @@ -96,18 +127,18 @@ def consumer_pod_for_verifying_windows_memory_dump(namespace, windows_vm_for_mem pod.wait_for_status(status=pod.Status.RUNNING, timeout=TIMEOUT_2MIN) assert re.match( - rf"{windows_vm_for_memory_dump.name}-{pvc_for_windows_memory_dump.name}-\d*-\d*.memory.dump", + rf"{windows_vm_with_vtpm_for_memory_dump.name}-{pvc_for_windows_memory_dump.name}-\d*-\d*.memory.dump", pod.execute(command=shlex.split("bash -c 'ls -1 /pvc | grep dump'")), re.IGNORECASE, ), "Memory dump file doesn't exist" @pytest.fixture() -def windows_vm_memory_dump_deletion(namespace, windows_vm_for_memory_dump): +def windows_vm_memory_dump_deletion(namespace, windows_vm_with_vtpm_for_memory_dump): status, out, err = virtctl_memory_dump( action="remove", namespace=namespace.name, - vm_name=windows_vm_for_memory_dump.name, + vm_name=windows_vm_with_vtpm_for_memory_dump.name, ) assert status, f"Failed to remove memory dump, out: {out}, err: {err}." yield diff --git a/tests/storage/memory_dump/test_memory_dump.py b/tests/storage/memory_dump/test_memory_dump.py index dd8dca8ca5..eabc712966 100644 --- a/tests/storage/memory_dump/test_memory_dump.py +++ b/tests/storage/memory_dump/test_memory_dump.py @@ -3,35 +3,19 @@ """ import pytest -from pytest_testconfig import config as py_config from tests.storage.memory_dump.utils import wait_for_memory_dump_status_removed -from utilities.constants import Images @pytest.mark.tier3 -@pytest.mark.parametrize( - "golden_image_data_source_scope_function", - [ - pytest.param( - { - "dv_name": "dv-windows-2022", - "image": f"{Images.Windows.DIR}/{Images.Windows.WIN2022_IMG}", - "storage_class": py_config["default_storage_class"], - "dv_size": Images.Windows.DEFAULT_DV_SIZE, - }, - marks=pytest.mark.polarion("CNV-8518"), - ), - ], - indirect=True, -) +@pytest.mark.polarion("CNV-8518") def test_windows_memory_dump( namespace, - windows_vm_for_memory_dump, + windows_vm_with_vtpm_for_memory_dump, pvc_for_windows_memory_dump, windows_vm_memory_dump, windows_vm_memory_dump_completed, consumer_pod_for_verifying_windows_memory_dump, windows_vm_memory_dump_deletion, ): - wait_for_memory_dump_status_removed(vm=windows_vm_for_memory_dump) + wait_for_memory_dump_status_removed(vm=windows_vm_with_vtpm_for_memory_dump) From 5cf1ab1436868dba1ba2dbeab7a051a53fab3a8a Mon Sep 17 00:00:00 2001 From: Adam Cinko Date: Fri, 22 May 2026 12:21:58 +0200 Subject: [PATCH 4/5] use predefined win 2022 functions Signed-off-by: Adam Cinko --- tests/storage/memory_dump/conftest.py | 65 +++++++-------------------- tests/storage/test_hotplug.py | 8 ++-- tests/utils.py | 12 ++--- utilities/constants.py | 1 - 4 files changed, 27 insertions(+), 59 deletions(-) diff --git a/tests/storage/memory_dump/conftest.py b/tests/storage/memory_dump/conftest.py index e45004ebf8..1ce16f6bf9 100644 --- a/tests/storage/memory_dump/conftest.py +++ b/tests/storage/memory_dump/conftest.py @@ -5,75 +5,44 @@ import pytest from ocp_resources.datavolume import DataVolume from ocp_resources.persistent_volume_claim import PersistentVolumeClaim -from ocp_resources.virtual_machine_cluster_instancetype import VirtualMachineClusterInstancetype -from ocp_resources.virtual_machine_cluster_preference import VirtualMachineClusterPreference from pytest_testconfig import config as py_config from tests.storage.memory_dump.utils import wait_for_memory_dump_status_completed -from utilities.artifactory import ( - cleanup_artifactory_secret_and_config_map, - get_artifactory_config_map, - get_artifactory_secret, - get_test_artifact_server_url, -) +from tests.utils import create_windows2022_dv_template_from_registry, create_windows2022_vm_with_vtpm from utilities.constants import ( - OS_FLAVOR_WIN_CONTAINER_DISK, TIMEOUT_2MIN, - U1_LARGE, - WIN_2K22, - WINDOWS_2K22_PREFERENCE, Images, ) -from utilities.os_utils import get_windows_container_disk_path from utilities.storage import ( PodWithPVC, get_containers_for_pods_with_pvc, virtctl_memory_dump, ) -from utilities.virt import VirtualMachineForTests, running_vm, wait_for_windows_vm @pytest.fixture() def windows_vm_with_vtpm_for_memory_dump( unprivileged_client, namespace, - cpu_for_migration, + modern_cpu_for_migration, ): - artifactory_secret = get_artifactory_secret(namespace=namespace.name) - artifactory_config_map = get_artifactory_config_map(namespace=namespace.name) - - dv = DataVolume( - name="windows-2022-dv", - namespace=namespace.name, - storage_class=py_config["default_storage_class"], - source="registry", - url=f"{get_test_artifact_server_url(schema='registry')}/{get_windows_container_disk_path(os_value=WIN_2K22)}", - size=Images.Windows.CONTAINER_DISK_DV_SIZE, - client=unprivileged_client, - api_name="storage", - secret=artifactory_secret, - cert_configmap=artifactory_config_map.name, - ) - dv.to_dict() - - with VirtualMachineForTests( - name="windows-vm-mem", - namespace=namespace.name, - client=unprivileged_client, - os_flavor=OS_FLAVOR_WIN_CONTAINER_DISK, - vm_instance_type=VirtualMachineClusterInstancetype(name=U1_LARGE, client=unprivileged_client), - vm_preference=VirtualMachineClusterPreference(name=WINDOWS_2K22_PREFERENCE, client=unprivileged_client), - data_volume_template={"metadata": dv.res["metadata"], "spec": dv.res["spec"]}, - cpu_model=cpu_for_migration, - ) as vm: - running_vm(vm=vm, wait_for_interfaces=False, check_ssh_connectivity=False) - wait_for_windows_vm(vm=vm, version="2022") + with ( + create_windows2022_dv_template_from_registry( + dv_name="windows-2022-dv", + namespace=namespace.name, + client=unprivileged_client, + storage_class=py_config["default_storage_class"], + ) as dv_template, + create_windows2022_vm_with_vtpm( + vm_name="windows-2022-vm", + namespace=namespace.name, + client=unprivileged_client, + dv_template=dv_template, + cpu_model=modern_cpu_for_migration, + ) as vm, + ): yield vm - cleanup_artifactory_secret_and_config_map( - artifactory_secret=artifactory_secret, artifactory_config_map=artifactory_config_map - ) - @pytest.fixture() def pvc_for_windows_memory_dump(unprivileged_client, namespace, storage_class_with_filesystem_volume_mode): diff --git a/tests/storage/test_hotplug.py b/tests/storage/test_hotplug.py index 9a85843336..30a1b82d84 100644 --- a/tests/storage/test_hotplug.py +++ b/tests/storage/test_hotplug.py @@ -11,7 +11,7 @@ from ocp_resources.storage_profile import StorageProfile from tests.storage.utils import assert_disk_bus -from tests.utils import create_windows2022_dv_from_registry, create_windows2022_vm_with_vtpm_from_registry +from tests.utils import create_windows2022_dv_template_from_registry, create_windows2022_vm_with_vtpm from utilities.constants import HOTPLUG_DISK_SCSI_BUS, HOTPLUG_DISK_SERIAL, HOTPLUG_DISK_VIRTIO_BUS, Images from utilities.hco import ResourceEditorValidateHCOReconcile from utilities.jira import is_jira_open @@ -78,7 +78,7 @@ def windows_dv_from_registry_scope_class( storage_class_matrix__class__, ): """Creates a Windows 2022 DataVolume from registry container disk.""" - with create_windows2022_dv_from_registry( + with create_windows2022_dv_template_from_registry( dv_name="dv-windows-2022-hotplug", namespace=namespace.name, client=unprivileged_client, @@ -95,8 +95,8 @@ def vm_instance_from_template_multi_storage_scope_class( windows_dv_from_registry_scope_class, ): """Creates a Windows 2022 VM with vTPM from registry container disk.""" - with create_windows2022_vm_with_vtpm_from_registry( - dv_dict=windows_dv_from_registry_scope_class, + with create_windows2022_vm_with_vtpm( + dv_template=windows_dv_from_registry_scope_class, namespace=namespace.name, client=unprivileged_client, vm_name="vm-win-2022-hotplug", diff --git a/tests/utils.py b/tests/utils.py index 1ab4742c0e..ca944f1670 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -702,14 +702,14 @@ def verify_rwx_default_storage(client: DynamicClient) -> None: @contextmanager -def create_windows2022_dv_from_registry( +def create_windows2022_dv_template_from_registry( dv_name: str, namespace: str, client: DynamicClient, storage_class: str, ) -> Generator[dict]: """ - Creates a Windows Server 2022 DataVolume from registry container disk. + Creates a Windows Server 2022 DataVolume template from registry container disk. Args: dv_name: Name for the DataVolume @@ -746,8 +746,8 @@ def create_windows2022_dv_from_registry( @contextmanager -def create_windows2022_vm_with_vtpm_from_registry( - dv_dict: dict, +def create_windows2022_vm_with_vtpm( + dv_template: dict, namespace: str, client: DynamicClient, vm_name: str, @@ -757,7 +757,7 @@ def create_windows2022_vm_with_vtpm_from_registry( Creates a Windows Server 2022 VM with vTPM from registry container disk. Args: - dv_dict: DataVolume template dictionary with metadata and spec + dv_template: DataVolume template dictionary with metadata and spec namespace: Kubernetes namespace client: Kubernetes client vm_name: Name for the VirtualMachine @@ -773,7 +773,7 @@ def create_windows2022_vm_with_vtpm_from_registry( os_flavor=OS_FLAVOR_WIN_CONTAINER_DISK, vm_instance_type=VirtualMachineClusterInstancetype(name=U1_LARGE, client=client), vm_preference=VirtualMachineClusterPreference(name=WINDOWS_2K22_PREFERENCE, client=client), - data_volume_template=dv_dict, + data_volume_template=dv_template, cpu_model=cpu_model, ) as vm: running_vm(vm=vm) diff --git a/utilities/constants.py b/utilities/constants.py index 73e11ea36f..4ba19fd9c7 100644 --- a/utilities/constants.py +++ b/utilities/constants.py @@ -819,7 +819,6 @@ class NamespacesNames: RHEL8_PREFERENCE = "rhel.8" RHEL9_PREFERENCE = "rhel.9" RHEL10_PREFERENCE = "rhel.10" -WINDOWS_2K22_PREFERENCE = "windows.2k22" U1_SMALL = "u1.small" U1_LARGE = "u1.large" PROMETHEUS_K8S = "prometheus-k8s" From cfcd6b3b70aa6b7913edca999d804a00591c003d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 30 Jun 2026 07:48:22 +0000 Subject: [PATCH 5/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/storage/memory_dump/conftest.py | 1 - tests/storage/test_hotplug.py | 1 - 2 files changed, 2 deletions(-) diff --git a/tests/storage/memory_dump/conftest.py b/tests/storage/memory_dump/conftest.py index fc14920a64..5226bc0995 100644 --- a/tests/storage/memory_dump/conftest.py +++ b/tests/storage/memory_dump/conftest.py @@ -11,7 +11,6 @@ from utilities.constants import Images from utilities.constants.timeouts import TIMEOUT_2MIN from utilities.storage import PodWithPVC, get_containers_for_pods_with_pvc, virtctl_memory_dump -from utilities.virt import running_vm, vm_instance_from_template @pytest.fixture() diff --git a/tests/storage/test_hotplug.py b/tests/storage/test_hotplug.py index ac96557a04..6f85252fd2 100644 --- a/tests/storage/test_hotplug.py +++ b/tests/storage/test_hotplug.py @@ -14,7 +14,6 @@ from ocp_resources.storage_profile import StorageProfile from tests.storage.utils import assert_disk_bus -from tests.utils import create_windows2022_dv_from_registry, create_windows2022_vm_with_vtpm_from_registry from utilities.constants import Images from utilities.constants.storage import HOTPLUG_DISK_SCSI_BUS, HOTPLUG_DISK_SERIAL, HOTPLUG_DISK_VIRTIO_BUS from utilities.hco import ResourceEditorValidateHCOReconcile