[openstack-dev] [nova][glance] Format of 'locations' data in image metadata ?

Daniel P. Berrange berrange at redhat.com
Wed May 20 10:11:51 UTC 2015


On Wed, May 20, 2015 at 05:43:07PM +0800, Zhi Yan Liu wrote:
> On Wed, May 20, 2015 at 5:23 PM, Zhi Yan Liu <lzy.dev at gmail.com> wrote:
> > On Wed, May 20, 2015 at 5:06 PM, Daniel P. Berrange <berrange at redhat.com> wrote:
> >> On Wed, May 20, 2015 at 12:01:37AM +0200, Flavio Percoco wrote:
> >>> On 19/05/15 17:19 +0100, Daniel P. Berrange wrote:
> >>> >In Nova we are attempting to model[1] the glance image metadata and
> >>> >properties using the Nova object model (now oslo.versionedobjects).
> >>> >
> >>> >The one item I'm stuck on understanding is the 'locations' field
> >>> >and more specifically the 'metadata' element in each location
> >>> >entry
> >>> >
> >>> >
> >>> >In the file glance/api/v2/images.py I can see this description
> >>> >of the data format:
> >>> >
> >>> >       'locations': {
> >>> >           'type': 'array',
> >>> >           'items': {
> >>> >               'type': 'object',
> >>> >               'properties': {
> >>> >                   'url': {
> >>> >                       'type': 'string',
> >>> >                       'maxLength': 255,
> >>> >                   },
> >>> >                   'metadata': {
> >>> >                       'type': 'object',
> >>> >                   },
> >>> >               },
> >>> >               'required': ['url', 'metadata'],
> >>> >           },
> >>> >           'description': _('A set of URLs to access the image file kept in '
> >>> >                            'external store'),
> >>> >
> >>> >
> >>> >As you can see here, 'metadata' is just said to be of type 'object'.
> >>> >
> >>> >Is there somewhere that actually describes what is valid contents
> >>> >for this field ? Is it sufficient to assume the metadata will only
> >>> >ever be a dict of strings, or can the metadata be a complex type
> >>> >with arbitrarily nested data structures ?
> >>>
> >>> It's just arbitrary metadata for now, we don't have a specific format.
> >>> I'm curious to know if there are folks using this field. We do (did)
> >>> have a use case for it.
> >>
> >> Yep, I'd be curious to understand just what it is used for in practice ?
> >> Is the data to be stored in there determined by python code, or by the
> >> local administrator or both ?
> >
> > Yes, It determined by python code in nova as a part of image download
> > plugin, and administrator needs to prepare it based on particular
> > deployment environment as well. Current a usage is to accelerate image
> > download from nfs store to nova compute node, now there is only one
> > particular plugin in nova upstream tree [0]. (from the logic in
> > _file_system_lookup(), i think a predefined 'id' is needed in the
> > metadata of the location entry).
> >
> > [0] https://github.com/openstack/nova/blob/master/nova/image/download/file.py#L150
> >
> > zhiyan
> 
> Btw, for your question:
> 
> >>> >Is there somewhere that actually describes what is valid contents
> >>> >for this field ? Is it sufficient to assume the metadata will only
> >>> >ever be a dict of strings, or can the metadata be a complex type
> >>> >with arbitrarily nested data structures ?
> 
> for current nova in-tree image download plugin (above [0]), the schema
> of location metadata should be this:
> https://github.com/openstack/glance_store/blob/master/glance_store/_drivers/filesystem.py#L72
> 
> zhiyan

Thankyou, that is useful information.


Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|



More information about the OpenStack-dev mailing list