[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
(cherry picked from commit a7e02cdb17
)
This commit is contained in:
parent
d44d85b810
commit
2d3c578444
|
@ -43,6 +43,7 @@ from neutron.objects import network as network_object
|
||||||
from neutron.objects import ports as ports_object
|
from neutron.objects import ports as ports_object
|
||||||
from neutron.objects.qos import policy as policy_object
|
from neutron.objects.qos import policy as policy_object
|
||||||
from neutron.objects.qos import qos_policy_validator as checker
|
from neutron.objects.qos import qos_policy_validator as checker
|
||||||
|
from neutron.objects.qos import rule as rule_object
|
||||||
from neutron.objects.qos import rule_type as rule_type_object
|
from neutron.objects.qos import rule_type as rule_type_object
|
||||||
from neutron.services.qos.drivers import manager
|
from neutron.services.qos.drivers import manager
|
||||||
|
|
||||||
|
@ -100,8 +101,6 @@ class QoSPlugin(qos.QoSPluginBase):
|
||||||
port_res['resource_request'] = None
|
port_res['resource_request'] = None
|
||||||
if not qos_id:
|
if not qos_id:
|
||||||
return port_res
|
return port_res
|
||||||
qos_policy = policy_object.QosPolicy.get_object(
|
|
||||||
context.get_admin_context(), id=qos_id)
|
|
||||||
|
|
||||||
resources = {}
|
resources = {}
|
||||||
# NOTE(ralonsoh): we should move this translation dict to n-lib.
|
# NOTE(ralonsoh): we should move this translation dict to n-lib.
|
||||||
|
@ -111,8 +110,9 @@ class QoSPlugin(qos.QoSPluginBase):
|
||||||
nl_constants.EGRESS_DIRECTION:
|
nl_constants.EGRESS_DIRECTION:
|
||||||
pl_constants.CLASS_NET_BW_EGRESS_KBPS
|
pl_constants.CLASS_NET_BW_EGRESS_KBPS
|
||||||
}
|
}
|
||||||
for rule in qos_policy.rules:
|
min_bw_rules = rule_object.QosMinimumBandwidthRule.get_objects(
|
||||||
if rule.rule_type == qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH:
|
context.get_admin_context(), qos_policy_id=qos_id)
|
||||||
|
for rule in min_bw_rules:
|
||||||
resources[rule_direction_class[rule.direction]] = rule.min_kbps
|
resources[rule_direction_class[rule.direction]] = rule.min_kbps
|
||||||
if not resources:
|
if not resources:
|
||||||
return port_res
|
return port_res
|
||||||
|
|
|
@ -128,10 +128,8 @@ class TestQosPlugin(base.BaseQosTestCase):
|
||||||
|
|
||||||
if has_qos_policy:
|
if has_qos_policy:
|
||||||
self.port_data['port']['qos_policy_id'] = self.policy.id
|
self.port_data['port']['qos_policy_id'] = self.policy.id
|
||||||
self.policy.rules = bw_rules
|
|
||||||
elif has_net_qos_policy:
|
elif has_net_qos_policy:
|
||||||
self.port_data['port']['qos_network_policy_id'] = self.policy.id
|
self.port_data['port']['qos_network_policy_id'] = self.policy.id
|
||||||
self.policy.rules = bw_rules
|
|
||||||
|
|
||||||
self.port = ports_object.Port(
|
self.port = ports_object.Port(
|
||||||
self.ctxt, **self.port_data['port'])
|
self.ctxt, **self.port_data['port'])
|
||||||
|
@ -142,8 +140,10 @@ class TestQosPlugin(base.BaseQosTestCase):
|
||||||
|
|
||||||
with mock.patch('neutron.objects.network.NetworkSegment.get_objects',
|
with mock.patch('neutron.objects.network.NetworkSegment.get_objects',
|
||||||
return_value=[segment_mock]), \
|
return_value=[segment_mock]), \
|
||||||
mock.patch('neutron.objects.qos.policy.QosPolicy.get_object',
|
mock.patch(
|
||||||
return_value=self.policy):
|
'neutron.objects.qos.rule.QosMinimumBandwidthRule.'
|
||||||
|
'get_objects',
|
||||||
|
return_value=bw_rules):
|
||||||
return qos_plugin.QoSPlugin._extend_port_resource_request(
|
return qos_plugin.QoSPlugin._extend_port_resource_request(
|
||||||
port_res, self.port)
|
port_res, self.port)
|
||||||
|
|
||||||
|
@ -184,7 +184,7 @@ class TestQosPlugin(base.BaseQosTestCase):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test__extend_port_resource_request_non_min_bw_rule(self):
|
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'))
|
self.assertIsNone(port.get('resource_request'))
|
||||||
|
|
||||||
|
@ -202,7 +202,6 @@ class TestQosPlugin(base.BaseQosTestCase):
|
||||||
|
|
||||||
def test__extend_port_resource_request_inherited_policy(self):
|
def test__extend_port_resource_request_inherited_policy(self):
|
||||||
self.min_rule.direction = lib_constants.EGRESS_DIRECTION
|
self.min_rule.direction = lib_constants.EGRESS_DIRECTION
|
||||||
self.policy.rules = [self.min_rule]
|
|
||||||
self.min_rule.qos_policy_id = self.policy.id
|
self.min_rule.qos_policy_id = self.policy.id
|
||||||
|
|
||||||
port = self._create_and_extend_port([self.min_rule],
|
port = self._create_and_extend_port([self.min_rule],
|
||||||
|
|
Loading…
Reference in New Issue