summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/api/openstack/v2/__init__.py5
-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.py1
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",