diff options
-rw-r--r-- | etc/nova/policy.json | 1 | ||||
-rw-r--r-- | nova/api/openstack/compute/plugins/v3/server_diagnostics.py | 24 | ||||
-rw-r--r-- | nova/tests/api/openstack/compute/plugins/v3/test_server_diagnostics.py | 11 | ||||
-rw-r--r-- | nova/tests/fake_policy.py | 1 | ||||
-rw-r--r-- | setup.cfg | 1 |
5 files changed, 21 insertions, 17 deletions
diff --git a/etc/nova/policy.json b/etc/nova/policy.json index 2d1ac7d25..fc64e4692 100644 --- a/etc/nova/policy.json +++ b/etc/nova/policy.json @@ -103,6 +103,7 @@ "compute_extension:security_group_default_rules": "rule:admin_api", "compute_extension:security_groups": "", "compute_extension:server_diagnostics": "rule:admin_api", + "compute_extension:v3:os-server-diagnostics": "rule:admin_api", "compute_extension:server_password": "", "compute_extension:server_usage": "", "compute_extension:services": "rule:admin_api", diff --git a/nova/api/openstack/compute/plugins/v3/server_diagnostics.py b/nova/api/openstack/compute/plugins/v3/server_diagnostics.py index 7711eb653..6a19732dc 100644 --- a/nova/api/openstack/compute/plugins/v3/server_diagnostics.py +++ b/nova/api/openstack/compute/plugins/v3/server_diagnostics.py @@ -22,7 +22,8 @@ from nova import compute from nova import exception -authorize = extensions.extension_authorizer('compute', 'server_diagnostics') +ALIAS = "os-server-diagnostics" +authorize = extensions.extension_authorizer('compute', 'v3:' + ALIAS) sd_nsmap = {None: wsgi.XMLNS_V11} @@ -49,19 +50,22 @@ class ServerDiagnosticsController(object): return compute_api.get_diagnostics(context, instance) -class Server_diagnostics(extensions.ExtensionDescriptor): +class ServerDiagnostics(extensions.V3APIExtensionBase): """Allow Admins to view server diagnostics through server action.""" name = "ServerDiagnostics" - alias = "os-server-diagnostics" + alias = ALIAS namespace = ("http://docs.openstack.org/compute/ext/" - "server-diagnostics/api/v1.1") - updated = "2011-12-21T00:00:00+00:00" + "server-diagnostics/api/v3") + version = 1 def get_resources(self): parent_def = {'member_name': 'server', 'collection_name': 'servers'} - #NOTE(bcwaldon): This should be prefixed with 'os-' - ext = extensions.ResourceExtension('diagnostics', - ServerDiagnosticsController(), - parent=parent_def) - return [ext] + resources = [ + extensions.ResourceExtension(ALIAS, + ServerDiagnosticsController(), + parent=parent_def)] + return resources + + def get_controller_extensions(self): + return [] diff --git a/nova/tests/api/openstack/compute/plugins/v3/test_server_diagnostics.py b/nova/tests/api/openstack/compute/plugins/v3/test_server_diagnostics.py index 783275ea2..61b78fea8 100644 --- a/nova/tests/api/openstack/compute/plugins/v3/test_server_diagnostics.py +++ b/nova/tests/api/openstack/compute/plugins/v3/test_server_diagnostics.py @@ -16,7 +16,7 @@ from lxml import etree from nova.api.openstack import compute -from nova.api.openstack.compute.contrib import server_diagnostics +from nova.api.openstack.compute.plugins.v3 import server_diagnostics from nova.api.openstack import wsgi from nova.compute import api as compute_api from nova.openstack.common import jsonutils @@ -41,18 +41,15 @@ class ServerDiagnosticsTest(test.TestCase): def setUp(self): super(ServerDiagnosticsTest, self).setUp() - self.flags(verbose=True, - osapi_compute_extension=[ - 'nova.api.openstack.compute.contrib.select_extensions'], - osapi_compute_ext_list=['Server_diagnostics']) self.stubs.Set(compute_api.API, 'get_diagnostics', fake_get_diagnostics) self.stubs.Set(compute_api.API, 'get', fake_instance_get) - self.router = compute.APIRouter(init_only=('servers', 'diagnostics')) + self.router = compute.APIRouterV3(init_only=('servers', 'os-server-diagnostics')) def test_get_diagnostics(self): - req = fakes.HTTPRequest.blank('/fake/servers/%s/diagnostics' % UUID) + req = fakes.HTTPRequestV3.blank( + '/servers/%s/os-server-diagnostics' % UUID) res = req.get_response(self.router) output = jsonutils.loads(res.body) self.assertEqual(output, {'data': 'Some diagnostic info'}) diff --git a/nova/tests/fake_policy.py b/nova/tests/fake_policy.py index 490ef5bc5..decd65a43 100644 --- a/nova/tests/fake_policy.py +++ b/nova/tests/fake_policy.py @@ -178,6 +178,7 @@ policy_data = """ "compute_extension:security_group_default_rules": "", "compute_extension:security_groups": "", "compute_extension:server_diagnostics": "", + "compute_extension:v3:os-server-diagnostics": "", "compute_extension:server_password": "", "compute_extension:server_usage": "", "compute_extension:services": "", @@ -67,6 +67,7 @@ nova.api.v3.extensions = keypairs = nova.api.openstack.compute.plugins.v3.keypairs:Keypairs quota_sets = nova.api.openstack.compute.plugins.v3.quota_sets:QuotaSets rescue = nova.api.openstack.compute.plugins.v3.rescue:Rescue + server_diagnostics = nova.api.openstack.compute.plugins.v3.server_diagnostics:ServerDiagnostics servers = nova.api.openstack.compute.plugins.v3.servers:Servers nova.api.v3.extensions.server.create = |