diff options
| author | Lorin Hochstein <lorin@isi.edu> | 2011-06-23 23:42:44 -0400 |
|---|---|---|
| committer | Lorin Hochstein <lorin@isi.edu> | 2011-06-23 23:42:44 -0400 |
| commit | 188dd9117318cc4f5ebe0be9d19b9737a43ce68b (patch) | |
| tree | e685b4402c4af845ad80bfa572e3d140252c388d | |
| parent | 7f578a0f657c076bf97c33dca15f1c78bd11b607 (diff) | |
Starting to transition instance type extra specs API to an extension API
| -rw-r--r-- | nova/api/openstack/__init__.py | 5 | ||||
| -rw-r--r-- | nova/api/openstack/contrib/flavorextraspecs.py (renamed from nova/api/openstack/flavor_extra_specs.py) | 33 | ||||
| -rw-r--r-- | nova/tests/api/openstack/test_flavors_extra_specs.py | 20 |
3 files changed, 43 insertions, 15 deletions
diff --git a/nova/api/openstack/__init__.py b/nova/api/openstack/__init__.py index 857a5431b..859cac669 100644 --- a/nova/api/openstack/__init__.py +++ b/nova/api/openstack/__init__.py @@ -178,8 +178,3 @@ class APIRouterV11(APIRouter): controller=server_metadata.create_resource(), parent_resource=dict(member_name='server', collection_name='servers')) - - mapper.resource("flavor_extra_specs", "extra", - controller=flavor_extra_specs.create_resource(), - parent_resource=dict(member_name='flavor', - collection_name='flavors')) diff --git a/nova/api/openstack/flavor_extra_specs.py b/nova/api/openstack/contrib/flavorextraspecs.py index 6a6d2f7a1..24c5da7b2 100644 --- a/nova/api/openstack/flavor_extra_specs.py +++ b/nova/api/openstack/contrib/flavorextraspecs.py @@ -15,15 +15,18 @@ # License for the specific language governing permissions and limitations # under the License. +""" The instance type extra specs extension""" + from webob import exc from nova import db from nova import quota +from nova.api.openstack import extensions from nova.api.openstack import faults from nova.api.openstack import wsgi -class Controller(object): +class FlavorExtraSpecsController(object): """ The flavor extra specs API controller for the Openstack API """ def _get_extra_specs(self, context, flavor_id): @@ -93,10 +96,28 @@ class Controller(object): raise exc.HTTPBadRequest(explanation=error.message) raise error +class Flavorextraspecs(extensions.ExtensionDescriptor): + def get_name(self): + return "FlavorExtraSpecs" + + def get_alias(self): + return "flavor-extra-specs" + + def get_description(self): + return "Instance type (flavor) extra specs" + + def get_namespace(self): + return \ + "http://docs.openstack.org/ext/flavor-extra-specs/api/v1.1" + + def get_updated(self): + return "2011-06-23T00:00:00+00:00" + + def get_resources(self): + resources = [] -def create_resource(): - serializers = { - 'application/xml': wsgi.XMLDictSerializer(xmlns=wsgi.XMLNS_V11), - } + res = extensions.ResourceExtension('flavor-extra-specs', + FlavorExtraSpecsController()) + resources.append(res) - return wsgi.Resource(Controller(), serializers=serializers) + return resources diff --git a/nova/tests/api/openstack/test_flavors_extra_specs.py b/nova/tests/api/openstack/test_flavors_extra_specs.py index 14f6e7d43..1fe0884b6 100644 --- a/nova/tests/api/openstack/test_flavors_extra_specs.py +++ b/nova/tests/api/openstack/test_flavors_extra_specs.py @@ -19,12 +19,16 @@ import json import stubout import unittest import webob +import os.path + from nova import flags from nova.api import openstack +from nova.api.openstack import extensions from nova.tests.api.openstack import fakes import nova.wsgi +FLAGS = flags.FLAGS def return_create_flavor_extra_specs(context, flavor_id, extra_specs): return stub_flavor_extra_specs() @@ -60,6 +64,8 @@ class FlavorsExtraSpecsTest(unittest.TestCase): def setUp(self): super(FlavorsExtraSpecsTest, self).setUp() + FLAGS.osapi_extensions_path = os.path.join(os.path.dirname(__file__), + "extensions") self.stubs = stubout.StubOutForTesting() fakes.FakeAuthManager.auth_data = {} fakes.FakeAuthDatabase.data = {} @@ -73,13 +79,19 @@ class FlavorsExtraSpecsTest(unittest.TestCase): def test_index(self): self.stubs.Set(nova.db.api, 'instance_type_extra_specs_get', return_flavor_extra_specs) - req = webob.Request.blank('/v1.1/flavors/1/extra') - req.environ['api.version'] = '1.1' - res = req.get_response(fakes.wsgi_app()) + app = openstack.APIRouterV11() + ext_midware = extensions.ExtensionMiddleware(app) + #request = webob.Request.blank('/flavors-extra-specs/1') + request = webob.Request.blank('/flavors-extra-specs') + res = request.get_response(ext_midware) + print res + #req.environ['api.version'] = '1.1' + #res = req.get_response(fakes.wsgi_app()) self.assertEqual(200, res.status_int) res_dict = json.loads(res.body) self.assertEqual('application/json', res.headers['Content-Type']) - self.assertEqual('value1', res_dict['extra']['key1']) + print res_dict + self.assertEqual('value1', res_dict['1']['key1']) def test_index_no_data(self): self.stubs.Set(nova.db.api, 'instance_type_extra_specs_get', |
