[openstack-dev] [nova] [glance] Getting the ball rolling on glance v2 in nova in newton cycle
mordred at inaugust.com
Fri Apr 1 14:08:05 UTC 2016
On 04/01/2016 08:45 AM, Sean Dague wrote:
> The glance v2 work is currently blocked as there is no active spec,
> would be great if someone from the glance team could get that rolling again.
> I started digging back through the patches in detail to figure out if
> there are some infrastructure bits we could get in early regardless.
> #1 - new methods for glance xenserver plugin
> Let's take a simplified approach on this patch -
> https://review.openstack.org/#/c/266933 and only change the
> xenapi/etc/xapi.d/plugins/ content in the following ways.
> - add upload/download_vhd_glance2 methods. Don't add an api parameter.
> Add these methods mostly via copy/paste as we're optimizing for deleting
> v1 not for fixing v1.
> That will put some infrastructure in place so we can just call the v2
> actions based on decision from higher up the stack.
> #2 - move discover major version back to glanceclient -
> I don't understand why this was ever in nova. This really should be
> glanceclient.discover... something. It uses internal methods from
> glanceclient and internal structures of the content returned.
FWIW, I use:
from glanceclient.common import utils as glance_utils
endpoint, detected_version = glance_utils.strip_version(endpoint)
To part of trying to figure this out as a consumer. Of course, that's
partially because like most of the openstack clients, there is no
exposed API for querying versions, since you have to tell the
constructor what major version you want to construct.
> Catching, if desired, should also be on the glanceclient side.
> glanceclient.reset_version() could exist to clear any caching.
> #3 - Ideally we'd also have a
> client = glanceclient.AutoClient(endpoint, ... ) which basically does
> glanceclient.discover and returns us the right client automatically.
> client.version provides access to the version information if you need to
> figure out what version of a client you have.
You should just do:
client = os_client_config.legacy_client('image') since all of that work
is pretty much already done.
If glanceclient grows the ability to be used without a priori knowledge
of the version, I'll certainly start to use it there.
> This starts to get to a point where the parts of versioning that
> glanceclient should know about are in glanceclient, and when nova still
> needs to know things it can as for client.version.
> For instance make _extract_query_params -
> become and instance method that can
> if self._client.version >= 2:
> This isn't the whole story to get us home, however chunking up some of
> these pieces I think makes getting the rest of the story in much
> simpler. In nearly every case (except for the alt link in the image
> view) we can easily have access to a real glance client. And the code
> will be a ton easier to understand with some of the glanceclient
> specific details behind the glanceclient interface.
More information about the OpenStack-dev