[openstack-dev] [Nova][Glance] Support of v1 and v2 glance APIs in Nova

John Garbutt john at johngarbutt.com
Tue Oct 29 12:19:22 UTC 2013


Going back to Joe's comment:
> Can both of these cases be covered by configuring the keystone catalog?
+1

If both v1 and v2 are present, pick v2, otherwise just pick what is in
the catalogue. That seems cool. Not quite sure how the multiple glance
endpoints works in the keystone catalog, but should work I assume.

We hard code nova right now, and so we probably want to keep that route too?

From: "Russell Bryant" <rbryant at redhat.com>
> On 10/17/2013 03:12 PM, Eddie Sheffield wrote:
>> Might I propose a compromise?
>>
>> 1) For the VERY short term, keep the config value and get the change otherwise reviewed and hopefully accepted.
>>
>> 2) Immediately file two blueprints:
>>    - python-glanceclient - expose a way to discover available versions
>>    - nova - depends on the glanceclient bp and allowing autodiscovery of glance version
>>             and making the config value optional (tho not deprecated / removed)
>
> Supporting both seems reasonable.  At least then *most* people don't
> need to worry about it and it "just works", but the override is there if
> necessary, since multiple people seem to be expressing a desire to have
> it available.

+1

> Can we just do this all at once?  Adding this to glanceclient doesn't
> seem like a huge task.

I worry about us never getting the full solution, but it seems to have
got complicated.

On 28 October 2013 15:13, Eddie Sheffield <eddie.sheffield at rackspace.com> wrote:
> So...I've been working on this some more and hit a bit of a snag. The Glanceclient change was easy, but I see now that doing this in nova will require a pretty huge change in the way things work. Currently, the API version is grabbed from the config value, the appropriate driver is instantiated, and calls go through that. The problem comes in that the actually glance server isn't communicated with until very late in the process. Nothing "sees" the servers at the level where the driver is determined. Also there isn't a single glance server but a list of them, and in the even of certain communication failures the list is cycled through until success or a number of retries has passed.
>
> So to change this to auto configuring will require turning this upside down, cycling through the servers at a higher level, choosing the appropriate driver for that server, and handling retries at that same level.
>
> Doable, but a much larger task than I first was thinking.
>
> Also, I don't really want the added overhead of getting the api versions before every call, so I'm thinking that going through the list of servers at startup and discovering the versions then and caching that somehow would be helpful as well.
>
> Thoughts?

I do worry about that overhead. But with Joe's comment, does it not
just boil down to caching the keystone catalog in the context?

I am not a fan of all the specific talk to glance code we have in
nova, moving more of that into glanceclient can only be a good thing.
For the XenServer itegration, for efficiency reasons, we need glance
to talk from dom0, so it has dom0 making the final HTTP call. So we
would need a way of extracting that info from the glance client. But
that seems better than having that code in nova.

John



More information about the OpenStack-dev mailing list