[QoS] Get only min bw rules when extending port dict

Only min bw rules are required hence no need to fetch
all rules of QoS policy.
Also no need to get qos policy from DB

Partial-Bug: #1905726
Change-Id: Iad29cb34825adaa8c766d01b192a6bbe9992148b
This commit is contained in:
Oleg Bondarev 2020-11-27 13:37:42 +04:00
parent 6fcbef7fd5
commit 334fa1ba27
2 changed files with 9 additions and 11 deletions

View File

@ -118,8 +118,6 @@ class QoSPlugin(qos.QoSPluginBase):
port_res['resource_request'] = None
if not qos_id:
return port_res
qos_policy = policy_object.QosPolicy.get_object(
context.get_admin_context(), id=qos_id)
resources = {}
# NOTE(ralonsoh): we should move this translation dict to n-lib.
@ -129,9 +127,10 @@ class QoSPlugin(qos.QoSPluginBase):
nl_constants.EGRESS_DIRECTION:
pl_constants.CLASS_NET_BW_EGRESS_KBPS
}
for rule in qos_policy.rules:
if rule.rule_type == qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH:
resources[rule_direction_class[rule.direction]] = rule.min_kbps
min_bw_rules = rule_object.QosMinimumBandwidthRule.get_objects(
context.get_admin_context(), qos_policy_id=qos_id)
for rule in min_bw_rules:
resources[rule_direction_class[rule.direction]] = rule.min_kbps
if not resources:
return port_res

View File

@ -130,10 +130,8 @@ class TestQosPlugin(base.BaseQosTestCase):
if has_qos_policy:
self.port_data['port']['qos_policy_id'] = self.policy.id
self.policy.rules = bw_rules
elif has_net_qos_policy:
self.port_data['port']['qos_network_policy_id'] = self.policy.id
self.policy.rules = bw_rules
self.port = ports_object.Port(
self.ctxt, **self.port_data['port'])
@ -144,8 +142,10 @@ class TestQosPlugin(base.BaseQosTestCase):
with mock.patch('neutron.objects.network.NetworkSegment.get_objects',
return_value=[segment_mock]), \
mock.patch('neutron.objects.qos.policy.QosPolicy.get_object',
return_value=self.policy):
mock.patch(
'neutron.objects.qos.rule.QosMinimumBandwidthRule.'
'get_objects',
return_value=bw_rules):
return qos_plugin.QoSPlugin._extend_port_resource_request(
port_res, self.port)
@ -186,7 +186,7 @@ class TestQosPlugin(base.BaseQosTestCase):
)
def test__extend_port_resource_request_non_min_bw_rule(self):
port = self._create_and_extend_port([self.rule])
port = self._create_and_extend_port([])
self.assertIsNone(port.get('resource_request'))
@ -204,7 +204,6 @@ class TestQosPlugin(base.BaseQosTestCase):
def test__extend_port_resource_request_inherited_policy(self):
self.min_rule.direction = lib_constants.EGRESS_DIRECTION
self.policy.rules = [self.min_rule]
self.min_rule.qos_policy_id = self.policy.id
port = self._create_and_extend_port([self.min_rule],