Posted on Wed 25 June 2014

OpenStack Icehouse and Ubuntu Package Dependencies

I recently had to upgrade an OpenStack installation running on Ubuntu 12.04 (Precise Pangolin) from Havana to Icehouse in a test environment. After upgrading all OpenStack packages, I encountered a series of problems where services weren't starting anymore. Those problems were mostly related to wrong dependencies in the Ubuntu packages.

It happens that dependency versions defined in debian/control do not match the ones declared in requirements.txt and test-requirements.txt. In fact, lower bound dependency versions are too permissive, resulting in dependencies not being upgraded properly when upgrading OpenStack packages. And some dependencies are simply missing from debian/control.

This blog post by Blaise Thirard explains how to upgrade from OpenStack Havana to Icehouse on Ubuntu 12.04. He mentions problematic dependencies you should manually upgrade and also includes a troubleshooting section explaining the effect of not upgrading them could have on your services. The dependencies most likely to cause you problems are babel, iso8601, python-keystoneclient, six and stevedore. Make sure you update those too.

James Page, one of the Ubuntu packages for OpenStack maintainer, explains on the #openstack-packaging IRC channel why such dependency issues might exist:

[...] we ship each cloud archive as a 'release' - if you choose to only pick bits, you are not running what we test either for release or as part of the upgrade testing we do for the cloud-archive. [...] its an upgrade policy that is untested and hence unsupported from my perspective.

The upgrade process tested by Ubuntu only covers a full "dist-upgrade", not cherry-picked package upgrades like some OpenStack operators might do. Furthermore, there is no test explicitly comparing dependency versions between debian/control and requirements.txt.

From personal experience, performing an apt-get dist-upgrade on a compute node could be very dangerous. For example, if the open-iscsi package is upgraded, your active iSCSI sessions could be terminated: good luck restoring them.

He still agrees to raise the situation at the Ubuntu Online Summit and try to make it better in the future:

I'll raise this at the openstack session this week at the Ubuntu Online Summit. I think we can make it better for you :-)

Meanwhile, here is a list of wrong or missing dependencies found in Ubuntu packages for OpenStack. For the sake of clarity, I will spare you the wrong build dependencies, ones with lower bound versions greater than needed or unneeded ones.

DISCLAIMER: This list was built against the 2014.1 version of the packages and I could have missed some.

Ceilometer

Package requirements.txt Ubuntu (Depends)
WSME >=0.6 >=0.5b6
happybase >=0.5,!=0.7 >=0.4
iso8601 >=0.1.9 >=0.1.8
netaddr >=0.7.6 >=0
pecan >=0.4.5 >=0.2.0
pysnmp >=4.2.1,<5.0.0 >=0
python-keystoneclient >=0.7.0 >=1:0.4.1
python-novaclient >=2.17.0 >=1:2.15.0
python-swiftclient >=1.6 >=1.5
six >=1.5.2 >=1.4.1
sqlalchemy-migrate >=0.8.2,!=0.8.4 >=0
stevedore >=0.14 >=0.12

python-ceilometerclient

Package requirements.txt Ubuntu (Depends)
iso8601 >=0.1.8 >=0
pbr >=0.5.21,<1.0 (missing)
python-keystoneclient >=0.4.1 >=0.3.2
six >=1.4.1 (missing)

Cinder

Package requirements.txt Ubuntu (Depends)
babel >=1.3 >=0
iso8601 >=0.1.9 >=0
netaddr >=0.7.6 >=0
oslo.config >=1.2.0 >=1:1.1.0
oslo.messaging >=1.3.0a9 >=0
oslo.rootwrap >=0 (missing)
paramiko >=1.9.0 >=1.8
pastedeploy >=1.5.0 >=0
pbr >=0.6,<1.0 (missing)
python-keystoneclient >=0.7.0 >=1:0.3.0
python-novaclient >=2.17.0 >=1:2.12.0
python-swiftclient >=1.6 >=1:1.5
requests >=1.1 (missing)
routes >=1.12.3 >=0
six >=1.5.2 >=1.4.1
sqlalchemy-migrate >=0.8.2,!=0.8.4 >=0
stevedore >=0.14 >=0.10
suds >=0.4 >=0
taskflow >=0.1.3,<0.2 >=0

python-cinderclient

Package requirements.txt Ubuntu (Depends)
babel >=1.3 >=0
pbr >=0.5.21,<1.0 (missing)
prettytable >=0.7,<0.8 >=0.6
six >=1.4.1 >=0

Glance

Package requirements.txt Ubuntu (Depends)
boto >=2.12.0,!=2.13.0 >=2.4.0
httplib2 >=0.7.5 >=0
iso8601 >=0.1.9 >=0
jsonschema >=2.0.0,<3.0.0 >=1.3.0
oslo.config >=1.2.0 >=1:1.2.0a3
oslo.messaging >=1.3.0a9 (missing)
pastedeploy >=1.5.0 >=0
pbr >=0.6,<1.0 >=0
pyopenssl >=0.11 >=0
python-cinderclient >=1.0.6 >=1:1.0.4
python-keystoneclient >=0.7.0 >=1:0.3.0
python-swiftclient >=1.6 >=1:1.2
routes >=1.12.3 >=0
six >=1.5.2 >=0
sqlalchemy-migrate >=0.8.2,!=0.8.4 >=0
stevedore >=0.14 (missing)

python-glanceclient

Package requirements.txt Ubuntu (Depends)
pbr >=0.5.21,<1.0 (missing)
python-keystoneclient >=0.3.0 >=0
warlock >=1.0.1,<2 >=

Heat

Package requirements.txt Ubuntu (Depends)
babel >=1.3 (missing)
eventlet >=0.13.0 >=0.12.0
httplib2 >=0.7.5 >=0
iso8601 >=0.1.9 >=0
kombu >=2.4.8 >=0
netaddr >=0.7.6 (missing)
oslo.config >=1.2.0 >=0
paramiko >=1.9.0 (missing)
pastedeploy >=1.5.0 >=0
pbr >=0.6,<1.0 (missing)
pycrypto >=2.6 >=0
python-ceilometerclient >=1.0.6 (missing)
python-cinderclient >=1.0.6 >=0
python-glanceclient (missing) >=0
python-heatclient >=0.2.3 (missing)
python-keystoneclient >=0.7.0 >=1:0.2.3
python-neutronclient >=2.3.4,<3 >=1:2.2.0
python-novaclient >=2.17.0 >=0
python-swiftclient >=1.6 >=0
python-troveclient >=1.0.3 (missing)
pyyaml >=3.1.0 >=0
requests >=1.1 (missing)
routes >=1.12.3 >=0
six >=1.5.2 >=0
sqlalchemy-migrate >=0.8.2,!=0.8.4 >=0

python-heatclient

Package requirements.txt Ubuntu (Depends)
iso8601 >=0.1.8 >=0
pbr >=0.6,<1.0 (missing)
prettytable >=0.7,<0.8 >=0.5
python-keystoneclient >=0.6.0 >=1:0.2
pyyaml >=3.1.0 (missing)
requests >=1.1 (missing)
six >=1.4.1 (missing)

Horizon

Package requirements.txt Ubuntu (Depends)
django-compressor >=1.3 (missing)
django-openstack-auth >=1.1.4 (missing)
iso8601 >=0.1.9 (missing)
lockfile >=0.8 >=0
netaddr >=0.7.6 >=0
pbr >=0.6,<1.0 (missing)
python-ceilometerclient >=1.0.6 >=0
python-cinderclient >=1.0.6 >=0
python-glanceclient >=0.9.0 >=0
python-heatclient >=0.2.3 >=0
python-keystoneclient >=0.7.0 >=0
python-neutronclient >=2.3.4,<3 >=0
python-novaclient >=2.17.0 >=0
python-swiftclient >=1.6 >=0
python-troveclient >=1.0.3 >=0
pytz >=2010h >=0
six >=1.5.2 (missing)

Neutron

Package requirements.txt Ubuntu (Depends)
babel >=1.3 >=0
greenlet >=0.3.2 >=0.3.12
httplib2 >=0.7.5 >=0
iso8601 >=0.1.9 >=0
netaddr >=0.7.6 >=0
oslo.config >=1.2.0 >=1:1.2.0a3
oslo.rootwrap >=0 (missing)
pastedeploy >=1.5.0 >=0
pbr >=0.6,<1.0 (missing)
python-keystoneclient >=0.7.0 >=1:0.3.0
python-neutronclient >=2.3.4,<3 >=1:2.2.3
python-novaclient >=2.17.0 (missing)
routes >=1.12.3 >=0
six >=1.5.2 >=0
stevedore >=0.14 >=0.10
webob >=1.2.3 >=0

python-neutronclient

Package requirements.txt Ubuntu (Depends)
babel >=1.3 (missing)
cliff >=1.4.3 >=1.3.2
httplib2 >=0.7.5 >=0
iso8601 >=0.1.4 (missing)
pbr >=0.5.21,<1.0 (missing)
simplejson >=2.0.9 >=0
six >=1.4.1 (missing)

Nova

Package requirements.txt Ubuntu (Depends)
babel >=1.3 >=0
boto >=2.12.0,!=2.13.0 >=2.4.0
iso8601 >=0.1.9 >=0
jsonschema >=2.0.0,<3.0.0 >=1.3.0
oslo.messaging >=1.3.0a9 (missing)
oslo.rootwrap >=0 (missing)
paramiko >=1.9.0 >=1.8.0
pbr >=0.6,<1.0 (missing)
pycadf >=0.4.1 >=0.1.9
python-cinderclient >=1.0.6 >=1:1.0.5
python-glanceclient >=0.9.0 >=0
python-keystoneclient >=0.7.0 >=1:0.3.2
python-neutronclient >=2.3.4,<3 >=1:2.3.0
routes >=1.12.3 >=0
six >=1.5.2 >=0
sqlalchemy-migrate >=0.8.2,!=0.8.4 >=0
stevedore >=0.14 >=0.12
suds >=0.4 >=0
websockify >=0.5.1,<0.6 >=0

python-novaclient

Package requirements.txt Ubuntu (Depends)
babel >=1.3 >=0.9.6
iso8601 >=0.1.8 >=0
pbr >=0.6,<1.0 (missing)
prettytable >=0.7,<0.8 >=0.6
six >=1.5.2 >=0

Swift

Package requirements.txt Ubuntu (Depends)
eventlet >=0.9.15 >=0.9.8
netifaces >=0.5 >=0
pastedeploy >=1.3.3 >=0
simplejson >=2.0.9 >=0
xattr >=0.4 >=0

python-swiftclient

Package requirements.txt Ubuntu (Depends)
requests >=1.1 (missing)
simplejson >=2.0.9 (missing)

© Mathieu Gagné. Built using Pelican. Theme by Giulio Fidente on github.