Bug 1123451

Summary: Missing versioned dependency on python-six
Product: [Community] RDO Reporter: Robert Rati <rrati>
Component: python-novaclientAssignee: Jakub Ruzicka <jruzicka>
Status: CLOSED EOL QA Contact: Shai Revivo <srevivo>
Severity: medium Docs Contact:
Priority: unspecified    
Version: IcehouseCC: apevec, chris.brown, eglynn, jan.public, jruzicka, kchamart, lars, pasik, rbryant, srevivo
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-06-18 06:03:06 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Robert Rati 2014-07-25 17:14:41 UTC
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:

Comment 1 Kashyap Chamarthy 2014-12-17 07:50:33 UTC
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

Comment 2 Lars Kellogg-Stedman 2015-04-03 14:45:42 UTC
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?

Comment 3 Jakub Ruzicka 2015-04-03 17:21:21 UTC
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?

Comment 4 Kashyap Chamarthy 2015-05-15 16:43:12 UTC
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

Comment 5 Alan Pevec 2015-05-15 17:18:04 UTC
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!

Comment 6 Alan Pevec 2015-05-15 17:22:08 UTC
BTW Step1 in RDO Quickstart is yum update:
 https://www.rdoproject.org/Quickstart#Step_1:_Software_repositories

Comment 9 Christopher Brown 2017-06-17 19:41:35 UTC
I think this can be closed now?