summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Rosen <arosen@nicira.com>2012-10-26 14:18:48 -0700
committerAaron Rosen <arosen@nicira.com>2012-10-29 12:52:12 -0700
commita16953e7b794f6ff8108c2dccff95f22e5e261d3 (patch)
treea51a51df61b027db19a251c2f2032db49e97997c
parent6143e90d77c4f3301000337a43a2c9782d785301 (diff)
downloadnova-a16953e7b794f6ff8108c2dccff95f22e5e261d3.tar.gz
nova-a16953e7b794f6ff8108c2dccff95f22e5e261d3.tar.xz
nova-a16953e7b794f6ff8108c2dccff95f22e5e261d3.zip
Add call to trigger_instance[add/remove]_security_group_refresh quantum
The calls to trigger_instance[add/remove]_security_group_refresh were not being called in quantumv2/api. This patch adds those calls and also removes the code previously required to handle the circular dependency which is no longer there. Fixes bug 1057069 Change-Id: Ia76d37ebf2546a26f893dcbc8d5a05f02324ad6b
-rw-r--r--nova/network/quantumv2/api.py26
1 files changed, 20 insertions, 6 deletions
diff --git a/nova/network/quantumv2/api.py b/nova/network/quantumv2/api.py
index 8a11ca0a8..594d7b2f2 100644
--- a/nova/network/quantumv2/api.py
+++ b/nova/network/quantumv2/api.py
@@ -16,6 +16,7 @@
#
# vim: tabstop=4 shiftwidth=4 softtabstop=4
+from nova.compute import api as compute_api
from nova.db import base
from nova import exception
from nova import flags
@@ -62,7 +63,7 @@ NET_EXTERNAL = 'router:external'
class API(base.Base):
"""API for interacting with the quantum 2.x API."""
- security_group_api = None
+ security_group_api = compute_api.SecurityGroupAPI()
def setup_networks_on_host(self, context, instance, host=None,
teardown=False):
@@ -156,6 +157,7 @@ class API(base.Base):
'exception': ex})
self.trigger_security_group_members_refresh(context, instance)
+ self.trigger_instance_add_security_group_refresh(context, instance)
return self.get_instance_nw_info(context, instance, networks=nets)
@@ -173,6 +175,7 @@ class API(base.Base):
LOG.exception(_("Failed to delete quantum port %(portid)s ")
% {'portid': port['id']})
self.trigger_security_group_members_refresh(context, instance)
+ self.trigger_instance_remove_security_group_refresh(context, instance)
@refresh_cache
def get_instance_nw_info(self, context, instance, networks=None):
@@ -251,12 +254,23 @@ class API(base.Base):
ip = ip.replace('\\.', '.')
return self._get_instance_uuids_by_ip(context, ip)
- def trigger_security_group_members_refresh(self, context, instance_ref):
+ def trigger_instance_add_security_group_refresh(self, context,
+ instance_ref):
+ admin_context = context.elevated()
+ for group in instance_ref['security_groups']:
+ self.security_group_api.trigger_handler(
+ 'instance_add_security_group', context, instance_ref,
+ group['name'])
- # used to avoid circular import
- if not self.security_group_api:
- from nova.compute import api as compute_api
- self.security_group_api = compute_api.SecurityGroupAPI()
+ def trigger_instance_remove_security_group_refresh(self, context,
+ instance_ref):
+ admin_context = context.elevated()
+ for group in instance_ref['security_groups']:
+ self.security_group_api.trigger_handler(
+ 'instance_remove_security_group', context, instance_ref,
+ group['name'])
+
+ def trigger_security_group_members_refresh(self, context, instance_ref):
admin_context = context.elevated()
group_ids = [group['id'] for group in instance_ref['security_groups']]