From 2c437c08891acb649793db6e2add9c9169913817 Mon Sep 17 00:00:00 2001 From: Sean Dague Date: Wed, 8 Jun 2016 11:26:44 -0400 Subject: [PATCH] Tear down os-disk-config part 1 This removes the portions of the os-disk-config extension which extend the returned responses by adding attributes to the servers object. Tests are updated / removed where appropriate. Follow ups will be done to remove the request handling, as well as the image response handling. Part of bp:api-no-more-extensions Change-Id: I795365ed9d0a786b56fcb18400ceee26ca8f1c96 --- nova/api/openstack/compute/disk_config.py | 51 +------------------ nova/api/openstack/compute/views/servers.py | 15 ++++++ .../api/openstack/compute/test_disk_config.py | 3 +- .../api/openstack/compute/test_serversV21.py | 5 ++ 4 files changed, 22 insertions(+), 52 deletions(-) diff --git a/nova/api/openstack/compute/disk_config.py b/nova/api/openstack/compute/disk_config.py index dfefe68eefb1..939374968ee5 100644 --- a/nova/api/openstack/compute/disk_config.py +++ b/nova/api/openstack/compute/disk_config.py @@ -66,52 +66,6 @@ class ImageDiskConfigController(wsgi.Controller): self._add_disk_config(context, images) -class ServerDiskConfigController(wsgi.Controller): - def _add_disk_config(self, req, servers): - for server in servers: - db_server = req.get_db_instance(server['id']) - # server['id'] is guaranteed to be in the cache due to - # the core API adding it in its 'show'/'detail' methods. - value = db_server.get(INTERNAL_DISK_CONFIG) - server[API_DISK_CONFIG] = disk_config_to_api(value) - - def _show(self, req, resp_obj): - if 'server' in resp_obj.obj: - server = resp_obj.obj['server'] - self._add_disk_config(req, [server]) - - @wsgi.extends - def show(self, req, resp_obj, id): - context = req.environ['nova.context'] - if authorize(context): - self._show(req, resp_obj) - - @wsgi.extends - def detail(self, req, resp_obj): - context = req.environ['nova.context'] - if 'servers' in resp_obj.obj and authorize(context): - servers = resp_obj.obj['servers'] - self._add_disk_config(req, servers) - - @wsgi.extends - def create(self, req, resp_obj, body): - context = req.environ['nova.context'] - if authorize(context): - self._show(req, resp_obj) - - @wsgi.extends - def update(self, req, resp_obj, id, body): - context = req.environ['nova.context'] - if authorize(context): - self._show(req, resp_obj) - - @wsgi.extends(action='rebuild') - def _action_rebuild(self, req, resp_obj, id, body): - context = req.environ['nova.context'] - if authorize(context): - self._show(req, resp_obj) - - class DiskConfig(extensions.V21APIExtensionBase): """Disk Management Extension.""" @@ -120,13 +74,10 @@ class DiskConfig(extensions.V21APIExtensionBase): version = 1 def get_controller_extensions(self): - servers_extension = extensions.ControllerExtension( - self, 'servers', ServerDiskConfigController()) - images_extension = extensions.ControllerExtension( self, 'images', ImageDiskConfigController()) - return [servers_extension, images_extension] + return [images_extension] def get_resources(self): return [] diff --git a/nova/api/openstack/compute/views/servers.py b/nova/api/openstack/compute/views/servers.py index 3ccc9f4d87a5..9f806cec5cb1 100644 --- a/nova/api/openstack/compute/views/servers.py +++ b/nova/api/openstack/compute/views/servers.py @@ -69,6 +69,11 @@ class ViewBuilder(common.ViewBuilder): "links": self._get_links(request, instance["uuid"], self._collection_name), + # NOTE(sdague): historically this was the + # os-disk-config extension, but now that extensions + # are gone, we merge these attributes here. + "OS-DCF:diskConfig": ( + 'AUTO' if instance.get('auto_disk_config') else 'MANUAL'), }, } @@ -127,6 +132,11 @@ class ViewBuilder(common.ViewBuilder): "links": self._get_links(request, instance["uuid"], self._collection_name), + # NOTE(sdague): historically this was the + # os-disk-config extension, but now that extensions + # are gone, we merge these attributes here. + "OS-DCF:diskConfig": ( + 'AUTO' if instance.get('auto_disk_config') else 'MANUAL'), }, } if server["server"]["status"] in self._fault_statuses: @@ -288,6 +298,11 @@ class ViewBuilderV21(ViewBuilder): # V2.1. "image": self._get_image(request, instance), "flavor": self._get_flavor(request, instance), + # NOTE(sdague): historically this was the + # os-disk-config extension, but now that extensions + # are gone, we merge these attributes here. + "OS-DCF:diskConfig": ( + 'AUTO' if instance.get('auto_disk_config') else 'MANUAL'), "created": utils.isotime(instance["created_at"]), "updated": utils.isotime(instance["updated_at"]), "addresses": self._get_addresses(request, instance, diff --git a/nova/tests/unit/api/openstack/compute/test_disk_config.py b/nova/tests/unit/api/openstack/compute/test_disk_config.py index 50540c40f4b2..284191c27aa6 100644 --- a/nova/tests/unit/api/openstack/compute/test_disk_config.py +++ b/nova/tests/unit/api/openstack/compute/test_disk_config.py @@ -128,8 +128,7 @@ class DiskConfigTestCaseV21(test.TestCase): self.stub_out('nova.db.instance_create', fake_instance_create) def _set_up_app(self): - self.app = compute.APIRouterV21(init_only=('servers', 'images', - 'os-disk-config')) + self.app = compute.APIRouterV21() def _get_expected_msg_for_invalid_disk_config(self): return ('{{"badRequest": {{"message": "Invalid input for' diff --git a/nova/tests/unit/api/openstack/compute/test_serversV21.py b/nova/tests/unit/api/openstack/compute/test_serversV21.py index 5a1ed2162e3f..b618495f8bc7 100644 --- a/nova/tests/unit/api/openstack/compute/test_serversV21.py +++ b/nova/tests/unit/api/openstack/compute/test_serversV21.py @@ -395,6 +395,7 @@ class ServersControllerTest(ControllerTest): "href": "http://localhost/fake/servers/%s" % uuid, }, ], + "OS-DCF:diskConfig": "MANUAL", } } @@ -3686,6 +3687,7 @@ class ServersViewBuilderTest(test.TestCase): "href": self.bookmark_link, }, ], + "OS-DCF:diskConfig": "MANUAL", } } @@ -3762,6 +3764,7 @@ class ServersViewBuilderTest(test.TestCase): "message": "HTTPNotFound", "details": "Stock details for test", }, + "OS-DCF:diskConfig": "MANUAL", } } @@ -3914,6 +3917,7 @@ class ServersViewBuilderTest(test.TestCase): "href": self.bookmark_link, }, ], + "OS-DCF:diskConfig": "MANUAL", } } @@ -3987,6 +3991,7 @@ class ServersViewBuilderTest(test.TestCase): "href": self.bookmark_link, }, ], + "OS-DCF:diskConfig": "MANUAL", } }