summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-06-24 16:34:48 +0000
committerGerrit Code Review <review@openstack.org>2013-06-24 16:34:48 +0000
commit0866c5f98f77e03e7a7a687cbefe8adf37424657 (patch)
treef73e89fa479d10c0cae5eb4f8551a1df51a6f8dd
parent1980a0d2e3e1b844f907db59b4d5e4bc9c34ec39 (diff)
parente3d7f1edf958ea9a76ab29d87677f70ffaef2bde (diff)
downloadnova-0866c5f98f77e03e7a7a687cbefe8adf37424657.tar.gz
nova-0866c5f98f77e03e7a7a687cbefe8adf37424657.tar.xz
nova-0866c5f98f77e03e7a7a687cbefe8adf37424657.zip
Merge "Port rescue API to v3 Part 2"
-rw-r--r--etc/nova/policy.json1
-rw-r--r--nova/api/openstack/compute/plugins/v3/rescue.py18
-rw-r--r--nova/tests/api/openstack/compute/plugins/v3/test_rescue.py18
-rw-r--r--nova/tests/fake_policy.py1
-rw-r--r--setup.cfg1
5 files changed, 21 insertions, 18 deletions
diff --git a/etc/nova/policy.json b/etc/nova/policy.json
index 3b138743e..e79ff8380 100644
--- a/etc/nova/policy.json
+++ b/etc/nova/policy.json
@@ -88,6 +88,7 @@
"compute_extension:quotas:delete": "rule:admin_api",
"compute_extension:quota_classes": "",
"compute_extension:rescue": "",
+ "compute_extension:v3:os-rescue": "",
"compute_extension:security_group_default_rules": "rule:admin_api",
"compute_extension:security_groups": "",
"compute_extension:server_diagnostics": "rule:admin_api",
diff --git a/nova/api/openstack/compute/plugins/v3/rescue.py b/nova/api/openstack/compute/plugins/v3/rescue.py
index c89d11117..ded18bb1a 100644
--- a/nova/api/openstack/compute/plugins/v3/rescue.py
+++ b/nova/api/openstack/compute/plugins/v3/rescue.py
@@ -19,15 +19,16 @@ import webob
from webob import exc
from nova.api.openstack import common
-from nova.api.openstack import extensions as exts
+from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova import compute
from nova import exception
from nova import utils
+ALIAS = "os-rescue"
CONF = cfg.CONF
-authorize = exts.extension_authorizer('compute', 'rescue')
+authorize = extensions.extension_authorizer('compute', 'v3:' + ALIAS)
class RescueController(wsgi.Controller):
@@ -82,15 +83,18 @@ class RescueController(wsgi.Controller):
return webob.Response(status_int=202)
-class Rescue(exts.ExtensionDescriptor):
+class Rescue(extensions.V3APIExtensionBase):
"""Instance rescue mode."""
name = "Rescue"
- alias = "os-rescue"
- namespace = "http://docs.openstack.org/compute/ext/rescue/api/v1.1"
- updated = "2011-08-18T00:00:00+00:00"
+ alias = ALIAS
+ namespace = "http://docs.openstack.org/compute/ext/rescue/api/v3"
+ version = 1
+
+ def get_resources(self):
+ return []
def get_controller_extensions(self):
controller = RescueController()
- extension = exts.ControllerExtension(self, 'servers', controller)
+ extension = extensions.ControllerExtension(self, 'servers', controller)
return [extension]
diff --git a/nova/tests/api/openstack/compute/plugins/v3/test_rescue.py b/nova/tests/api/openstack/compute/plugins/v3/test_rescue.py
index ea0a96cbf..75733e50f 100644
--- a/nova/tests/api/openstack/compute/plugins/v3/test_rescue.py
+++ b/nova/tests/api/openstack/compute/plugins/v3/test_rescue.py
@@ -44,15 +44,11 @@ class RescueTest(test.TestCase):
self.stubs.Set(compute.api.API, "get", fake_compute_get)
self.stubs.Set(compute.api.API, "rescue", rescue)
self.stubs.Set(compute.api.API, "unrescue", unrescue)
- self.flags(
- osapi_compute_extension=[
- 'nova.api.openstack.compute.contrib.select_extensions'],
- osapi_compute_ext_list=['Rescue'])
- self.app = fakes.wsgi_app(init_only=('servers',))
+ self.app = fakes.wsgi_app_v3(init_only=('servers', 'os-rescue'))
def test_rescue_with_preset_password(self):
body = {"rescue": {"adminPass": "AABBCC112233"}}
- req = webob.Request.blank('/v2/fake/servers/test_inst/action')
+ req = webob.Request.blank('/v3/servers/test_inst/action')
req.method = "POST"
req.body = jsonutils.dumps(body)
req.headers["content-type"] = "application/json"
@@ -64,7 +60,7 @@ class RescueTest(test.TestCase):
def test_rescue_generates_password(self):
body = dict(rescue=None)
- req = webob.Request.blank('/v2/fake/servers/test_inst/action')
+ req = webob.Request.blank('/v3/servers/test_inst/action')
req.method = "POST"
req.body = jsonutils.dumps(body)
req.headers["content-type"] = "application/json"
@@ -81,7 +77,7 @@ class RescueTest(test.TestCase):
raise exception.InstanceInvalidState('fake message')
self.stubs.Set(compute.api.API, "rescue", fake_rescue)
- req = webob.Request.blank('/v2/fake/servers/test_inst/action')
+ req = webob.Request.blank('/v3/servers/test_inst/action')
req.method = "POST"
req.body = jsonutils.dumps(body)
req.headers["content-type"] = "application/json"
@@ -91,7 +87,7 @@ class RescueTest(test.TestCase):
def test_unrescue(self):
body = dict(unrescue=None)
- req = webob.Request.blank('/v2/fake/servers/test_inst/action')
+ req = webob.Request.blank('/v3/servers/test_inst/action')
req.method = "POST"
req.body = jsonutils.dumps(body)
req.headers["content-type"] = "application/json"
@@ -106,7 +102,7 @@ class RescueTest(test.TestCase):
raise exception.InstanceInvalidState('fake message')
self.stubs.Set(compute.api.API, "unrescue", fake_unrescue)
- req = webob.Request.blank('/v2/fake/servers/test_inst/action')
+ req = webob.Request.blank('/v3/servers/test_inst/action')
req.method = "POST"
req.body = jsonutils.dumps(body)
req.headers["content-type"] = "application/json"
@@ -121,7 +117,7 @@ class RescueTest(test.TestCase):
raise exception.InstanceNotRescuable('fake message')
self.stubs.Set(compute.api.API, "rescue", fake_rescue)
- req = webob.Request.blank('/v2/fake/servers/test_inst/action')
+ req = webob.Request.blank('/v3/servers/test_inst/action')
req.method = "POST"
req.body = jsonutils.dumps(body)
req.headers["content-type"] = "application/json"
diff --git a/nova/tests/fake_policy.py b/nova/tests/fake_policy.py
index 0843306b4..d4264153c 100644
--- a/nova/tests/fake_policy.py
+++ b/nova/tests/fake_policy.py
@@ -168,6 +168,7 @@ policy_data = """
"compute_extension:quotas:delete": "",
"compute_extension:quota_classes": "",
"compute_extension:rescue": "",
+ "compute_extension:v3:os-rescue": "",
"compute_extension:security_group_default_rules": "",
"compute_extension:security_groups": "",
"compute_extension:server_diagnostics": "",
diff --git a/setup.cfg b/setup.cfg
index 64d9d86f0..85c9514f0 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -61,6 +61,7 @@ nova.api.v3.extensions =
fixed_ips = nova.api.openstack.compute.plugins.v3.fixed_ips:FixedIPs
ips = nova.api.openstack.compute.plugins.v3.ips:IPs
keypairs = nova.api.openstack.compute.plugins.v3.keypairs:Keypairs
+ rescue = nova.api.openstack.compute.plugins.v3.rescue:Rescue
servers = nova.api.openstack.compute.plugins.v3.servers:Servers
nova.api.v3.extensions.server.create =