From: Gary Kotton Date: Sun, 29 Sep 2013 14:11:49 +0000 (-0700) Subject: Ensure that security group agent is bound prior to accessing X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=01debad5665bcae5c0f4745759ae744f85daa723;p=openstack-build%2Fneutron-build.git Ensure that security group agent is bound prior to accessing When the Neutron agents start and the security group agent callbacks are not registered there may be exceptions. Fixes bug: #1232758 Change-Id: I4c1ff96b8acfcee4c84a73c9400040c96f8418a9 --- diff --git a/neutron/agent/securitygroups_rpc.py b/neutron/agent/securitygroups_rpc.py index 04d6ef50e..a38e4355b 100644 --- a/neutron/agent/securitygroups_rpc.py +++ b/neutron/agent/securitygroups_rpc.py @@ -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()