Description of problem:
python-six is part of the Red Hat Enterprise Linux 7 Server repository, but it is a version much older (1.3.0-4.el7) than the OpenStack clients need. If this package is installed before the RDO repositories are enabled, then python-novaclient will install successfully but fail to run:
Package Arch Version Repository Size
python-novaclient noarch 1:2.17.0-2.el7 openstack-icehouse 275 k
Installing for dependencies:
python-babel noarch 0.9.6-8.el7 beaker-Server 1.4 M
python-iso8601 noarch 0.1.10-1.el7 epel 18 k
python-keyring noarch 3.8-1.el7 epel 115 k
python-prettytable noarch 0.7.2-1.el7 epel 37 k
python-simplejson x86_64 3.3.3-1.el7 epel 171 k
Install 1 Package (+5 Dependent packages)
Resulting in errors:
# nova flavor-list
Traceback (most recent call last):
File "/usr/bin/nova", line 6, in <module>
from novaclient.shell import main
File "/usr/lib/python2.7/site-packages/novaclient/shell.py", line 45, in <module>
from novaclient import client
File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 34, in <module>
from six.moves.urllib import parse
ImportError: No module named urllib
Performing a yum update resolves the problem as python-six is updated from the RDO repo:
# yum update
Loaded plugins: product-id, subscription-manager
python-six noarch 1.6.1-1.el7 openstack-icehouse 25 k
There needs to be a versioned dependency on python-six to ensure the version from the RDO repositories is installed.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. Install python-six from base RHEL
2. Enable RDO repositories
3. yum install python-novaclient
4. nova flavor-list
List of flavors from nova
Alan (or Jakub), would a diff this to python-novaclient (for EPEL-7) looks sensible to fix this bug? I used the SPEC from SRPM picked from here
$ diff -u python-novaclient.spec python-novaclient.spec.mod
--- python-novaclient.spec 2014-12-17 08:23:45.390561429 +0100
+++ python-novaclient.spec.mod 2014-12-17 08:41:56.277644322 +0100
@@ -1,7 +1,7 @@
Summary: Python API and CLI for OpenStack Nova
@@ -31,7 +31,7 @@
+Requires: python-six>= 1.6.1
@@ -107,6 +107,9 @@
+* Wed Dec 17 2014 Kashyap Chamarthy
+- Add a versioned dependency for python-six (rhbz#1123451)
* Tue May 27 2014 Jakub Ruzicka <firstname.lastname@example.org> 1:2.17.0-2
- Selective backports (server groups and more)
- Nova CLI for server groups (rhbz#1101014)
Alan, this seems like a reasonable request. I was going to just submit a change to delorean, but I realized I don't know if there's a workflow that would result in this eventually showing up in our icehouse packages. What's the correct way of doing this?
Correct way to update Icehouse would be to update f21 Fedora dist-git branch as seen in `rdopkg info`.
However, this is reproducible with any package that doesn't explicitly require minimal version of a requirement and you install older version of that requirement before installing RDO.
We've chosen to not Require specific versions unless neeeded as we control the distribution and this is one of the results.
I don't see fixing this for novaclient only as a real fix as we'd need to update all the packages requiring python-six to be consistent.
How do you suggest we solve this, Alan?
That's the current state of affairs in Fedora/EPEL, seems like this is already fixed and no further action is needed?
$ bodhi -L python-six
We had decision long ago to add versioned deps on case-by-case basis, it was needed mostly to support service-by-service upgrade scenarios but for stuff like
python-six where we override an obsolete version in base EL7, versioned dependency should be provided.
> a workflow that would result in this eventually showing up in our icehouse packages
It's up to package maintainers, it's not automatic but it does start with spec change in master packaging i.e. github/openstack-packages which is then cherry-picked to older release branches.
Just be careful: dep versions from master might not be applicable for older branches!
BTW Step1 in RDO Quickstart is yum update:
I think this can be closed now?