[Openstack] Agreeing a common set of Image Properties

Jay Pipes jaypipes at gmail.com
Mon Apr 9 18:57:51 UTC 2012



On 04/09/2012 02:41 PM, Justin Santa Barbara wrote:
> I should probably clarify my terminology a little here, as I may have
> mangled it:
>
>   * I'm talking about additional/extension properties, not properties
>     that are well-known to Glance
>   * However, we agree to use a common set of properties to mean certain
>     things.
>
> In other words, we all agree to call Debian
> "openstack.org:distro=debian.org <http://debian.org>" rather than
> "os_distro=Debian" on Cloud1, "distro=debian.org <http://debian.org>" on
> Cloud2, "name=Debian Squeeze" on Cloud3 etc

Sure.

>         3 main pieces of metadata: os:distro, os:version_major,
>         os:version_minor
>
>
>     In the proposed Images API 2.0, we use JSON Schema's
>     additionalProperties collection to allow for discoverable custom
>     properties. For the properties you list above, you could either add
>     those properties with the prefix you propose above (in
>     additionalProperties), or argue for inclusion in the standard
>     "properties" collection of the Image Entry schema. You can see both
>     the properties and a sample of what additionalProperties are used
>     for shown in the schema:
>
>     https://docs.google.com/__document/d/1rb7ZVn0Du___5NZqUyQpqUZSmv7Qd66TMHYAtvsow7__LH4/edit#heading=h.__1nk6x0hs4enq
>     <https://docs.google.com/document/d/1rb7ZVn0Du_5NZqUyQpqUZSmv7Qd66TMHYAtvsow7LH4/edit#heading=h.1nk6x0hs4enq>
>
> Ah, OK I understand the proposed  2.0 API a bit better now.
>
> I'd like to solve this now though, not in 6 / 12 / 18 months.  It sounds
> like my proposal is compatible with the new API as well, so no problem
> there!

Yes, I hear you :)

>           * Some clouds will automatically respin images e.g. weekly
>         with the
>             latest updates.  This could also be exposed through metadata.
>               os:updated_through= "20120301" ?
>
>     Possible, though a version identifier would also work. Or simply a
>     query like:
>     GET
>     /images/sort_by=created_at&__sort_order=desc&limit=1&__property-os:distro=Debian
>     (and you can do that in the existing API as well, BTW)
>
> created_at != updated_through in general.   As a simple example, the
> cloud provider might make a "clean" image (stock Debian 6.0.3) at the
> same time as you make a totally up-to-date image.

You can use updated_at as well in the existing API... though of course, 
it only refers to the image metadata, not the image file itself since 
that is static read-only once uploaded...

> Not sure what you mean by a version identifier?

Debian 6.0.3 is a version identifier...

>           * Some clouds will offer only bare images, some will provide a
>         variety
>             e.g. bare, LAMP, Hadoop, etc.  Should we use the native package
>             names to indicate additional packages?  e.g.
>             os:packages="apache2,mysql,__php5" ?
>
>     IMHO, no. That would get overkill. In the new API, you could use
>     tags, though. Or you could add a custom extension in the new API so
>     that you could expose packages as a subresource of /images/<IMAGE_ID>/.
>
> It is important to differentiate a "minimal" image from a "loaded"
> image, users will typically want a loaded image, code will typically
> want a bare image; alternative suggestions are welcome.  If we're going
> to use tags in 2.0, shouldn't we use properties/metadata today?

Your definition of loaded != others' definition of loaded ;) I'm not 
sure there is going to be a whole lot of success in defining what loaded 
means, though there might be a better success of determining what 
"minimal" means.

Yes, in the existing API, you would use properties. And prefixing those 
properties is perfectly acceptable. Just pointing out we've come up with 
a different solution (tags plus a discoverable schema) in the 2.0 
proposed API.

>         As a (programmatic) consumer of these images, my wishlist:
>
>           * A cloud will have to put on whatever drivers / agents they
>         need to,
>             but ideally these should otherwise be clean images, with minimal
>             deviation from the stock install.  (Or 'clean' images should be
>             available alongside other images)  It would be great if I
>         could be
>             launch a 'clean' image on any OpenStack cloud and have it behave
>             more or less the same; I shouldn't have to second guess any
>             additional tweaks.
>
>
>     No disagreement from me here, but I don't see how this relates to a
>     common set of image properties? Could you elaborate?
>
> Here's what I see on Cloud X (edited to protect the party, and I removed
> the kernels/ramdisks):
>
> 417 Debian Squeeze 6.0.3 Server 64-bit 20120123            ACTIVE
> x_image_type=machine, image_location=local, image_state=available,
> project_id=None, x_md_version=1, kernel_id=415, min_ram=0,
> ramdisk_id=416, x_image_id=c89dee3bca7a62103f7d88d2a02f4dc8, owner=None,
> x_image_builddate=20120123, architecture=amd64, min_disk=0,
> x_image_version=1x1.1
> 414 CentOS 6.2 Server 64-bit 20120125                      ACTIVE
> x_image_type=machine, image_location=local, image_state=available,
> project_id=None, x_md_version=1, kernel_id=412, min_ram=0,
> ramdisk_id=413, x_image_id=f2fbb1bf37a13e7c5da897c7082684df, owner=None,
> x_image_builddate=20120125, architecture=x86_64, min_disk=0,
> x_image_version=1x1
> 229 Ubuntu Oneiric 11.10 Server 64-bit 20111212            ACTIVE
> image_location=local, image_state=available, kernel_id=228, min_ram=0,
> min_disk=0, architecture=amd64, owner=None, project_id=None
> 227 Ubuntu Natty 11.04 Server 64-bit 20111212              ACTIVE
> image_location=local, image_state=available, kernel_id=226, min_ram=0,
> min_disk=0, architecture=amd64, owner=None, project_id=None
> 225 Ubuntu Maverick 10.10 Server 64-bit 20111212           ACTIVE
> image_location=local, image_state=available, kernel_id=224, min_ram=0,
> min_disk=0, architecture=amd64, owner=None, project_id=None
> 223 Ubuntu Lucid 10.04 LTS Server 64-bit 20111212          ACTIVE
> image_location=local, image_state=available, kernel_id=222, min_ram=0,
> min_disk=0, architecture=amd64, owner=None, project_id=None
> 221 CentOS 5.6 Server 64-bit 20111207                      ACTIVE
> image_location=local, image_state=available, kernel_id=219, min_ram=0,
> ramdisk_id=220, min_disk=0, architecture=x86_64, owner=None,
> project_id=None
> How do I write code to determine:
> Is Debian Squeeze 6.0.4 available?
> Is 6.0.3 is the best I can get?
> Is Debian Wheezy available?
> If there are two Debian 6.0.3 images, one bare and one loaded, how do I
> tell them apart?
> Is CentOS 6.2 a newer version of Debian (supposing I've never heard of
> CentOS, for some reason)?

Gotcha, ok, I understand you better now... and I maintain that in the 
current API, standardizing on property prefixes is perfectly reasonable 
solution, but that in the proposed 2.0 API, you'd use the schema 
document and tags.

>           * I would like to be able to launch the clean image and install
>             updates myself, in case I don't want a particular update.
>           Providing
>             a fast apt cache is much better than providing respun
>         images, for my
>             use-case.  I would be great if old images stuck around,
>         therefore!
>
>     Again, no disagreement, but I'm also confused how this relates to
>     standard image properties...
>
> Just a request to bear in mind that some people won't want to run the
> latest image.  Once we agree the metadata we can tell the images apart
> easily (or you can hide them in the GUI), so there's no need to delete
> old images unless there's an SSH exploit.

understood. :)

Best,
-jay




More information about the Openstack mailing list