Merge "Duplicated table lookup in extending port resource request"

This commit is contained in:
Zuul
2025-04-02 14:08:12 +00:00
committed by Gerrit Code Review
2 changed files with 53 additions and 3 deletions

View File

@@ -197,11 +197,11 @@ class QoSPlugin(qos.QoSPluginBase):
network_id, min_bw_rules=None,
segments=None):
request_group = {}
if not min_bw_rules:
if min_bw_rules is None:
min_bw_rules = rule_object.QosMinimumBandwidthRule.get_objects(
context.get_admin_context(), qos_policy_id=qos_policy_id)
min_bw_resources = QoSPlugin._get_min_bw_resources(min_bw_rules)
if not segments:
if segments is None:
segments = network_object.NetworkSegment.get_objects(
context.get_admin_context(), network_id=network_id)
min_bw_traits = QoSPlugin._get_min_bw_traits(vnic_type, segments)
@@ -218,7 +218,7 @@ class QoSPlugin(qos.QoSPluginBase):
def _get_min_pps_request_group(qos_policy_id, port_id, vnic_type,
min_pps_rules=None):
request_group = {}
if not min_pps_rules:
if min_pps_rules is None:
min_pps_rules = rule_object.QosMinimumPacketRateRule.get_objects(
context.get_admin_context(),
qos_policy_id=qos_policy_id)

View File

@@ -471,6 +471,56 @@ class TestQosPlugin(base.BaseQosTestCase):
port['resource_request']['same_subtree'],
)
def test__extend_port_resource_request_bulk_non_min_bw_or_pps_rule(self):
network_id = uuidutils.generate_uuid()
ports_res = [
{
"resource_request": {
"port_id": uuidutils.generate_uuid(),
"qos_id": self.policy.id,
"network_id": network_id,
"vnic_type": "normal",
}
},
{
"resource_request": {
"port_id": uuidutils.generate_uuid(),
"qos_id": self.policy.id,
"network_id": network_id,
"vnic_type": "normal",
}
},
]
segment_mock = mock.MagicMock(network_id=network_id,
physical_network='public')
min_bw_rules = []
min_pps_rules = []
with mock.patch('neutron.objects.network.NetworkSegment.get_objects',
return_value=[segment_mock]) as network_segment_mock, \
mock.patch(
'neutron.objects.qos.rule.QosMinimumBandwidthRule.'
'get_objects',
return_value=min_bw_rules) as qos_min_bw_rule_mock, \
mock.patch(
'neutron.objects.qos.rule.QosMinimumPacketRateRule.'
'get_objects',
return_value=min_pps_rules) as qos_min_pps_rule_mock, \
mock.patch(
'uuid.uuid5',
return_value='fake_uuid',
side_effect=None):
ports = qos_plugin.QoSPlugin._extend_port_resource_request_bulk(
ports_res, None)
self.assertEqual(network_segment_mock.call_count, 1)
self.assertEqual(qos_min_bw_rule_mock.call_count, 1)
self.assertEqual(qos_min_pps_rule_mock.call_count, 1)
for port in ports:
self.assertIsNone(port.get('resource_request'))
def test__extend_port_resource_request_no_qos_policy(self):
port = self._create_and_extend_port([], physical_network='public',
has_qos_policy=False)