Re: [openstack-dev] [Nova] Hypervisor Version Support

2013-08-07 Thread Russell Bryant
On 08/06/2013 10:08 PM, Kaushik Chandrashekar wrote:
 Hi All,
 
 We are working on adding hypervisors version support for xen,
 https://blueprints.launchpad.net/nova/+spec/xen-support-for-hypervisor-versions
 
 The initial design is,
 
  1. The image would have a property with hypervisor version
 requirements, in this format '=6.0,6.2'
  2. The host state manager would have the hypervisor version loaded in
 (6,0,1) format.
  3. If the hypervisor versions are present in both of these, the
 image_props_filter would filter hypervisors based on them.
 
 https://review.openstack.org/#/c/36073/15/nova/scheduler/filters/image_props_filter.py
 
 We want to generalise this versioning for all hypervisors. So we are
 thinking of having a.b.c.d or (a, b, c ,d) as the version type where
 a, b, c, d are numbers. Do you see any hypervisors that have a different
 versioning format?

That seems sane to me.  If anything uses a version that isn't already
numeric, surely it could be mapped into a numeric scheme.  If it can't,
then their versioning scheme is bonkers, IMO.  :-)

-- 
Russell Bryant

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Nova] Hypervisor Version Support

2013-08-07 Thread Andrew Laski

On 08/07/13 at 07:38am, Kaushik Chandrashekar wrote:

Hi All,

We are working on adding hypervisors version support for xen,
https://blueprints.launchpad.net/nova/+spec/xen-support-for-hypervisor-versions

The initial design is,

  1. The image would have a property with hypervisor version requirements,
  in this format '=6.0,6.2'
  2. The host state manager would have the hypervisor version loaded in
  (6,0,1) format.
  3. If the hypervisor versions are present in both of these, the
  image_props_filter would filter hypervisors based on them.
  
https://review.openstack.org/#/c/36073/15/nova/scheduler/filters/image_props_filter.py

We want to generalise this versioning for all hypervisors. So we are
thinking of having a.b.c.d or (a, b, c ,d) as the version type where a,
b, c, d are numbers. Do you see any hypervisors that have a different
versioning format?


Why do you want to generalize the versioning for all hypervisors?  I'm 
not sure I see the benefit versus using the version as reported by the 
hypervisor.  Especially since you're looking to compare against non 
generalized versions based on your examples.




--
Thanks,
Kaushik



___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Nova] Hypervisor Version Support

2013-08-07 Thread Russell Bryant
On 08/07/2013 10:14 AM, Andrew Laski wrote:
 On 08/07/13 at 07:38am, Kaushik Chandrashekar wrote:
 Hi All,

 We are working on adding hypervisors version support for xen,
 https://blueprints.launchpad.net/nova/+spec/xen-support-for-hypervisor-versions


 The initial design is,

   1. The image would have a property with hypervisor version
 requirements,
   in this format '=6.0,6.2'
   2. The host state manager would have the hypervisor version loaded in
   (6,0,1) format.
   3. If the hypervisor versions are present in both of these, the
   image_props_filter would filter hypervisors based on them.
  
 https://review.openstack.org/#/c/36073/15/nova/scheduler/filters/image_props_filter.py


 We want to generalise this versioning for all hypervisors. So we are
 thinking of having a.b.c.d or (a, b, c ,d) as the version type where a,
 b, c, d are numbers. Do you see any hypervisors that have a different
 versioning format?
 
 Why do you want to generalize the versioning for all hypervisors?  I'm
 not sure I see the benefit versus using the version as reported by the
 hypervisor.  Especially since you're looking to compare against non
 generalized versions based on your examples.

I guess to ensure you can do comparison operations (, , etc)?

-- 
Russell Bryant

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Nova] Hypervisor Version Support

2013-08-07 Thread John Garbutt
I guess this is the same issue we faced with the capabilities filters
and things, when drivers don't report stats in a consistent format.

If we dictate the driver reports things in a standard format, it will
make our lives much easier, I think.

Currently, some report their own format, and a few (not just libvirt)
use the libvirt format. It would seem better to report something more
standard like a.b.c.d. But to be honest, I think consistency is the
key here.

John

On 7 August 2013 15:36, Russell Bryant rbry...@redhat.com wrote:
 On 08/07/2013 10:14 AM, Andrew Laski wrote:
 On 08/07/13 at 07:38am, Kaushik Chandrashekar wrote:
 Hi All,

 We are working on adding hypervisors version support for xen,
 https://blueprints.launchpad.net/nova/+spec/xen-support-for-hypervisor-versions


 The initial design is,

   1. The image would have a property with hypervisor version
 requirements,
   in this format '=6.0,6.2'
   2. The host state manager would have the hypervisor version loaded in
   (6,0,1) format.
   3. If the hypervisor versions are present in both of these, the
   image_props_filter would filter hypervisors based on them.

 https://review.openstack.org/#/c/36073/15/nova/scheduler/filters/image_props_filter.py


 We want to generalise this versioning for all hypervisors. So we are
 thinking of having a.b.c.d or (a, b, c ,d) as the version type where a,
 b, c, d are numbers. Do you see any hypervisors that have a different
 versioning format?

 Why do you want to generalize the versioning for all hypervisors?  I'm
 not sure I see the benefit versus using the version as reported by the
 hypervisor.  Especially since you're looking to compare against non
 generalized versions based on your examples.

 I guess to ensure you can do comparison operations (, , etc)?

 --
 Russell Bryant

 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Nova] Hypervisor Version Support

2013-08-07 Thread Andrew Laski

On 08/07/13 at 08:17am, Shawn Hartsock wrote:


- Original Message -

From: Russell Bryant rbry...@redhat.com
To: openstack-dev@lists.openstack.org
Sent: Wednesday, August 7, 2013 10:36:04 AM
Subject: Re: [openstack-dev] [Nova] Hypervisor Version Support

On 08/07/2013 10:14 AM, Andrew Laski wrote:
 On 08/07/13 at 07:38am, Kaushik Chandrashekar wrote:
 Hi All,

 We are working on adding hypervisors version support for xen,
 
https://blueprints.launchpad.net/nova/+spec/xen-support-for-hypervisor-versions


 The initial design is,

   1. The image would have a property with hypervisor version
 requirements,
   in this format '=6.0,6.2'
   2. The host state manager would have the hypervisor version loaded in
   (6,0,1) format.
   3. If the hypervisor versions are present in both of these, the
   image_props_filter would filter hypervisors based on them.

 
https://review.openstack.org/#/c/36073/15/nova/scheduler/filters/image_props_filter.py


 We want to generalise this versioning for all hypervisors. So we are
 thinking of having a.b.c.d or (a, b, c ,d) as the version type where a,
 b, c, d are numbers. Do you see any hypervisors that have a different
 versioning format?

 Why do you want to generalize the versioning for all hypervisors?  I'm
 not sure I see the benefit versus using the version as reported by the
 hypervisor.  Especially since you're looking to compare against non
 generalized versions based on your examples.

I guess to ensure you can do comparison operations (, , etc)?



I've opened a bug that I think might be tangentially related, it has to do with 
version number storage:
https://bugs.launchpad.net/nova/+bug/1207058

In summary, the column hypervisor_version (on the compute_nodes table) is currently an 
int(11) and that means version numbers like 5.10.1 have to map to a single 
integer. It's a mapping that is bound to be wonky.

But, mapping it to a vector like (5, 10, 1) is easy, so in general I like the idea. Since version numbers 
could be 5.10.1u7 or something crazy ... like froyo ... I was asking for the hypervisor_version 
(or any version entity really) to be stored as a string. If you have some screwy versioning scheme where 
you use nicknames for Jazz musicians then that's up to your hypervisor's drivers/filters to figure out how to map that 
into an algorithm for figuring out ordinality. The problem is that it isn't always engineers that get to decide version 
numbers at companies, sometimes marketing teams set them and set them in ways not conducive to numerical analysis by 
machines.

For all the cases I know of today, splitting into a vector of integers based on 
when a non-integer was encountered is the right thing to do... but you never 
know... some vendor might decide to start naming their versions based on 
desserts or jazz musicians... and that's fine as long as the maintainers can 
figure out some algorithm for dealing with it. IMHO.


This makes sense to me.  If Nova virt drivers only expose ascending 
numerical versions then we can do easy version comparisons in places 
like scheduler filters.  But when the internal version isn't numerical I 
still don't think we've fully solved the issue.


What's still bugging me a bit is how we handle the comparisons to user 
input outside of the virt driver, like in the scheduler.  Does the 
scheduler need to pass versions to a compute node in order to have the 
virt driver map it properly, or do we require that versions matching the 
host_state hypervisor_version are used by users?  Or maybe we just 
accept that this case doesn't work.





# Shawn Hartsock

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev