Merge "Fix creation of port when network has admin's QoS policy set"
This commit is contained in:
commit
25f4406c72
@ -93,7 +93,8 @@ class QoSPlugin(qos.QoSPluginBase):
|
||||
if policy_id is None:
|
||||
return
|
||||
|
||||
policy = policy_object.QosPolicy.get_object(context, id=policy_id)
|
||||
policy = policy_object.QosPolicy.get_object(
|
||||
context.elevated(), id=policy_id)
|
||||
self.validate_policy_for_port(policy, port)
|
||||
|
||||
def _validate_update_port_callback(self, resource, event, trigger,
|
||||
@ -108,7 +109,9 @@ class QoSPlugin(qos.QoSPluginBase):
|
||||
|
||||
updated_port = ports_object.Port.get_object(
|
||||
context, id=kwargs['port']['id'])
|
||||
policy = policy_object.QosPolicy.get_object(context, id=policy_id)
|
||||
|
||||
policy = policy_object.QosPolicy.get_object(
|
||||
context.elevated(), id=policy_id)
|
||||
|
||||
self.validate_policy_for_port(policy, updated_port)
|
||||
|
||||
@ -124,7 +127,8 @@ class QoSPlugin(qos.QoSPluginBase):
|
||||
if policy_id is None or policy_id == original_policy_id:
|
||||
return
|
||||
|
||||
policy = policy_object.QosPolicy.get_object(context, id=policy_id)
|
||||
policy = policy_object.QosPolicy.get_object(
|
||||
context.elevated(), id=policy_id)
|
||||
ports = ports_object.Port.get_objects(
|
||||
context, network_id=updated_network['id'])
|
||||
# Filter only this ports which don't have overwritten policy
|
||||
|
@ -67,6 +67,7 @@ class TestQosPlugin(base.BaseQosTestCase):
|
||||
'.ResourcesPushRpcApi.push').start()
|
||||
|
||||
self.ctxt = context.Context('fake_user', 'fake_tenant')
|
||||
self.admin_ctxt = context.get_admin_context()
|
||||
mock.patch.object(self.ctxt.session, 'refresh').start()
|
||||
mock.patch.object(self.ctxt.session, 'expunge').start()
|
||||
|
||||
@ -145,6 +146,7 @@ class TestQosPlugin(base.BaseQosTestCase):
|
||||
network_mock = mock.MagicMock(
|
||||
id=uuidutils.generate_uuid(), qos_policy_id=network_policy_id)
|
||||
policy_mock = mock.MagicMock(id=policy_id)
|
||||
admin_ctxt = mock.Mock()
|
||||
expected_policy_id = policy_id or network_policy_id
|
||||
with mock.patch(
|
||||
'neutron.objects.ports.Port.get_object',
|
||||
@ -157,11 +159,13 @@ class TestQosPlugin(base.BaseQosTestCase):
|
||||
return_value=policy_mock
|
||||
) as get_policy, mock.patch.object(
|
||||
self.qos_plugin, "validate_policy_for_port"
|
||||
) as validate_policy_for_port:
|
||||
) as validate_policy_for_port, mock.patch.object(
|
||||
self.ctxt, "elevated", return_value=admin_ctxt
|
||||
):
|
||||
self.qos_plugin._validate_create_port_callback(
|
||||
"PORT", "precommit_create", "test_plugin", **kwargs)
|
||||
if policy_id or network_policy_id:
|
||||
get_policy.assert_called_once_with(self.ctxt,
|
||||
get_policy.assert_called_once_with(admin_ctxt,
|
||||
id=expected_policy_id)
|
||||
validate_policy_for_port.assert_called_once_with(policy_mock,
|
||||
port_mock)
|
||||
@ -201,6 +205,7 @@ class TestQosPlugin(base.BaseQosTestCase):
|
||||
}
|
||||
port_mock = mock.MagicMock(id=port_id, qos_policy_id=policy_id)
|
||||
policy_mock = mock.MagicMock(id=policy_id)
|
||||
admin_ctxt = mock.Mock()
|
||||
with mock.patch(
|
||||
'neutron.objects.ports.Port.get_object',
|
||||
return_value=port_mock
|
||||
@ -209,7 +214,9 @@ class TestQosPlugin(base.BaseQosTestCase):
|
||||
return_value=policy_mock
|
||||
) as get_policy, mock.patch.object(
|
||||
self.qos_plugin, "validate_policy_for_port"
|
||||
) as validate_policy_for_port:
|
||||
) as validate_policy_for_port, mock.patch.object(
|
||||
self.ctxt, "elevated", return_value=admin_ctxt
|
||||
):
|
||||
self.qos_plugin._validate_update_port_callback(
|
||||
"PORT", "precommit_update", "test_plugin", **kwargs)
|
||||
if policy_id is None or policy_id == original_policy_id:
|
||||
@ -218,7 +225,7 @@ class TestQosPlugin(base.BaseQosTestCase):
|
||||
validate_policy_for_port.assert_not_called()
|
||||
else:
|
||||
get_port.assert_called_once_with(self.ctxt, id=port_id)
|
||||
get_policy.assert_called_once_with(self.ctxt, id=policy_id)
|
||||
get_policy.assert_called_once_with(admin_ctxt, id=policy_id)
|
||||
validate_policy_for_port.assert_called_once_with(policy_mock,
|
||||
port_mock)
|
||||
|
||||
@ -256,6 +263,7 @@ class TestQosPlugin(base.BaseQosTestCase):
|
||||
id=uuidutils.generate_uuid(), qos_policy_id=None)
|
||||
ports = [port_mock_with_own_policy, port_mock_without_own_policy]
|
||||
policy_mock = mock.MagicMock(id=policy_id)
|
||||
admin_ctxt = mock.Mock()
|
||||
with mock.patch(
|
||||
'neutron.objects.ports.Port.get_objects',
|
||||
return_value=ports
|
||||
@ -264,7 +272,9 @@ class TestQosPlugin(base.BaseQosTestCase):
|
||||
return_value=policy_mock
|
||||
) as get_policy, mock.patch.object(
|
||||
self.qos_plugin, "validate_policy_for_ports"
|
||||
) as validate_policy_for_ports:
|
||||
) as validate_policy_for_ports, mock.patch.object(
|
||||
self.ctxt, "elevated", return_value=admin_ctxt
|
||||
):
|
||||
self.qos_plugin._validate_update_network_callback(
|
||||
"NETWORK", "precommit_update", "test_plugin", **kwargs)
|
||||
if policy_id is None or policy_id == original_policy_id:
|
||||
@ -272,7 +282,7 @@ class TestQosPlugin(base.BaseQosTestCase):
|
||||
get_ports.assert_not_called()
|
||||
validate_policy_for_ports.assert_not_called()
|
||||
else:
|
||||
get_policy.assert_called_once_with(self.ctxt, id=policy_id)
|
||||
get_policy.assert_called_once_with(admin_ctxt, id=policy_id)
|
||||
get_ports.assert_called_once_with(self.ctxt,
|
||||
network_id=network_id)
|
||||
validate_policy_for_ports.assert_called_once_with(
|
||||
|
Loading…
Reference in New Issue
Block a user