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
This commit is contained in:
parent
6e2e1dc912
commit
2c437c0889
@ -66,52 +66,6 @@ class ImageDiskConfigController(wsgi.Controller):
|
|||||||
self._add_disk_config(context, images)
|
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):
|
class DiskConfig(extensions.V21APIExtensionBase):
|
||||||
"""Disk Management Extension."""
|
"""Disk Management Extension."""
|
||||||
|
|
||||||
@ -120,13 +74,10 @@ class DiskConfig(extensions.V21APIExtensionBase):
|
|||||||
version = 1
|
version = 1
|
||||||
|
|
||||||
def get_controller_extensions(self):
|
def get_controller_extensions(self):
|
||||||
servers_extension = extensions.ControllerExtension(
|
|
||||||
self, 'servers', ServerDiskConfigController())
|
|
||||||
|
|
||||||
images_extension = extensions.ControllerExtension(
|
images_extension = extensions.ControllerExtension(
|
||||||
self, 'images', ImageDiskConfigController())
|
self, 'images', ImageDiskConfigController())
|
||||||
|
|
||||||
return [servers_extension, images_extension]
|
return [images_extension]
|
||||||
|
|
||||||
def get_resources(self):
|
def get_resources(self):
|
||||||
return []
|
return []
|
||||||
|
@ -69,6 +69,11 @@ class ViewBuilder(common.ViewBuilder):
|
|||||||
"links": self._get_links(request,
|
"links": self._get_links(request,
|
||||||
instance["uuid"],
|
instance["uuid"],
|
||||||
self._collection_name),
|
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,
|
"links": self._get_links(request,
|
||||||
instance["uuid"],
|
instance["uuid"],
|
||||||
self._collection_name),
|
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:
|
if server["server"]["status"] in self._fault_statuses:
|
||||||
@ -288,6 +298,11 @@ class ViewBuilderV21(ViewBuilder):
|
|||||||
# V2.1.
|
# V2.1.
|
||||||
"image": self._get_image(request, instance),
|
"image": self._get_image(request, instance),
|
||||||
"flavor": self._get_flavor(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"]),
|
"created": utils.isotime(instance["created_at"]),
|
||||||
"updated": utils.isotime(instance["updated_at"]),
|
"updated": utils.isotime(instance["updated_at"]),
|
||||||
"addresses": self._get_addresses(request, instance,
|
"addresses": self._get_addresses(request, instance,
|
||||||
|
@ -128,8 +128,7 @@ class DiskConfigTestCaseV21(test.TestCase):
|
|||||||
self.stub_out('nova.db.instance_create', fake_instance_create)
|
self.stub_out('nova.db.instance_create', fake_instance_create)
|
||||||
|
|
||||||
def _set_up_app(self):
|
def _set_up_app(self):
|
||||||
self.app = compute.APIRouterV21(init_only=('servers', 'images',
|
self.app = compute.APIRouterV21()
|
||||||
'os-disk-config'))
|
|
||||||
|
|
||||||
def _get_expected_msg_for_invalid_disk_config(self):
|
def _get_expected_msg_for_invalid_disk_config(self):
|
||||||
return ('{{"badRequest": {{"message": "Invalid input for'
|
return ('{{"badRequest": {{"message": "Invalid input for'
|
||||||
|
@ -395,6 +395,7 @@ class ServersControllerTest(ControllerTest):
|
|||||||
"href": "http://localhost/fake/servers/%s" % uuid,
|
"href": "http://localhost/fake/servers/%s" % uuid,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
"OS-DCF:diskConfig": "MANUAL",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3686,6 +3687,7 @@ class ServersViewBuilderTest(test.TestCase):
|
|||||||
"href": self.bookmark_link,
|
"href": self.bookmark_link,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
"OS-DCF:diskConfig": "MANUAL",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3762,6 +3764,7 @@ class ServersViewBuilderTest(test.TestCase):
|
|||||||
"message": "HTTPNotFound",
|
"message": "HTTPNotFound",
|
||||||
"details": "Stock details for test",
|
"details": "Stock details for test",
|
||||||
},
|
},
|
||||||
|
"OS-DCF:diskConfig": "MANUAL",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3914,6 +3917,7 @@ class ServersViewBuilderTest(test.TestCase):
|
|||||||
"href": self.bookmark_link,
|
"href": self.bookmark_link,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
"OS-DCF:diskConfig": "MANUAL",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3987,6 +3991,7 @@ class ServersViewBuilderTest(test.TestCase):
|
|||||||
"href": self.bookmark_link,
|
"href": self.bookmark_link,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
"OS-DCF:diskConfig": "MANUAL",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user