Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 1598283

Summary: FFU: Controller upgrade fails with yum transaction check error when openstack-sahara* packages are updated during fast_forward_upgrade_tasks
Product: Red Hat OpenStack Reporter: Marius Cornea <mcornea>
Component: python-django-horizonAssignee: Radomir Dopieralski <rdopiera>
Status: CLOSED ERRATA QA Contact: Marius Cornea <mcornea>
Severity: high Docs Contact:
Priority: high    
Version: 13.0 (Queens)CC: aschultz, athomas, augol, beth.white, dbecker, joflynn, jpichon, jrist, ltoscano, mburns, morazi, mrunge, rdopiera, srevivo
Target Milestone: z2Keywords: Triaged, ZStream
Target Release: 13.0 (Queens)   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: python-django-horizon-13.0.1-0.20180411230906.el7ost Doc Type: No Doc Update
Doc Text:
undefined
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-08-29 16:21:23 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:
Attachments:
Description Flags
yum output none

Description Marius Cornea 2018-07-05 02:43:09 UTC
Created attachment 1456633 [details]
yum output

Description of problem:
FFU: Controller upgrade fails with yum transaction check error when openstack-sahara* packages are updated during fast_forward_upgrade_tasks:


Transaction check error:
  file /usr/lib/python2.7/site-packages/openstack_auth/__init__.py from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/__init__.pyc from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/plugin/__init__.pyc from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/__init__.pyo from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/plugin/__init__.pyo from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/plugin/base.py from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/plugin/base.pyc from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/plugin/base.pyo from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/utils.py from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/utils.pyc from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/utils.pyo from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/plugin/token.pyc from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/plugin/token.pyo from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/user.pyc from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/user.pyo from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/exceptions.pyc from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/exceptions.pyo from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/plugin/password.pyc from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/plugin/password.pyo from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/forms.py from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/forms.pyc from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/forms.pyo from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/models.pyc from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/models.pyo from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/urls.pyc from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/urls.pyo from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/views.py from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/views.pyc from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/views.pyo from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/backend.py from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/backend.pyc from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/backend.pyo from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/plugin/k2k.py from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/plugin/k2k.pyc from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/plugin/k2k.pyo from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/policy.py from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/policy.pyc from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch
  file /usr/lib/python2.7/site-packages/openstack_auth/policy.pyo from install of python-django-horizon-1:13.0.1-0.20180411230905.c51a46e.el7ost.noarch conflicts with file from package python-django-openstack-auth-3.6.0-1.el7ost.noarch

Error Summary
-------------



Version-Release number of selected component (if applicable):


How reproducible:
100%

Steps to Reproduce:
1. Deploy OSP10 overcloud
2. On overcloud controller run: rhos-release 11 -P
3. yum -y update openstack-sahara*
4. rhos-release -x; rhos-release 12 -P
5. yum -y update openstack-sahara*
6. rhos-release -x; rhos-release 13 -P
7. yum -y update

Actual results:
fails with transaction check error

Expected results:
yum update should complete cleanly

Additional info:

Comment 1 Marius Cornea 2018-07-05 02:48:17 UTC
Attached the complete output of the yum operations.

Comment 2 Luigi Toscano 2018-07-05 08:03:01 UTC
python-django-horizon-1:13.0.1-0.20180411230905.c51a46e is from 13, while and python-django-openstack-auth-3.6.0-1.el7ost is from 12.

There is no python-django-openstack-auth in 13 because it was merged in horizon for Queens:
https://review.openstack.org/#/c/523928/

That said, maybe the horizon package is missing the right replace/obsolete.

On the other side, maybe the process should not update that package anymore in 13, as sahara is containerized, but the steps described above are followed also by other services. But other services do not update their -ui package, while here openstack-sahara* also updates openstack-sahara-ui, aka the dashboard. So maybe that package should not be updated (it's in the container anyway) or there is a bigger logical flow when the updates are applied to the containerized versions too, instead of removing stuff.
From the tripleo-heat-templates sources for queens:

$ git grep -A4 -B1 'yum.*update' docker/services/
docker/services/aodh-api.yaml-        - name: Aodh package update
docker/services/aodh-api.yaml:          shell: yum -y update openstack-aodh*
docker/services/aodh-api.yaml-          when:
docker/services/aodh-api.yaml-            - step|int == 6
docker/services/aodh-api.yaml-            - is_bootstrap_node|bool
docker/services/aodh-api.yaml-            - aodh_httpd_enabled|bool
--
docker/services/cinder-api.yaml-        - name: Cinder package update
docker/services/cinder-api.yaml:          shell: yum -y update openstack-cinder*
docker/services/cinder-api.yaml-          when:
docker/services/cinder-api.yaml-            - step|int == 6
docker/services/cinder-api.yaml-            - is_bootstrap_node|bool
docker/services/cinder-api.yaml-        - name: Cinder db sync
--
docker/services/heat-api.yaml-        - name: FFU Heat package update
docker/services/heat-api.yaml:          shell: yum -y update openstack-heat*
docker/services/heat-api.yaml-          when:
docker/services/heat-api.yaml-            - step|int == 6
docker/services/heat-api.yaml-            - is_bootstrap_node|bool
docker/services/heat-api.yaml-        - name: FFU Heat db-sync
--
docker/services/keystone.yaml-        - name: Keystone package update
docker/services/keystone.yaml:          shell: yum -y update openstack-keystone*
docker/services/keystone.yaml-          when:
docker/services/keystone.yaml-            - step|int == 6
docker/services/keystone.yaml-            - is_bootstrap_node|bool
docker/services/keystone.yaml-        - name: keystone db sync
--
docker/services/neutron-api.yaml-        - name: Neutron package update
docker/services/neutron-api.yaml:          shell: yum -y update openstack-neutron*
docker/services/neutron-api.yaml-          when:
docker/services/neutron-api.yaml-            - step|int == 6
docker/services/neutron-api.yaml-            - is_bootstrap_node|bool
docker/services/neutron-api.yaml-        - name: Neutron package update workaround
--
docker/services/nova-api.yaml-        - name: Update nova packages
docker/services/nova-api.yaml:          command: yum update -y *nova*
docker/services/nova-api.yaml-          when:
docker/services/nova-api.yaml-            - step|int == 6
docker/services/nova-api.yaml-            - is_bootstrap_node|bool
docker/services/nova-api.yaml-        #FIXME(lyarwood): Use puppet to do this?

Comment 3 Marius Cornea 2018-07-05 13:21:51 UTC
Moving to DFG:UI since I believe this should be handled by the packaging of python-django-horizon

Comment 4 Luigi Toscano 2018-07-05 13:30:25 UTC
Actually python-django-horizon obsoletes  python-django-openstack-auth, but only up to 3.5.1:

$ rpm -qp --obsoletes python-django-horizon-13.0.1-0.20180411230905.c51a46e.el7ost.noarch.rpm                                                                                                   
warning: python-django-horizon-13.0.1-0.20180411230905.c51a46e.el7ost.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY                                                                             
python-django-openstack-auth < 3.5.1-1                                                                                                                                                                               
python2-django-openstack-auth < 3.5.1-1

Comment 6 Marius Cornea 2018-07-11 16:15:47 UTC
I don't think this issue can wait until OSP14 as it affects fast forward upgrade(10->13) so it needs to be addressed in 13.

Comment 7 Radomir Dopieralski 2018-07-12 08:52:52 UTC
I guess there is a mistake in the version number? The last django-openstack-auth is 3.6.1, so we should be obsoleting those...

Comment 8 Luigi Toscano 2018-07-12 09:02:00 UTC
(In reply to Radomir Dopieralski from comment #7)
> I guess there is a mistake in the version number? The last
> django-openstack-auth is 3.6.1, so we should be obsoleting those...

Please see my comment previous #c4 : yes, it should, but it does not.

"Actually python-django-horizon obsoletes  python-django-openstack-auth, but only up to 3.5.1"

Comment 19 Joanne O'Flynn 2018-08-13 13:38:13 UTC
This bug is marked for inclusion in the errata but does not currently contain draft documentation text. To ensure the timely release of this advisory please provide draft documentation text for this bug as soon as possible.

If you do not think this bug requires errata documentation, set the requires_doc_text flag to "-".


To add draft documentation text:

* Select the documentation type from the "Doc Type" drop down field.

* A template will be provided in the "Doc Text" field based on the "Doc Type" value selected. Enter draft text in the "Doc Text" field.

Comment 23 errata-xmlrpc 2018-08-29 16:21:23 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2018:2592