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", } }