diff options
| -rw-r--r-- | nova/api/openstack/v2/__init__.py | 5 | ||||
| -rw-r--r-- | nova/api/openstack/v2/contrib/accounts.py (renamed from nova/api/openstack/v2/accounts.py) | 33 | ||||
| -rw-r--r-- | nova/tests/api/openstack/v2/contrib/test_accounts.py (renamed from nova/tests/api/openstack/v2/test_accounts.py) | 2 | ||||
| -rw-r--r-- | nova/tests/api/openstack/v2/test_extensions.py | 1 |
4 files changed, 25 insertions, 16 deletions
diff --git a/nova/api/openstack/v2/__init__.py b/nova/api/openstack/v2/__init__.py index 82a8764a0..1d3830b05 100644 --- a/nova/api/openstack/v2/__init__.py +++ b/nova/api/openstack/v2/__init__.py @@ -24,7 +24,6 @@ import routes import webob.dec import webob.exc -from nova.api.openstack.v2 import accounts from nova.api.openstack.v2 import consoles from nova.api.openstack.v2 import extensions from nova.api.openstack.v2 import flavors @@ -139,10 +138,6 @@ class APIRouter(base_wsgi.Router): controller=users.create_resource(), collection={'detail': 'GET'}) - mapper.resource("account", "accounts", - controller=accounts.create_resource(), - collection={'detail': 'GET'}) - mapper.resource("zone", "zones", controller=zones.create_resource(), collection={'detail': 'GET', diff --git a/nova/api/openstack/v2/accounts.py b/nova/api/openstack/v2/contrib/accounts.py index 0f1584261..263eda640 100644 --- a/nova/api/openstack/v2/accounts.py +++ b/nova/api/openstack/v2/contrib/accounts.py @@ -15,6 +15,7 @@ import webob.exc +from nova.api.openstack.v2 import extensions from nova.api.openstack import wsgi from nova.api.openstack import xmlutil from nova.auth import manager @@ -24,7 +25,7 @@ from nova import log as logging FLAGS = flags.FLAGS -LOG = logging.getLogger('nova.api.openstack.v2.accounts') +LOG = logging.getLogger('nova.api.openstack.v2.contrib.accounts') def _translate_keys(account): @@ -48,9 +49,6 @@ class Controller(object): def index(self, req): raise webob.exc.HTTPNotImplemented() - def detail(self, req): - raise webob.exc.HTTPNotImplemented() - def show(self, req, id): """Return data about the given account id""" account = self.manager.get_project(id) @@ -95,9 +93,24 @@ class AccountXMLSerializer(xmlutil.XMLTemplateSerializer): return AccountTemplate() -def create_resource(): - body_serializers = { - 'application/xml': AccountXMLSerializer(), - } - serializer = wsgi.ResponseSerializer(body_serializers) - return wsgi.Resource(Controller(), serializer=serializer) +class Accounts(extensions.ExtensionDescriptor): + """Admin-only access to accounts""" + + name = "Accounts" + alias = "os-accounts" + namespace = "http://docs.openstack.org/compute/ext/accounts/api/v1.1" + updated = "2011-12-23T00:00:00+00:00" + admin_only = True + + def get_resources(self): + body_serializers = { + 'application/xml': AccountXMLSerializer(), + } + serializer = wsgi.ResponseSerializer(body_serializers) + + #TODO(bcwaldon): This should be prefixed with 'os-' + res = extensions.ResourceExtension('accounts', + Controller(), + serializer=serializer) + + return [res] diff --git a/nova/tests/api/openstack/v2/test_accounts.py b/nova/tests/api/openstack/v2/contrib/test_accounts.py index bf97c0f98..f799853dc 100644 --- a/nova/tests/api/openstack/v2/test_accounts.py +++ b/nova/tests/api/openstack/v2/contrib/test_accounts.py @@ -20,7 +20,7 @@ from lxml import etree import webob from nova import test -from nova.api.openstack.v2 import accounts +from nova.api.openstack.v2.contrib import accounts from nova.auth.manager import User from nova.tests.api.openstack import fakes diff --git a/nova/tests/api/openstack/v2/test_extensions.py b/nova/tests/api/openstack/v2/test_extensions.py index 2063e6e2d..7b9a46a93 100644 --- a/nova/tests/api/openstack/v2/test_extensions.py +++ b/nova/tests/api/openstack/v2/test_extensions.py @@ -98,6 +98,7 @@ class ExtensionControllerTest(ExtensionTestCase): super(ExtensionControllerTest, self).setUp() self.flags(allow_admin_api=True) self.ext_list = [ + "Accounts", "AdminActions", "Console_output", "Createserverext", |
