Files
nova-specs/specs/juno/approved/standardize-nova-image.rst
Michael Still f0b8204072 Re-organize juno specs
As discussed at our nova meetings, reorganize the juno specs into
three directories:

 - proposed: things proposed which weren't approved
 - approved: things we approved but didn't implement
 - implemented: things approved and implemented

The first I suspect is the most controversial. I've done this
because I worry about the case where a future developer wants to
pick up something dropped by a previous developer, but has trouble
finding previous proposed specifications on the topic. Note that
the actual proposed specs for Juno are adding in a later commit.

Change-Id: Idcf55ca37a83d7098dcb7c2971240c4e8fd23dc8
2014-10-07 07:49:59 +11:00

126 lines
3.0 KiB
ReStructuredText

..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
======================
Standardize Nova Image
======================
https://blueprints.launchpad.net/nova/+spec/standardize-nova-image
Standardize Nova's nova.image module to work like nova.network.api
and nova.volume.cinder.
Problem description
===================
For some reason, nova.image does things differently than nova.volume and
nova.network. Instead of nova.compute.manager instantiating a
self.image_api object, like it does for self.network_api and
self.volume_api, the compute manager calls an obtuse collection of
nova.image.glance module calls.
This blueprint is around the work to make a new nova.image.api module
and have it called like other submodule "internal APIs" in Nova.
Proposed change
===============
A new nova.image.api module shall be created, following in the style
of nova.network.api and nova.volume.cinder. There will be an API class
in the nova.image.api module that follows identical conventions as the
nova.volume.cinder.API class, with methods for listing (get_all), showing
(get), creating (create), updating (update), and removing (delete)
images from the backend image store. There will be a nova.image.driver
module with a base driver class.
The nova.image.glance module will be updated to subclass the base driver
class.
Alternatives
------------
There is a series of patches in review up for Nova that tries to add
support for Glance's V2 API operations:
https://review.openstack.org/#/q/status:open+project:openstack/nova+branch:master+topic:bp/use-glance-v2-api,n,z
Unfortunately, I believe this patch series further muddies the image
service inside Nova instead of making it cleaner and standardized with
the rest of Nova's external API interfaces.
The idea of this blueprint is to lay a good foundation for future V2
Glance API work by first standardizing the image API inside of Nova.
Data model impact
-----------------
None
REST API impact
---------------
None
Security impact
---------------
None
Notifications impact
--------------------
None
Other end user impact
---------------------
None
Performance Impact
------------------
None
Other deployer impact
---------------------
None
Developer impact
----------------
See above link to Eddie Sheffield's patch series that would be affected by the
code in this blueprint. Hopefully, however, once the image API is brought in
line with the other internal-to-external Nova APIs, the work on V2 Glance API
should be quite a bit easier.
Implementation
==============
Assignee(s)
-----------
Primary assignee:
jaypipes
Work Items
----------
* Create the nova.image.api module that instantiates a driver
* Create the base image driver class, modeling after the new
nova.network.driver class created by the refactor-network-api blueprint
code.
* Move the existing glance code into a subclassed driver
Dependencies
============
None
Testing
=======
None
Documentation Impact
====================
None
References
==========
None