because Ubuntu's libvirt 1.1.1 doesn't have that interface, and any time we trip over a cloud archive upgrade it doesn't work.
Our logic for detecting libvirt features is entirely based on version number, which is apparently insufficient. This particular nova bug has actually kept us off using the ubuntu cloud archive, which means we're not testing any other libvirt >= 1.x bits as well, which means there are a lot of other places we could be breaking that we don't know about yet.
I think that Kenichi's approach of actually checking for the attr is the right approach, and remove testing for this feature by version at all. Honestly moving to a model where we are not testing by version but instead by feature seems more sane.
Sahid's approach is incorrect.
The crux of the issue seems to be that
MIN_LIBVIRT_ CLOSE_CALLBACK_ VERSION = (1, 0, 1)
is *wrong*
because Ubuntu's libvirt 1.1.1 doesn't have that interface, and any time we trip over a cloud archive upgrade it doesn't work.
Our logic for detecting libvirt features is entirely based on version number, which is apparently insufficient. This particular nova bug has actually kept us off using the ubuntu cloud archive, which means we're not testing any other libvirt >= 1.x bits as well, which means there are a lot of other places we could be breaking that we don't know about yet.
I think that Kenichi's approach of actually checking for the attr is the right approach, and remove testing for this feature by version at all. Honestly moving to a model where we are not testing by version but instead by feature seems more sane.