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 ================================================================================ Installing: 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 Transaction Summary ================================================================================ 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 Resolving Dependencies ... 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): python-novaclient-2.17.0-2.el7.noarch How reproducible: 100% Steps to Reproduce: 1. Install python-six from base RHEL 2. Enable RDO repositories 3. yum install python-novaclient 4. nova flavor-list Actual results: Python backtrace Expected results: List of flavors from nova Additional info:
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[1] ----------------------------------------------------------------------- $ 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 @@ Name: python-novaclient Epoch: 1 Version: 2.17.0 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Python API and CLI for OpenStack Nova Group: Development/Languages @@ -31,7 +31,7 @@ Requires: python-prettytable Requires: python-requests Requires: python-simplejson -Requires: python-six +Requires: python-six>= 1.6.1 Requires: python-babel Requires: python-keyring Requires: python-setuptools @@ -107,6 +107,9 @@ %doc html %changelog +* Wed Dec 17 2014 Kashyap Chamarthy +- Add a versioned dependency for python-six (rhbz#1123451) + * Tue May 27 2014 Jakub Ruzicka <jruzicka> 1:2.17.0-2 - Selective backports (server groups and more) - Nova CLI for server groups (rhbz#1101014) ----------------------------------------------------------------------- [1] https://repos.fedorapeople.org/repos/openstack/openstack-icehouse/epel-7/python-novaclient-2.17.0-1.el7.src.rpm
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 dist-5E-epel-testing-candidate python-six-1.7.3-3.el5 dist-5E-epel-testing python-six-1.7.3-3.el5 dist-5E-epel python-six-1.7.3-3.el5 dist-6E-epel-testing python-six-1.7.3-1.el6 dist-6E-epel-testing-candidate python-six-1.7.3-1.el6 dist-6E-epel python-six-1.7.3-1.el6 f20-updates-testing python-six-1.9.0-1.fc20 f20-updates-candidate python-six-1.9.0-1.fc20 f20-updates python-six-1.9.0-1.fc20 f21-updates-testing python-six-1.9.0-1.fc21 f21-updates python-six-1.9.0-1.fc21 f21-updates-candidate python-six-1.9.0-1.fc21 f22-updates-testing python-six-1.9.0-1.fc22 f22 python-six-1.9.0-1.fc22 f22-updates-candidate python-six-1.9.0-1.fc22
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: https://www.rdoproject.org/Quickstart#Step_1:_Software_repositories
I think this can be closed now?