Merge "Duplicated table lookup in extending port resource request"
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user