summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Lindgren <hanlind@kth.se>2015-04-24 13:10:39 +0200
committerDan Smith <dansmith@redhat.com>2015-04-27 07:42:04 -0700
commitf191a2147a21c7e50926b288768a96900cf4c629 (patch)
tree87b43b4c6e6d95a69b54af3241b59cb945c356e0
parenta0efbbcfc701563473e0dc42ca5b6b4b57ca7d5a (diff)
downloadnova-f191a2147a21c7e50926b288768a96900cf4c629.tar.gz
Add security group calls missing from latest compute rpc api version bump
The recent compute rpc api version bump missed out on the security group related calls that are part of the api. One possible reason is that both compute and security group client side rpc api:s share a single target, which is of little value and only cause mistakes like this. This change eliminates future problems like this by combining them into one to get a 1:1 relationship between client and server api:s. Change-Id: I9207592a87fab862c04d210450cbac47af6a3fd7 Closes-Bug: #1448075 (cherry picked from commit bebd00b117c68097203adc2e56e972d74254fc59)
-rw-r--r--nova/compute/api.py10
-rw-r--r--nova/compute/manager.py11
-rw-r--r--nova/compute/rpcapi.py28
-rw-r--r--nova/tests/unit/compute/test_compute.py12
-rw-r--r--nova/tests/unit/compute/test_rpcapi.py22
5 files changed, 39 insertions, 44 deletions
diff --git a/nova/compute/api.py b/nova/compute/api.py
index 81340906e8..3d0405220f 100644
--- a/nova/compute/api.py
+++ b/nova/compute/api.py
@@ -3833,7 +3833,7 @@ class SecurityGroupAPI(base.Base, security_group_base.SecurityGroupBase):
def __init__(self, skip_policy_check=False, **kwargs):
super(SecurityGroupAPI, self).__init__(**kwargs)
self.skip_policy_check = skip_policy_check
- self.security_group_rpcapi = compute_rpcapi.SecurityGroupAPI()
+ self.compute_rpcapi = compute_rpcapi.ComputeAPI()
def validate_property(self, value, property, allowed):
"""Validate given security group property.
@@ -4030,7 +4030,7 @@ class SecurityGroupAPI(base.Base, security_group_base.SecurityGroupBase):
security_group['id'])
# NOTE(comstud): No instance_uuid argument to this compute manager
# call
- self.security_group_rpcapi.refresh_security_group_rules(context,
+ self.compute_rpcapi.refresh_security_group_rules(context,
security_group['id'], host=instance.host)
@wrap_check_security_groups_policy
@@ -4053,7 +4053,7 @@ class SecurityGroupAPI(base.Base, security_group_base.SecurityGroupBase):
security_group['id'])
# NOTE(comstud): No instance_uuid argument to this compute manager
# call
- self.security_group_rpcapi.refresh_security_group_rules(context,
+ self.compute_rpcapi.refresh_security_group_rules(context,
security_group['id'], host=instance.host)
def get_rule(self, context, id):
@@ -4158,7 +4158,7 @@ class SecurityGroupAPI(base.Base, security_group_base.SecurityGroupBase):
for instance in security_group['instances']:
if instance.host is not None:
- self.security_group_rpcapi.refresh_instance_security_rules(
+ self.compute_rpcapi.refresh_instance_security_rules(
context, instance.host, instance)
def trigger_members_refresh(self, context, group_ids):
@@ -4194,7 +4194,7 @@ class SecurityGroupAPI(base.Base, security_group_base.SecurityGroupBase):
# ..then we send a request to refresh the rules for each instance.
for instance in instances.values():
if instance.host:
- self.security_group_rpcapi.refresh_instance_security_rules(
+ self.compute_rpcapi.refresh_instance_security_rules(
context, instance.host, instance)
def get_instance_security_groups(self, context, instance_uuid,
diff --git a/nova/compute/manager.py b/nova/compute/manager.py
index 0e3527d87b..5d86698a74 100644
--- a/nova/compute/manager.py
+++ b/nova/compute/manager.py
@@ -6704,6 +6704,17 @@ class _ComputeV4Proxy(object):
bdms, recreate, on_shared_storage,
preserve_ephemeral=preserve_ephemeral)
+ def refresh_security_group_rules(self, ctxt, security_group_id):
+ return self.manager.refresh_security_group_rules(ctxt,
+ security_group_id)
+
+ def refresh_security_group_members(self, ctxt, security_group_id):
+ return self.manager.refresh_security_group_members(ctxt,
+ security_group_id)
+
+ def refresh_instance_security_rules(self, ctxt, instance):
+ return self.manager.refresh_instance_security_rules(ctxt, instance)
+
def refresh_provider_fw_rules(self, ctxt):
return self.manager.refresh_provider_fw_rules(ctxt)
diff --git a/nova/compute/rpcapi.py b/nova/compute/rpcapi.py
index fe116f6d13..9ea77553bc 100644
--- a/nova/compute/rpcapi.py
+++ b/nova/compute/rpcapi.py
@@ -1052,43 +1052,21 @@ class ComputeAPI(object):
cctxt.cast(ctxt, 'unquiesce_instance', instance=instance,
mapping=mapping)
-
-class SecurityGroupAPI(object):
- '''Client side of the security group rpc API.
-
- API version history:
-
- 1.0 - Initial version.
- 1.41 - Adds refresh_instance_security_rules()
-
- 2.0 - Remove 1.x backwards compat
-
- 3.0 - Identical to 2.x, but has to be bumped at the same time as the
- compute API since it's all together on the server side.
- '''
-
- def __init__(self):
- super(SecurityGroupAPI, self).__init__()
- target = messaging.Target(topic=CONF.compute_topic, version='3.0')
- version_cap = ComputeAPI.VERSION_ALIASES.get(
- CONF.upgrade_levels.compute, CONF.upgrade_levels.compute)
- self.client = rpc.get_client(target, version_cap)
-
def refresh_security_group_rules(self, ctxt, security_group_id, host):
- version = '3.0'
+ version = self._compat_ver('4.0', '3.0')
cctxt = self.client.prepare(server=host, version=version)
cctxt.cast(ctxt, 'refresh_security_group_rules',
security_group_id=security_group_id)
def refresh_security_group_members(self, ctxt, security_group_id,
host):
- version = '3.0'
+ version = self._compat_ver('4.0', '3.0')
cctxt = self.client.prepare(server=host, version=version)
cctxt.cast(ctxt, 'refresh_security_group_members',
security_group_id=security_group_id)
def refresh_instance_security_rules(self, ctxt, host, instance):
- version = '3.0'
+ version = self._compat_ver('4.0', '3.0')
instance_p = jsonutils.to_primitive(instance)
cctxt = self.client.prepare(server=_compute_host(None, instance),
version=version)
diff --git a/nova/tests/unit/compute/test_compute.py b/nova/tests/unit/compute/test_compute.py
index 3fe262959a..2679d33f8e 100644
--- a/nova/tests/unit/compute/test_compute.py
+++ b/nova/tests/unit/compute/test_compute.py
@@ -9642,7 +9642,7 @@ class ComputeAPITestCase(BaseTestCase):
rule_get)
self.stubs.Set(self.compute_api.db, 'security_group_get', group_get)
- rpcapi = self.security_group_api.security_group_rpcapi
+ rpcapi = compute_rpcapi.ComputeAPI
self.mox.StubOutWithMock(rpcapi, 'refresh_instance_security_rules')
rpcapi.refresh_instance_security_rules(self.context,
instance['host'],
@@ -9668,7 +9668,7 @@ class ComputeAPITestCase(BaseTestCase):
rule_get)
self.stubs.Set(self.compute_api.db, 'security_group_get', group_get)
- rpcapi = self.security_group_api.security_group_rpcapi
+ rpcapi = compute_rpcapi.ComputeAPI
self.mox.StubOutWithMock(rpcapi, 'refresh_instance_security_rules')
rpcapi.refresh_instance_security_rules(self.context,
instance['host'],
@@ -9692,7 +9692,7 @@ class ComputeAPITestCase(BaseTestCase):
rule_get)
self.stubs.Set(self.compute_api.db, 'security_group_get', group_get)
- rpcapi = self.security_group_api.security_group_rpcapi
+ rpcapi = compute_rpcapi.ComputeAPI
self.mox.StubOutWithMock(rpcapi, 'refresh_instance_security_rules')
self.mox.ReplayAll()
@@ -9708,7 +9708,7 @@ class ComputeAPITestCase(BaseTestCase):
self.stubs.Set(self.compute_api.db, 'security_group_get', group_get)
- rpcapi = self.security_group_api.security_group_rpcapi
+ rpcapi = compute_rpcapi.ComputeAPI
self.mox.StubOutWithMock(rpcapi, 'refresh_instance_security_rules')
rpcapi.refresh_instance_security_rules(self.context,
instance['host'],
@@ -9726,7 +9726,7 @@ class ComputeAPITestCase(BaseTestCase):
self.stubs.Set(self.compute_api.db, 'security_group_get', group_get)
- rpcapi = self.security_group_api.security_group_rpcapi
+ rpcapi = compute_rpcapi.ComputeAPI
self.mox.StubOutWithMock(rpcapi, 'refresh_instance_security_rules')
rpcapi.refresh_instance_security_rules(self.context,
instance['host'],
@@ -9742,7 +9742,7 @@ class ComputeAPITestCase(BaseTestCase):
self.stubs.Set(self.compute_api.db, 'security_group_get', group_get)
- rpcapi = self.security_group_api.security_group_rpcapi
+ rpcapi = compute_rpcapi.ComputeAPI
self.mox.StubOutWithMock(rpcapi, 'refresh_instance_security_rules')
self.mox.ReplayAll()
diff --git a/nova/tests/unit/compute/test_rpcapi.py b/nova/tests/unit/compute/test_rpcapi.py
index eca124d7ad..89c5b297e7 100644
--- a/nova/tests/unit/compute/test_rpcapi.py
+++ b/nova/tests/unit/compute/test_rpcapi.py
@@ -579,23 +579,29 @@ class ComputeRpcAPITestCase(test.NoDBTestCase):
def test_refresh_security_group_rules(self):
self._test_compute_api('refresh_security_group_rules', 'cast',
- rpcapi_class=compute_rpcapi.SecurityGroupAPI,
- security_group_id='id', host='host')
+ security_group_id='id', host='host', version='4.0')
self.flags(compute='kilo', group='upgrade_levels')
self._test_compute_api('refresh_security_group_rules', 'cast',
- rpcapi_class=compute_rpcapi.SecurityGroupAPI,
- security_group_id='id', host='host')
+ security_group_id='id', host='host', version='3.0')
def test_refresh_security_group_members(self):
self._test_compute_api('refresh_security_group_members', 'cast',
- rpcapi_class=compute_rpcapi.SecurityGroupAPI,
- security_group_id='id', host='host')
+ security_group_id='id', host='host', version='4.0')
self.flags(compute='kilo', group='upgrade_levels')
self._test_compute_api('refresh_security_group_members', 'cast',
- rpcapi_class=compute_rpcapi.SecurityGroupAPI,
- security_group_id='id', host='host')
+ security_group_id='id', host='host', version='3.0')
+
+ def test_refresh_instance_security_rules(self):
+ self._test_compute_api('refresh_instance_security_rules', 'cast',
+ host='fake_host', instance=self.fake_instance_obj,
+ version='4.0', assert_dict=True)
+
+ self.flags(compute='kilo', group='upgrade_levels')
+ self._test_compute_api('refresh_instance_security_rules', 'cast',
+ host='fake_host', instance=self.fake_instance_obj,
+ version='3.0', assert_dict=True)
def test_remove_aggregate_host(self):
self._test_compute_api('remove_aggregate_host', 'cast',