From ad61d59611bf524b77a1a149d7ce3d925ab036ca Mon Sep 17 00:00:00 2001 From: Dean Troyer Date: Wed, 13 Dec 2017 15:16:18 -0600 Subject: [PATCH] Add support for flavor extra_specs Add a stub route for /compute/flavor/.../ os-extra_specs Signed-off-by: Dean Troyer --- dwarf/compute/api.py | 15 +++++++++++++++ dwarf/compute/api_response.py | 8 ++++++++ tests/api/test_compute_flavors.py | 14 ++++++++++++++ 3 files changed, 37 insertions(+) diff --git a/dwarf/compute/api.py b/dwarf/compute/api.py index f94a0ae..883a87e 100644 --- a/dwarf/compute/api.py +++ b/dwarf/compute/api.py @@ -66,6 +66,18 @@ def _route_version(): # ----------------------------------------------------------------------------- # Bottle Flavors API routes +@exception.catchall +def _route_flavors_id_extra(flavor_id): + """ + Route: /compute/v2.0/flavors//os-extra_specs + Method: GET + """ + utils.show_request(bottle.request) + + # nova flavor-show + return api_response.show_flavor_extra(FLAVORS.show(flavor_id)) + + @exception.catchall def _route_flavors_id(flavor_id): """ @@ -240,6 +252,9 @@ def set_routes(app): app.route('/compute/v2.0/servers//action', method='POST', callback=_route_servers_id_action) + app.route('/compute/v2.0/flavors//os-extra_specs', + method=('GET'), + callback=_route_flavors_id_extra) app.route('/compute/v2.0/flavors/', method=('GET', 'DELETE'), callback=_route_flavors_id) diff --git a/dwarf/compute/api_response.py b/dwarf/compute/api_response.py index 7259bb6..ee1e7f2 100644 --- a/dwarf/compute/api_response.py +++ b/dwarf/compute/api_response.py @@ -67,6 +67,10 @@ def list_versions(): "name": "{{name}}" }""" +FLAVOR_EXTRA = """{ + "extra_specs": {} +}""" + def create_flavor(data): return {'flavor': utils.json_render(FLAVOR, data, _details=True)} @@ -81,6 +85,10 @@ def show_flavor(data): return {'flavor': utils.json_render(FLAVOR, data, _details=True)} +def show_flavor_extra(data): + return {'extra_specs': utils.json_render(FLAVOR_EXTRA, data)} + + # ----------------------------------------------------------------------------- # Keypairs diff --git a/tests/api/test_compute_flavors.py b/tests/api/test_compute_flavors.py index b6b323b..f5eefe1 100644 --- a/tests/api/test_compute_flavors.py +++ b/tests/api/test_compute_flavors.py @@ -56,6 +56,11 @@ def create_flavor_req(flavor): }""" +FLAVOR_EXTRA_RESP = """{ + "extra_specs": {} +}""" + + def list_flavors_resp(flavor, details=False): return {'flavors': [utils.json_render(FLAVOR_RESP, f, _details=details) for f in flavor]} @@ -65,6 +70,10 @@ def show_flavor_resp(flavor): return {'flavor': utils.json_render(FLAVOR_RESP, flavor, _details=True)} +def show_flavor_extra_resp(flavor): + return {'flavor': utils.json_render(FLAVOR_REXTRA_ESP, flavor)} + + def create_flavor_resp(flavor): return {'flavor': utils.json_render(FLAVOR_RESP, flavor, _details=True)} @@ -101,6 +110,11 @@ def test_show_flavor(self): status=200) self.assertEqual(json.loads(resp.body), show_flavor_resp(flavor1)) + def test_show_flavor_extra(self): + resp = self.app.get('/compute/v2.0/flavors/%s/os-extra_specs' % + flavor1['id'], status=200) + self.assertEqual(json.loads(resp.body), show_flavor_resp(flavor1)) + def test_delete_flavor(self): # Delete flavor[0] resp = self.app.delete('/compute/v2.0/flavors/%s' % flavor1['id'],