]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Ensure that security group agent is bound prior to accessing
authorGary Kotton <gkotton@vmware.com>
Sun, 29 Sep 2013 14:11:49 +0000 (07:11 -0700)
committerGary Kotton <gkotton@vmware.com>
Sun, 29 Sep 2013 17:29:32 +0000 (10:29 -0700)
When the Neutron agents start and the security group agent callbacks
are not registered there may be exceptions.

Fixes bug: #1232758

Change-Id: I4c1ff96b8acfcee4c84a73c9400040c96f8418a9

neutron/agent/securitygroups_rpc.py

index 04d6ef50ea2397b767dd16e45ac62f10ab3de5b9..a38e4355bff31030bb80fb1c689468607859a671 100644 (file)
@@ -65,6 +65,11 @@ class SecurityGroupAgentRpcCallbackMixin(object):
     #mix-in object should be have sg_agent
     sg_agent = None
 
+    def _security_groups_agent_not_set(self):
+        LOG.warning(_("Security group agent binding currently not set. "
+                      "This should be set by the end of the init "
+                      "process."))
+
     def security_groups_rule_updated(self, context, **kwargs):
         """Callback for security group rule update.
 
@@ -73,6 +78,8 @@ class SecurityGroupAgentRpcCallbackMixin(object):
         security_groups = kwargs.get('security_groups', [])
         LOG.debug(
             _("Security group rule updated on remote: %s"), security_groups)
+        if not self.sg_agent:
+            return self._security_groups_agent_not_set()
         self.sg_agent.security_groups_rule_updated(security_groups)
 
     def security_groups_member_updated(self, context, **kwargs):
@@ -83,11 +90,15 @@ class SecurityGroupAgentRpcCallbackMixin(object):
         security_groups = kwargs.get('security_groups', [])
         LOG.debug(
             _("Security group member updated on remote: %s"), security_groups)
+        if not self.sg_agent:
+            return self._security_groups_agent_not_set()
         self.sg_agent.security_groups_member_updated(security_groups)
 
     def security_groups_provider_updated(self, context, **kwargs):
         """Callback for security group provider update."""
         LOG.debug(_("Provider rule updated"))
+        if not self.sg_agent:
+            return self._security_groups_agent_not_set()
         self.sg_agent.security_groups_provider_updated()