diff --git a/conftest.py b/conftest.py index be246762ec..ae34d8ae7d 100644 --- a/conftest.py +++ b/conftest.py @@ -73,6 +73,11 @@ validate_collected_tests_arch_params, ) +pytest_plugins = [ + "tests.fixtures.network.l2_bridge", + "tests.fixtures.network.cluster", +] + LOGGER = logging.getLogger(__name__) BASIC_LOGGER = logging.getLogger("basic") diff --git a/tests/network/libs/apimachinery.py b/libs/net/apimachinery.py similarity index 100% rename from tests/network/libs/apimachinery.py rename to libs/net/apimachinery.py diff --git a/libs/net/cluster.py b/libs/net/cluster.py index 06522d47e1..a3f8ce3125 100644 --- a/libs/net/cluster.py +++ b/libs/net/cluster.py @@ -29,3 +29,15 @@ def ipv6_supported_cluster() -> bool: def _cluster_ip_family_supported(ip_family: int) -> bool: return any(ipaddress.ip_network(ip).version == ip_family for ip in py_config.get("cluster_service_network")) + + +@cache +def cluster_vlans() -> list[int]: + """Return VLAN IDs from test config as normalized integers. + + Supports both list input and comma-separated string input from py_config["vlans"]. + """ + vlans = py_config["vlans"] + if not isinstance(vlans, list): + vlans = vlans.split(",") + return [int(vlan_id) for vlan_id in vlans] diff --git a/tests/network/libs/nodenetworkconfigurationpolicy.py b/libs/net/nodenetworkconfigurationpolicy.py similarity index 98% rename from tests/network/libs/nodenetworkconfigurationpolicy.py rename to libs/net/nodenetworkconfigurationpolicy.py index 0269bbb685..2476da7945 100644 --- a/tests/network/libs/nodenetworkconfigurationpolicy.py +++ b/libs/net/nodenetworkconfigurationpolicy.py @@ -12,7 +12,7 @@ from ocp_resources.resource import Resource, ResourceEditor from timeout_sampler import retry -from tests.network.libs.apimachinery import dict_normalization_for_dataclass +from libs.net.apimachinery import dict_normalization_for_dataclass WAIT_FOR_STATUS_TIMEOUT_SEC = 120 WAIT_FOR_STATUS_INTERVAL_SEC = 5 diff --git a/libs/net/vmspec.py b/libs/net/vmspec.py index 7a8eee4708..b5328bb6be 100644 --- a/libs/net/vmspec.py +++ b/libs/net/vmspec.py @@ -2,6 +2,7 @@ import ipaddress from collections.abc import Callable +from copy import deepcopy from typing import TYPE_CHECKING, Any, Final from kubernetes.dynamic.client import ResourceField @@ -303,3 +304,23 @@ def _vmi_condition_not_set(existing_conditions: list[ResourceField], required_co for cond in existing_conditions if cond.type == required_condition ) + + +def update_nad_references(vm: BaseVirtualMachine, nad_name_by_net: dict[str, str]) -> None: + """Update secondary network NAD references and wait for the change to be fully applied. + + Patches the VM spec atomically, then waits for the MigrationRequired condition to + appear (change detected) and disappear (migration completed). + + Args: + vm: The virtual machine to update. + nad_name_by_net: Mapping of spec network name to new NAD name. + """ + resource_version = vm.vmi.instance.metadata.resourceVersion + networks = deepcopy(vm.template_spec.networks) or [] + for network in networks: + if network.name in nad_name_by_net and network.multus: + network.multus.networkName = nad_name_by_net[network.name] + vm.set_networks(networks=networks) + wait_for_vmi_condition_status(vm=vm, condition="MigrationRequired", resource_version=resource_version) + wait_for_no_vmi_condition(vm=vm, condition="MigrationRequired") diff --git a/tests/fixtures/__init__.py b/tests/fixtures/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/fixtures/network/__init__.py b/tests/fixtures/network/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/fixtures/network/cluster.py b/tests/fixtures/network/cluster.py new file mode 100644 index 0000000000..41b6f8843a --- /dev/null +++ b/tests/fixtures/network/cluster.py @@ -0,0 +1,10 @@ +from collections.abc import Iterator + +import pytest + +from libs.net.cluster import cluster_vlans + + +@pytest.fixture(scope="module") +def cluster_vlan_ids() -> Iterator[int]: + return iter(cluster_vlans()) diff --git a/tests/fixtures/network/l2_bridge.py b/tests/fixtures/network/l2_bridge.py new file mode 100644 index 0000000000..dc93e337f2 --- /dev/null +++ b/tests/fixtures/network/l2_bridge.py @@ -0,0 +1,76 @@ +from collections.abc import Generator, Iterator + +import pytest +from kubernetes.dynamic import DynamicClient +from ocp_resources.namespace import Namespace + +from libs.net import nodenetworkconfigurationpolicy as libnncp +from libs.net.netattachdef import CNIPluginBridgeConfig, NetConfig, NetworkAttachmentDefinition +from utilities.constants.cluster import WORKER_NODE_LABEL_KEY +from utilities.constants.networking import LINUX_BRIDGE + + +@pytest.fixture(scope="package") +def bridge_nncp( + nmstate_dependent_placeholder: None, + admin_client: DynamicClient, + hosts_common_available_ports: list[str], +) -> Generator[libnncp.NodeNetworkConfigurationPolicy]: + with libnncp.NodeNetworkConfigurationPolicy( + client=admin_client, + name="l2-bridge-test-nncp", + desired_state=libnncp.DesiredState( + interfaces=[ + libnncp.Interface( + name="br1-test", + type=LINUX_BRIDGE, + state=libnncp.Resource.Interface.State.UP, + bridge=libnncp.Bridge( + port=[libnncp.Port(name=hosts_common_available_ports[-1])], + options=libnncp.BridgeOptions(libnncp.STP(enabled=False)), + ), + ) + ] + ), + node_selector={WORKER_NODE_LABEL_KEY: ""}, + ) as nncp_br: + nncp_br.wait_for_status_success() + yield nncp_br + + +@pytest.fixture(scope="module") +def bridge_nad_a( + admin_client: DynamicClient, + namespace: Namespace, + bridge_nncp: libnncp.NodeNetworkConfigurationPolicy, + cluster_vlan_ids: Iterator[int], +) -> Generator[NetworkAttachmentDefinition]: + bridge = bridge_nncp.desired_state_spec.interfaces[0].name # type: ignore + with NetworkAttachmentDefinition( + name="nad-vlan-a", + namespace=namespace.name, + config=NetConfig( + name="nad-vlan-a", plugins=[CNIPluginBridgeConfig(bridge=bridge, vlan=next(cluster_vlan_ids))] + ), + client=admin_client, + ) as nad: + yield nad + + +@pytest.fixture(scope="module") +def bridge_nad_b( + admin_client: DynamicClient, + namespace: Namespace, + bridge_nncp: libnncp.NodeNetworkConfigurationPolicy, + cluster_vlan_ids: Iterator[int], +) -> Generator[NetworkAttachmentDefinition]: + bridge = bridge_nncp.desired_state_spec.interfaces[0].name # type: ignore[union-attr, index] + with NetworkAttachmentDefinition( + name="nad-vlan-b", + namespace=namespace.name, + config=NetConfig( + name="nad-vlan-b", plugins=[CNIPluginBridgeConfig(bridge=bridge, vlan=next(cluster_vlan_ids))] + ), + client=admin_client, + ) as nad: + yield nad diff --git a/tests/network/bgp/conftest.py b/tests/network/bgp/conftest.py index 7059f0284b..40d520df33 100644 --- a/tests/network/bgp/conftest.py +++ b/tests/network/bgp/conftest.py @@ -12,6 +12,7 @@ from ocp_resources.node import Node from libs.net import netattachdef as libnad +from libs.net import nodenetworkconfigurationpolicy as libnncp from libs.net.ip import random_ipv4_address from libs.net.traffic_generator import PodTcpClient as TcpClient from libs.net.traffic_generator import TcpServer @@ -19,7 +20,6 @@ from libs.net.vmspec import lookup_iface_status_ip, lookup_primary_network from libs.vm.vm import BaseVirtualMachine from tests.network.libs import cluster_user_defined_network as libcudn -from tests.network.libs import nodenetworkconfigurationpolicy as libnncp from tests.network.libs.bgp import ( EXTERNAL_FRR_POD_LABEL, NET_TOOLS_CONTAINER_NAME, diff --git a/tests/network/conftest.py b/tests/network/conftest.py index dd5617e262..a5e3d2664f 100644 --- a/tests/network/conftest.py +++ b/tests/network/conftest.py @@ -11,11 +11,9 @@ from ocp_resources.network_config_openshift_io import Network from ocp_resources.performance_profile import PerformanceProfile from ocp_resources.pod import Pod -from pytest_testconfig import config as py_config from timeout_sampler import TimeoutExpiredError from libs.net.cluster import ipv4_supported_cluster, ipv6_supported_cluster -from tests.network.utils import get_vlan_index_number from utilities.constants import ( CLUSTER, CLUSTER_NETWORK_ADDONS_OPERATOR, @@ -95,19 +93,6 @@ def sriov_workers_node2(sriov_workers): return sriov_workers[1] -@pytest.fixture(scope="session") -def vlans_list(): - vlans = py_config["vlans"] - if not isinstance(vlans, list): - vlans = vlans.split(",") - return [int(_id) for _id in vlans] - - -@pytest.fixture(scope="module") -def vlan_index_number(vlans_list): - return get_vlan_index_number(vlans_list=vlans_list) - - @pytest.fixture(scope="session") def cluster_network_mtu(admin_client): network_resource = Network(name=CLUSTER, client=admin_client) diff --git a/tests/network/connectivity/conftest.py b/tests/network/connectivity/conftest.py index 7a9ba8cb26..6338f2b3d0 100644 --- a/tests/network/connectivity/conftest.py +++ b/tests/network/connectivity/conftest.py @@ -13,18 +13,18 @@ def bridge_device_name(index_number): @pytest.fixture(scope="module") -def vlan_id_1(vlan_index_number): - return next(vlan_index_number) +def vlan_id_1(cluster_vlan_ids): + return next(cluster_vlan_ids) @pytest.fixture(scope="module") -def vlan_id_2(vlan_index_number): - return next(vlan_index_number) +def vlan_id_2(cluster_vlan_ids): + return next(cluster_vlan_ids) @pytest.fixture(scope="module") -def vlan_id_3(vlan_index_number): - return next(vlan_index_number) +def vlan_id_3(cluster_vlan_ids): + return next(cluster_vlan_ids) @pytest.fixture(scope="class") diff --git a/tests/network/l2_bridge/bandwidth/conftest.py b/tests/network/l2_bridge/bandwidth/conftest.py index b81c8ede1c..7903469735 100644 --- a/tests/network/l2_bridge/bandwidth/conftest.py +++ b/tests/network/l2_bridge/bandwidth/conftest.py @@ -7,7 +7,7 @@ from kubernetes.dynamic import DynamicClient from ocp_resources.namespace import Namespace -import tests.network.libs.nodenetworkconfigurationpolicy as libnncp +from libs.net import nodenetworkconfigurationpolicy as libnncp from libs.net.ip import random_ip_addresses_by_family from libs.net.netattachdef import ( CNIPluginBandwidthConfig, diff --git a/tests/network/l2_bridge/conftest.py b/tests/network/l2_bridge/conftest.py index e369c025f4..09f18d9e98 100644 --- a/tests/network/l2_bridge/conftest.py +++ b/tests/network/l2_bridge/conftest.py @@ -5,7 +5,7 @@ from kubernetes.dynamic import DynamicClient from pyhelper_utils.shell import run_ssh_commands -import tests.network.libs.nodenetworkconfigurationpolicy as libnncp +from libs.net import nodenetworkconfigurationpolicy as libnncp from libs.net.ip import random_ipv4_address from libs.net.netattachdef import CNIPluginBridgeConfig, NetConfig, NetworkAttachmentDefinition from tests.network.l2_bridge.libl2bridge import DHCP_INTERFACE_NAME, bridge_attached_vm @@ -18,7 +18,6 @@ UNIQUE_CLIENT_ID, verify_dhcpd_activated, ) -from utilities.constants import LINUX_BRIDGE, WORKER_NODE_LABEL_KEY from utilities.data_utils import name_prefix from utilities.infra import get_node_selector_dict from utilities.network import ( @@ -97,11 +96,11 @@ def dhcp_nad( namespace, l2_bridge_device_worker_1, l2_bridge_device_worker_2, - vlan_index_number, + cluster_vlan_ids, bridge_device_type, l2_bridge_device_name, ): - vlan_tag = next(vlan_index_number) + vlan_tag = next(cluster_vlan_ids) with network_nad( namespace=namespace, nad_type=bridge_device_type, @@ -288,34 +287,6 @@ def started_vmb_dhcp_client(l2_bridge_running_vm_b, eth3_nmcli_connection_uuid): ) -@pytest.fixture(scope="package") -def bridge_nncp( - nmstate_dependent_placeholder: None, - admin_client: DynamicClient, - hosts_common_available_ports: list[str], -) -> Generator[libnncp.NodeNetworkConfigurationPolicy]: - with libnncp.NodeNetworkConfigurationPolicy( - client=admin_client, - name="l2-bridge-test-nncp", - desired_state=libnncp.DesiredState( - interfaces=[ - libnncp.Interface( - name="br1-test", - type=LINUX_BRIDGE, - state=libnncp.Resource.Interface.State.UP, - bridge=libnncp.Bridge( - port=[libnncp.Port(name=hosts_common_available_ports[-1])], - options=libnncp.BridgeOptions(libnncp.STP(enabled=False)), - ), - ) - ] - ), - node_selector={WORKER_NODE_LABEL_KEY: ""}, - ) as nncp_br: - nncp_br.wait_for_status_success() - yield nncp_br - - @pytest.fixture(scope="class") def bridge_nad( admin_client: DynamicClient, diff --git a/tests/network/l2_bridge/migration_stuntime/conftest.py b/tests/network/l2_bridge/migration_stuntime/conftest.py index cce99232c2..926b8cea47 100644 --- a/tests/network/l2_bridge/migration_stuntime/conftest.py +++ b/tests/network/l2_bridge/migration_stuntime/conftest.py @@ -5,8 +5,8 @@ from kubernetes.dynamic import DynamicClient from ocp_resources.namespace import Namespace -import tests.network.libs.nodenetworkconfigurationpolicy as libnncp from libs.net import netattachdef as libnad +from libs.net import nodenetworkconfigurationpolicy as libnncp from libs.net.ip import random_ipv4_address, random_ipv6_address from libs.net.vmspec import lookup_iface_status_ip from libs.vm.affinity import new_pod_affinity diff --git a/tests/network/l2_bridge/nad_ref_change/conftest.py b/tests/network/l2_bridge/nad_ref_change/conftest.py index 9eea5af6ff..6f8fa3acfd 100644 --- a/tests/network/l2_bridge/nad_ref_change/conftest.py +++ b/tests/network/l2_bridge/nad_ref_change/conftest.py @@ -5,7 +5,7 @@ from ocp_resources.namespace import Namespace from libs.net.ip import filter_link_local_addresses, random_cidr_addresses_by_family -from libs.net.netattachdef import CNIPluginBridgeConfig, NetConfig, NetworkAttachmentDefinition +from libs.net.netattachdef import NetworkAttachmentDefinition from libs.net.vmspec import lookup_iface_status, wait_for_ifaces_status from libs.vm.vm import BaseVirtualMachine from tests.network.l2_bridge.libl2bridge import LINUX_BRIDGE_IFACE_NAME_1, LINUX_BRIDGE_IFACE_NAME_2 @@ -15,48 +15,9 @@ NET_SEED, two_secondary_bridge_vm, ) -from tests.network.libs import nodenetworkconfigurationpolicy as libnncp from tests.network.libs.connectivity import ARP_ISOLATION_SYSCTL_CMD, poll_tcp_connectivity -@pytest.fixture(scope="module") -def bridge_nad_a( - admin_client: DynamicClient, - namespace: Namespace, - bridge_nncp: libnncp.NodeNetworkConfigurationPolicy, - vlan_index_number: Generator[int], -) -> Generator[NetworkAttachmentDefinition]: - bridge = bridge_nncp.desired_state_spec.interfaces[0].name # type: ignore - with NetworkAttachmentDefinition( - name="nad-vlan-a", - namespace=namespace.name, - config=NetConfig( - name="nad-vlan-a", plugins=[CNIPluginBridgeConfig(bridge=bridge, vlan=next(vlan_index_number))] - ), - client=admin_client, - ) as nad: - yield nad - - -@pytest.fixture(scope="module") -def bridge_nad_b( - admin_client: DynamicClient, - namespace: Namespace, - bridge_nncp: libnncp.NodeNetworkConfigurationPolicy, - vlan_index_number: Generator[int], -) -> Generator[NetworkAttachmentDefinition]: - bridge = bridge_nncp.desired_state_spec.interfaces[0].name # type: ignore[union-attr, index] - with NetworkAttachmentDefinition( - name="nad-vlan-b", - namespace=namespace.name, - config=NetConfig( - name="nad-vlan-b", plugins=[CNIPluginBridgeConfig(bridge=bridge, vlan=next(vlan_index_number))] - ), - client=admin_client, - ) as nad: - yield nad - - @pytest.fixture(scope="module") def ref_vm( namespace: Namespace, diff --git a/tests/network/l2_bridge/nad_ref_change/test_nad_ref_change.py b/tests/network/l2_bridge/nad_ref_change/test_nad_ref_change.py index ea415b374c..f7aceae809 100644 --- a/tests/network/l2_bridge/nad_ref_change/test_nad_ref_change.py +++ b/tests/network/l2_bridge/nad_ref_change/test_nad_ref_change.py @@ -14,7 +14,7 @@ import pytest from libs.net.ip import filter_link_local_addresses -from libs.net.vmspec import lookup_iface_status +from libs.net.vmspec import lookup_iface_status, update_nad_references from tests.network.l2_bridge.libl2bridge import LINUX_BRIDGE_IFACE_NAME_1, LINUX_BRIDGE_IFACE_NAME_2 from tests.network.l2_bridge.nad_ref_change.lib_helpers import ( GUEST_IFACE_1, @@ -22,7 +22,6 @@ assert_connectivity, assert_no_connectivity, ) -from tests.network.libs.nad_ref import update_nad_references @pytest.mark.usefixtures("baseline_connectivity") diff --git a/tests/network/libs/cloudinit.py b/tests/network/libs/cloudinit.py index 358ab8c7cb..0c442f2a26 100644 --- a/tests/network/libs/cloudinit.py +++ b/tests/network/libs/cloudinit.py @@ -3,8 +3,8 @@ import yaml +from libs.net.apimachinery import dict_normalization_for_dataclass from libs.net.cluster import ipv4_supported_cluster, ipv6_supported_cluster -from tests.network.libs.apimachinery import dict_normalization_for_dataclass NETWORK_DATA: Final[str] = "networkData" diff --git a/tests/network/libs/cluster_user_defined_network.py b/tests/network/libs/cluster_user_defined_network.py index 390b28dc79..0a11b60725 100644 --- a/tests/network/libs/cluster_user_defined_network.py +++ b/tests/network/libs/cluster_user_defined_network.py @@ -4,7 +4,7 @@ from kubernetes.dynamic import DynamicClient from ocp_resources.cluster_user_defined_network import ClusterUserDefinedNetwork as Cudn -from tests.network.libs.apimachinery import dict_normalization_for_dataclass +from libs.net.apimachinery import dict_normalization_for_dataclass from tests.network.libs.label_selector import LabelSelector diff --git a/tests/network/libs/nad_ref.py b/tests/network/libs/nad_ref.py deleted file mode 100644 index c929e8eb1e..0000000000 --- a/tests/network/libs/nad_ref.py +++ /dev/null @@ -1,24 +0,0 @@ -from copy import deepcopy - -from libs.net.vmspec import wait_for_no_vmi_condition, wait_for_vmi_condition_status -from libs.vm.vm import BaseVirtualMachine - - -def update_nad_references(vm: BaseVirtualMachine, nad_name_by_net: dict[str, str]) -> None: - """Update secondary network NAD references and wait for the change to be fully applied. - - Patches the VM spec atomically, then waits for the MigrationRequired condition to - appear (change detected) and disappear (migration completed). - - Args: - vm: The virtual machine to update. - nad_name_by_net: Mapping of spec network name to new NAD name. - """ - resource_version = vm.vmi.instance.metadata.resourceVersion - networks = deepcopy(vm.template_spec.networks) or [] - for network in networks: - if network.name in nad_name_by_net and network.multus: - network.multus.networkName = nad_name_by_net[network.name] - vm.set_networks(networks=networks) - wait_for_vmi_condition_status(vm=vm, condition="MigrationRequired", resource_version=resource_version) - wait_for_no_vmi_condition(vm=vm, condition="MigrationRequired") diff --git a/tests/network/localnet/conftest.py b/tests/network/localnet/conftest.py index 45390e7e03..bc6f88c62e 100644 --- a/tests/network/localnet/conftest.py +++ b/tests/network/localnet/conftest.py @@ -1,10 +1,10 @@ -from collections.abc import Generator +from collections.abc import Generator, Iterator import pytest from kubernetes.dynamic import DynamicClient from ocp_resources.namespace import Namespace -import tests.network.libs.nodenetworkconfigurationpolicy as libnncp +from libs.net import nodenetworkconfigurationpolicy as libnncp from libs.net.cluster import ipv4_supported_cluster, ipv6_supported_cluster from libs.net.ip import filter_link_local_addresses, random_ipv4_address, random_ipv6_address from libs.net.traffic_generator import TcpServer, VMTcpClient, active_tcp_connections @@ -83,8 +83,8 @@ def namespace_localnet_2(admin_client: DynamicClient, unprivileged_client: Dynam @pytest.fixture(scope="module") -def vlan_id(vlan_index_number: Generator[int]) -> int: - return next(vlan_index_number) +def vlan_id(cluster_vlan_ids: Iterator[int]) -> int: + return next(cluster_vlan_ids) @pytest.fixture(scope="module") diff --git a/tests/network/localnet/ipam/conftest.py b/tests/network/localnet/ipam/conftest.py index 6ffc7b1f5f..af5b53061e 100644 --- a/tests/network/localnet/ipam/conftest.py +++ b/tests/network/localnet/ipam/conftest.py @@ -4,8 +4,8 @@ from kubernetes.dynamic import DynamicClient from ocp_resources.namespace import Namespace -import tests.network.libs.nodenetworkconfigurationpolicy as libnncp from libs.net import netattachdef as libnad +from libs.net import nodenetworkconfigurationpolicy as libnncp from libs.net.ip import random_ipv4_address from libs.vm.oper import run_vms from libs.vm.spec import Interface, Multus, Network diff --git a/tests/network/localnet/liblocalnet.py b/tests/network/localnet/liblocalnet.py index 558236eac0..525ee710e1 100644 --- a/tests/network/localnet/liblocalnet.py +++ b/tests/network/localnet/liblocalnet.py @@ -7,6 +7,7 @@ from kubernetes.dynamic import DynamicClient +from libs.net import nodenetworkconfigurationpolicy as libnncp from libs.net.cluster import ipv4_supported_cluster, ipv6_supported_cluster from libs.vm.affinity import new_pod_anti_affinity from libs.vm.factory import base_vmspec, fedora_vm @@ -14,7 +15,6 @@ from libs.vm.vm import BaseVirtualMachine, add_volume_disk, cloudinitdisk_storage from tests.network.libs import cloudinit from tests.network.libs import cluster_user_defined_network as libcudn -from tests.network.libs import nodenetworkconfigurationpolicy as libnncp from tests.network.libs.label_selector import LabelSelector from utilities.constants import OVS_BRIDGE, WORKER_NODE_LABEL_KEY diff --git a/tests/network/localnet/nad_ref_change/conftest.py b/tests/network/localnet/nad_ref_change/conftest.py index 1fe6d21b58..890058baa1 100644 --- a/tests/network/localnet/nad_ref_change/conftest.py +++ b/tests/network/localnet/nad_ref_change/conftest.py @@ -1,4 +1,4 @@ -from collections.abc import Generator +from collections.abc import Generator, Iterator from typing import Final import pytest @@ -31,12 +31,12 @@ def cudn_nad_ref_vlan_b( admin_client: DynamicClient, cudn_localnet: libcudn.ClusterUserDefinedNetwork, - vlan_index_number: Generator[int], + cluster_vlan_ids: Iterator[int], ) -> Generator[libcudn.ClusterUserDefinedNetwork]: with localnet_cudn( name=CUDN_B_NAME, match_labels=LOCALNET_TEST_LABEL, - vlan_id=next(vlan_index_number), + vlan_id=next(cluster_vlan_ids), physical_network_name=LOCALNET_BR_EX_NETWORK, client=admin_client, ) as cudn: diff --git a/tests/network/localnet/nad_ref_change/test_nad_ref_change.py b/tests/network/localnet/nad_ref_change/test_nad_ref_change.py index be4e4dde1d..5a36f902df 100644 --- a/tests/network/localnet/nad_ref_change/test_nad_ref_change.py +++ b/tests/network/localnet/nad_ref_change/test_nad_ref_change.py @@ -13,9 +13,8 @@ import pytest from libs.net.ip import filter_link_local_addresses -from libs.net.vmspec import lookup_iface_status +from libs.net.vmspec import lookup_iface_status, update_nad_references from tests.network.libs.connectivity import poll_tcp_connectivity -from tests.network.libs.nad_ref import update_nad_references from tests.network.localnet.liblocalnet import ( GUEST_1ST_IFACE_NAME, GUEST_2ND_IFACE_NAME, diff --git a/tests/network/sriov/conftest.py b/tests/network/sriov/conftest.py index cd2e4b957e..50814b11e9 100644 --- a/tests/network/sriov/conftest.py +++ b/tests/network/sriov/conftest.py @@ -47,7 +47,7 @@ def sriov_network(admin_client, sriov_node_policy, namespace, sriov_namespace): @pytest.fixture(scope="class") -def sriov_network_vlan(admin_client, sriov_node_policy, namespace, sriov_namespace, vlan_index_number): +def sriov_network_vlan(admin_client, sriov_node_policy, namespace, sriov_namespace, cluster_vlan_ids): """ Create a SR-IOV VLAN network linked to SR-IOV policy. """ @@ -57,7 +57,7 @@ def sriov_network_vlan(admin_client, sriov_node_policy, namespace, sriov_namespa sriov_resource_name=sriov_node_policy.instance.spec.resourceName, namespace=sriov_namespace, sriov_network_namespace=namespace.name, - vlan=next(vlan_index_number), + vlan=next(cluster_vlan_ids), client=admin_client, ) as sriov_network: yield sriov_network diff --git a/tests/network/utils.py b/tests/network/utils.py index c89937ac90..53dd0d4a9b 100644 --- a/tests/network/utils.py +++ b/tests/network/utils.py @@ -257,11 +257,6 @@ def assert_nncp_successfully_configured(nncp): raise -def get_vlan_index_number(vlans_list): - yield from vlans_list - raise ValueError(f"vlans list is exhausted. Current list size is {len(vlans_list)} and all vlans are in use.") - - def get_destination_ip_address(destination_vm): dst_ip = get_ip_from_vm_or_virt_handler_pod( family=IPV4_STR,