]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Rebind security groups only when they're updated
authorSalvatore Orlando <salv.orlando@gmail.com>
Tue, 26 Nov 2013 17:53:49 +0000 (09:53 -0800)
committerSalvatore Orlando <salv.orlando@gmail.com>
Wed, 27 Nov 2013 10:10:40 +0000 (02:10 -0800)
Update the security port bindings for a port only when they actually
differ from the stored value.

This will also avoid sending port_update notifications to the agent
even if nothing actually changes in the port configuration.

Closes-Bug: #1255183
Partial blueprint: neutron-tempest-parallel

Change-Id: I00c29dc97c46478433fdf08069a884bb78e5cd0a

neutron/db/securitygroups_rpc_base.py

index cf17430e9428da282eeb1a64ff146d8da306f194..1bdeb14f6efd77a107eb545026442c9cb5369073 100644 (file)
@@ -70,15 +70,19 @@ class SecurityGroupServerRpcMixin(sg_db.SecurityGroupDbMixin):
         It is because another changes for the port may require notification.
         """
         need_notify = False
-        if ext_sg.SECURITYGROUPS in port['port']:
+        port_updates = port['port']
+        if (ext_sg.SECURITYGROUPS in port_updates and
+            not utils.compare_elements(
+                original_port.get(ext_sg.SECURITYGROUPS),
+                port_updates[ext_sg.SECURITYGROUPS])):
             # delete the port binding and read it with the new rules
-            port['port'][ext_sg.SECURITYGROUPS] = (
+            port_updates[ext_sg.SECURITYGROUPS] = (
                 self._get_security_groups_on_port(context, port))
             self._delete_port_security_group_bindings(context, id)
             self._process_port_create_security_group(
                 context,
                 updated_port,
-                port['port'][ext_sg.SECURITYGROUPS])
+                port_updates[ext_sg.SECURITYGROUPS])
             need_notify = True
         else:
             updated_port[ext_sg.SECURITYGROUPS] = (