[openstack-dev] [Nova][Glance] Xenplugin + Glance_v2 = Hate
Kevin L. Mitchell
kevin.mitchell at rackspace.com
Tue Dec 29 21:05:25 UTC 2015
On Thu, 2015-12-24 at 16:51 +0300, Mikhail Fedosin wrote:
> Hello! As you may know there is a big initiative to adopt glance v2
> api in Nova and the important part is making related changes in
> Unfortunately xenplugin doesn't use neither nova.image api nor
> glanceclient. Instead of this it has own http client implementation
> and bunch of hardcoded 'v1' urls (example,
> https://github.com/openstack/nova/blob/master/plugins/xenserver/xenapi/etc/xapi.d/plugins/glance#L130). It leads to the fact, that it will be really hard to switch it on v2 api right.
> Personally I see 2 solutions:
> 1. Make xenplugin to adopt nova.image api, which will make it
> version-agnostic. Here it's not easy to implement and we won't be able
> to keep backward compatibility with the existing lowlevel code.
> 2. Also hardcode v2 urls on par with v1 and do the same thing as in
> nova.image - to determine current glance api version before request
> and then use appropriate urls in methods.
> IMHO, the second solution is more preferable, because I understand how
> to do it and the v1/v2 compatibility will be 100%. It guarantees that
> we won't break any of existing deployments and it will allow to merge
> glance_v2 code in nova.image much quicker.
> All opinions and advice will be very helpful. Thanks in advance!
Unfortunately, the big problem is that, last I knew, Xenserver comes
with Python 2.4 installed. This forces all sorts of constraints on the
plugin code, including the inability to use interfaces like
glanceclient, due to the unsupported Python version; this is why the
plugin uses its own HTTP client implementation. If we're going to
update the plugins to use more recent versions of Python, we're going to
have to warn the operator community about the consequences well in
advance, so that all the issues can be worked out…
Kevin L. Mitchell <kevin.mitchell at rackspace.com>
More information about the OpenStack-dev