Reviewed: https://review.openstack.org/404103 Committed: https://git.openstack.org/cgit/openstack/neutron-fwaas/commit/?id=fffd6bcb5a95d5d07852328049dab28b44009acc Submitter: Jenkins Branch: master
commit fffd6bcb5a95d5d07852328049dab28b44009acc Author: Yushiro FURUKAWA <[email protected]> Date: Tue Nov 29 18:11:43 2016 +0900 Fix removing rule_association on updating a policy This commit fixes removing rule_associations entry with updating firewall-policy with empty firewall_rules like that: {'firewall_policy': {'firewall_rules': []}} Change-Id: I1e50703a559392ac0e1ab50830ac6b3b0cad7224 Closes-Bug: #1645620 ** Changed in: neutron Status: In Progress => Fix Released -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to neutron. https://bugs.launchpad.net/bugs/1645620 Title: [FWaaS] update firewall policy with rule to empty returns 500 Status in neutron: Fix Released Bug description: When firewall policy includes at least 1 firewall-rule and try to update empty firewall_rules, following error occurred: It should be aligned with how to remove rule_association table as remove_rules. [How to reprocude] curl -s -X PUT -d '{"firewall_policy":{"firewall_rules":["50c87d7e-63c1-4911-9bee-d15455073c78"]}}' -H "x-auth-token:$TOKEN" 192.168.122.181:9696/v2.0/fwaas/firewall_policies/86a47474-f2d2-4a89-a4b4-22119fe6e459 { "firewall_policy": { "description": "", "firewall_rules": [ "50c87d7e-63c1-4911-9bee-d15455073c78" ], "tenant_id": "36bc640624964521b494fd0bd46d2a6e", "public": false, "id": "86a47474-f2d2-4a89-a4b4-22119fe6e459", "project_id": "36bc640624964521b494fd0bd46d2a6e", "audited": false, "name": "policy1" } } curl -s -X PUT -d '{"firewall_policy":{"firewall_rules":[]}}' -H "x -auth-token:$TOKEN" 192.168.122.181:9696/v2.0/fwaas/firewall_policies/86a47474-f2d2-4a89-a4b4-22119fe6e459 { "NeutronError": { "message": "Request Failed: internal server error while processing your request.", "type": "HTTPInternalServerError", "detail": "" } } [Error log on q-svc.log] 2016-11-29 16:40:10.868 ERROR neutron.api.v2.resource [req-1c906036-e041-43fd-919a-1bd1bc1ebc81 admin 36bc640624964521b494fd0bd46d2a6e] update failed: No details. 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource Traceback (most recent call last): 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/opt/stack/neutron/neutron/api/v2/resource.py", line 79, in resource 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource result = method(request=request, **args) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/opt/stack/neutron/neutron/api/v2/base.py", line 612, in update 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource return self._update(request, id, body, **kwargs) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/opt/stack/neutron/neutron/db/api.py", line 92, in wrapped 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource setattr(e, '_RETRY_EXCEEDED', True) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__ 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource self.force_reraise() 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/opt/stack/neutron/neutron/db/api.py", line 88, in wrapped 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource return f(*args, **kwargs) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 151, in wrapper 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource ectxt.value = e.inner_exc 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__ 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource self.force_reraise() 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 139, in wrapper 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource return f(*args, **kwargs) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/opt/stack/neutron/neutron/db/api.py", line 128, in wrapped 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource traceback.format_exc()) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__ 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource self.force_reraise() 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/opt/stack/neutron/neutron/db/api.py", line 123, in wrapped 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource return f(*dup_args, **dup_kwargs) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/opt/stack/neutron/neutron/api/v2/base.py", line 660, in _update 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource obj = obj_updater(request.context, id, **kwargs) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/opt/stack/neutron-fwaas/neutron_fwaas/services/firewall/fwaas_plugin_v2.py", line 343, in update_firewall_policy 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource self).update_firewall_policy(context, id, firewall_policy) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/opt/stack/neutron-fwaas/neutron_fwaas/db/firewall/v2/firewall_db_v2.py", line 631, in update_firewall_policy 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource self._set_rules_for_policy(context, fwp_db, fwp) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/opt/stack/neutron-fwaas/neutron_fwaas/db/firewall/v2/firewall_db_v2.py", line 600, in _set_rules_for_policy 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource fwp_db.rule_associations.reorder() 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 490, in __exit__ 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource self.rollback() 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 60, in __exit__ 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource compat.reraise(exc_type, exc_value, exc_tb) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 487, in __exit__ 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource self.commit() 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 392, in commit 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource self._prepare_impl() 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 372, in _prepare_impl 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource self.session.flush() 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2019, in flush 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource self._flush(objects) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2137, in _flush 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource transaction.rollback(_capture_exception=True) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 60, in __exit__ 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource compat.reraise(exc_type, exc_value, exc_tb) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 487, in __exit__ 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource self.commit() 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 392, in commit 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource self._prepare_impl() 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 372, in _prepare_impl 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource self.session.flush() 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2019, in flush 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource self._flush(objects) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2137, in _flush 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource transaction.rollback(_capture_exception=True) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 60, in __exit__ 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource compat.reraise(exc_type, exc_value, exc_tb) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2101, in _flush 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource flush_context.execute() 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 373, in execute 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource rec.execute(self) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 487, in execute 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource self.dependency_processor.process_saves(uow, states) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/dependency.py", line 558, in process_saves 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource uowcommit, False) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/dependency.py", line 575, in _synchronize 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource sync.clear(dest, self.mapper, self.prop.synchronize_pairs) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/sync.py", line 74, in clear 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource (r, orm_util.state_str(dest)) 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource AssertionError: Dependency rule tried to blank-out primary key column 'firewall_policy_rule_associations_v2.firewall_policy_id' on instance '<FirewallPolicyRuleAssociation at 0x7fbcbdcb9590>' 2016-11-29 16:40:10.868 TRACE neutron.api.v2.resource To manage notifications about this bug go to: https://bugs.launchpad.net/neutron/+bug/1645620/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : [email protected] Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp

