Neutron server was not compatible with member actions
Register a new extension into Neutron server, and this extension
contains a member action. if new member action contains the "update"
string. As a result, Neutron server check the target whether contains
"ATTRIBUTES_TO_UPDATE". Because this is a member action so that neutron
server will not go "_update" method normally but "_handle_action"
method. So the exception happens KeyError: 'attributes_to_update'.
Co-Authored-By: zhang ping<ping.zhang@easystack.cn>
Change-Id: Ie8bb7b9af42a82aada28d2bcdfd5b0e573ad9778
Closes-Bug: #1606455
(cherry picked from commit daa8e1b1b0
)
This commit is contained in:
parent
90db5afe2b
commit
83938e7cf8
|
@ -87,7 +87,7 @@ def set_rules(policies, overwrite=True):
|
|||
|
||||
def _is_attribute_explicitly_set(attribute_name, resource, target, action):
|
||||
"""Verify that an attribute is present and is explicitly set."""
|
||||
if 'update' in action:
|
||||
if target.get(const.ATTRIBUTES_TO_UPDATE):
|
||||
# In the case of update, the function should not pay attention to a
|
||||
# default value of an attribute, but check whether it was explicitly
|
||||
# marked as being updated instead.
|
||||
|
|
|
@ -460,6 +460,12 @@ class NeutronPolicyTestCase(base.BaseTestCase):
|
|||
result = policy._build_match_rule(action, target, None)
|
||||
self.assertEqual("rule:" + action, str(result))
|
||||
|
||||
def test_build_match_rule_normal_pluralized_when_update(self):
|
||||
action = "update_" + FAKE_RESOURCE_NAME
|
||||
target = {}
|
||||
result = policy._build_match_rule(action, target, None)
|
||||
self.assertEqual("rule:" + action, str(result))
|
||||
|
||||
def test_enforce_subattribute(self):
|
||||
action = "create_" + FAKE_RESOURCE_NAME
|
||||
target = {'tenant_id': 'fake', 'attr': {'sub_attr_1': 'x'}}
|
||||
|
|
Loading…
Reference in New Issue