From 357169c4fb5abc8daa3df72f27c019c4e2eabea2 Mon Sep 17 00:00:00 2001 From: Maor Blaustein Date: Mon, 26 Jan 2026 17:42:42 +0200 Subject: [PATCH] Adjust QoS min bandwidth placement if existing external network available Small adjustment for setups in which existing external vlan network made ahead of tempest run time. Related: OSPRH-21467 Change-Id: I3b57daeef91c9a9d8be3dcc2237aea6d6022e208 Signed-off-by: Maor Blaustein --- .../scenario/test_network_qos_placement.py | 62 ++++++++++++------- 1 file changed, 40 insertions(+), 22 deletions(-) diff --git a/tempest/scenario/test_network_qos_placement.py b/tempest/scenario/test_network_qos_placement.py index 055dcb61fb..faff6f96d6 100644 --- a/tempest/scenario/test_network_qos_placement.py +++ b/tempest/scenario/test_network_qos_placement.py @@ -152,21 +152,36 @@ class MinBwAllocationPlacementTest(NetworkQoSPlacementTestBase): min_kbps=self.BANDWIDTH_2 ) - def _create_network_and_qos_policies(self, policy_method): - physnet_name = CONF.network_feature_enabled.qos_placement_physnet - base_segm = \ - CONF.network_feature_enabled.provider_net_base_segmentation_id - - self.prov_network, _, _ = self.setup_network_subnet_with_router( - networks_client=self.networks_client, - routers_client=self.routers_client, - subnets_client=self.subnets_client, + def _use_or_create_network_and_qos_policies(self, policy_method): + vlan_ext_nets = self.networks_client.list_networks( **{ - 'shared': True, 'provider:network_type': 'vlan', - 'provider:physical_network': physnet_name, - 'provider:segmentation_id': base_segm - }) + 'router:external': True} + )['networks'] + if vlan_ext_nets: + self.prov_network = vlan_ext_nets[0] + if not self.prov_network['shared']: + self.prov_network = self.networks_client.update_network( + self.prov_network['id'], shared=True)['network'] + self.addClassResourceCleanup( + self.networks_client.update_network, + self.prov_network['id'], + shared=False) + else: + physnet_name = CONF.network_feature_enabled.qos_placement_physnet + base_segm = \ + CONF.network_feature_enabled.provider_net_base_segmentation_id + + self.prov_network, _, _ = self.setup_network_subnet_with_router( + networks_client=self.networks_client, + routers_client=self.routers_client, + subnets_client=self.subnets_client, + **{ + 'shared': True, + 'provider:network_type': 'vlan', + 'provider:physical_network': physnet_name, + 'provider:segmentation_id': base_segm + }) policy_method() @@ -261,7 +276,8 @@ class MinBwAllocationPlacementTest(NetworkQoSPlacementTestBase): * Create port with invalid QoS policy, and try to boot VM with that, it should fail. """ - self._create_network_and_qos_policies(self._create_qos_basic_policies) + self._use_or_create_network_and_qos_policies( + self._create_qos_basic_policies) server1, valid_port = self._boot_vm_with_min_bw( qos_policy_id=self.qos_policy_valid['id']) self._assert_allocation_is_as_expected(server1['id'], @@ -297,7 +313,8 @@ class MinBwAllocationPlacementTest(NetworkQoSPlacementTestBase): * If the VM goes to ACTIVE state check that allocations are as expected. """ - self._create_network_and_qos_policies(self._create_qos_basic_policies) + self._use_or_create_network_and_qos_policies( + self._create_qos_basic_policies) server, valid_port = self._boot_vm_with_min_bw( qos_policy_id=self.qos_policy_valid['id']) self._assert_allocation_is_as_expected(server['id'], @@ -335,7 +352,8 @@ class MinBwAllocationPlacementTest(NetworkQoSPlacementTestBase): * If the VM goes to ACTIVE state check that allocations are as expected. """ - self._create_network_and_qos_policies(self._create_qos_basic_policies) + self._use_or_create_network_and_qos_policies( + self._create_qos_basic_policies) server, valid_port = self._boot_vm_with_min_bw( qos_policy_id=self.qos_policy_valid['id']) self._assert_allocation_is_as_expected(server['id'], @@ -378,7 +396,7 @@ class MinBwAllocationPlacementTest(NetworkQoSPlacementTestBase): if not utils.is_network_feature_enabled('update_port_qos'): raise self.skipException("update_port_qos feature is not enabled") - self._create_network_and_qos_policies( + self._use_or_create_network_and_qos_policies( self._create_qos_policies_from_life) port = self.create_port( @@ -432,7 +450,7 @@ class MinBwAllocationPlacementTest(NetworkQoSPlacementTestBase): if not utils.is_network_feature_enabled('update_port_qos'): raise self.skipException("update_port_qos feature is not enabled") - self._create_network_and_qos_policies( + self._use_or_create_network_and_qos_policies( self._create_qos_policies_from_life) port = self.create_port(self.prov_network['id']) @@ -457,7 +475,7 @@ class MinBwAllocationPlacementTest(NetworkQoSPlacementTestBase): if not utils.is_network_feature_enabled('update_port_qos'): raise self.skipException("update_port_qos feature is not enabled") - self._create_network_and_qos_policies( + self._use_or_create_network_and_qos_policies( self._create_qos_policies_from_life) port = self.create_port( @@ -479,7 +497,7 @@ class MinBwAllocationPlacementTest(NetworkQoSPlacementTestBase): if not utils.is_network_feature_enabled('update_port_qos'): raise self.skipException("update_port_qos feature is not enabled") - self._create_network_and_qos_policies( + self._use_or_create_network_and_qos_policies( self._create_qos_policies_from_life) port1 = self.create_port( @@ -506,7 +524,7 @@ class MinBwAllocationPlacementTest(NetworkQoSPlacementTestBase): if not utils.is_network_feature_enabled('update_port_qos'): raise self.skipException("update_port_qos feature is not enabled") - self._create_network_and_qos_policies( + self._use_or_create_network_and_qos_policies( self._create_qos_policies_from_life) port = self.create_port( @@ -552,7 +570,7 @@ class MinBwAllocationPlacementTest(NetworkQoSPlacementTestBase): direction=self.EGRESS_DIRECTION, ) - self._create_network_and_qos_policies(create_policies) + self._use_or_create_network_and_qos_policies(create_policies) port = self.create_port( self.prov_network['id'],