six version dependency in kolla_ansible appears to be incorrect.

Bug #1530962 reported by Andres Toomsalu
22
This bug affects 3 people
Affects Status Importance Assigned to Milestone
kolla
Liberty
Invalid
Critical
Steven Dake

Bug Description

Kolla images were built from: stable/liberty branch (Latest commit 19621ff on 2 Dec 2015)
tools/build.py --config-file /etc/kolla/kolla-build.conf --base centos --type binary --kolla-build-profile default

Build/deploy host is:
[root@kolla kolla]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)

[root@kolla kolla]# docker -v
Docker version 1.8.2-el7.centos, build a01dc02/1.8.2

[root@kolla kolla]# yum list installed | grep docker-py
python-docker-py.noarch 1.4.0-118.el7 @extras

Running "tools/kolla-ansible -i ansible/inventory/all-in-one -p ansible/site.yml deploy" fails with:
---
TASK: [mariadb | Creating haproxy mysql user] *********************************
failed: [localhost] => {"attempts": 10, "changed": false, "cmd": ["docker", "exec", "-t", "kolla_ansible", "/usr/bin/ansible", "localhost", "-m", "mysql_user", "-a", "login_host='10.211.55.103' login_port='3306' login_user='root' login_password='password' name='haproxy' password='' host='%'"], "delta": "0:00:00.536136", "end": "2015-12-07 16:54:49.173872", "failed": true, "rc": 1, "start": "2015-12-07 16:54:48.637736", "stdout_lines": ["Traceback (most recent call last):", " File \"/usr/bin/ansible\", line 40, in <module>", " from ansible.utils.display import Display", " File \"/usr/lib/python2.7/site-packages/ansible/utils/display.py\", line 35, in <module>", " from ansible import constants as C", " File \"/usr/lib/python2.7/site-packages/ansible/constants.py\", line 30, in <module>", " from ansible.parsing.splitter import unquote", " File \"/usr/lib/python2.7/site-packages/ansible/parsing/__init__.py\", line 32, in <module>", " from ansible.parsing.vault import VaultLib", " File \"/usr/lib/python2.7/site-packages/ansible/parsing/vault/__init__.py\", line 82, in <module>", " from cryptography.hazmat.primitives.hashes import SHA256 as c_SHA256", " File \"/usr/lib64/python2.7/site-packages/cryptography/hazmat/primitives/hashes.py\", line 15, in <module>", " from cryptography.hazmat.backends.interfaces import HashBackend", " File \"/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/__init__.py\", line 9, in <module>", " from cryptography.hazmat.backends.multibackend import MultiBackend", " File \"/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/multibackend.py\", line 9, in <module>", " from cryptography.hazmat.backends.interfaces import (", " File \"/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/interfaces.py\", line 12, in <module>", " @six.add_metaclass(abc.ABCMeta)", "AttributeError: 'module' object has no attribute 'add_metaclass'"], "warnings": []}
stdout: Traceback (most recent call last):
  File "/usr/bin/ansible", line 40, in <module>
    from ansible.utils.display import Display
  File "/usr/lib/python2.7/site-packages/ansible/utils/display.py", line 35, in <module>
    from ansible import constants as C
  File "/usr/lib/python2.7/site-packages/ansible/constants.py", line 30, in <module>
    from ansible.parsing.splitter import unquote
  File "/usr/lib/python2.7/site-packages/ansible/parsing/__init__.py", line 32, in <module>
    from ansible.parsing.vault import VaultLib
  File "/usr/lib/python2.7/site-packages/ansible/parsing/vault/__init__.py", line 82, in <module>
    from cryptography.hazmat.primitives.hashes import SHA256 as c_SHA256
  File "/usr/lib64/python2.7/site-packages/cryptography/hazmat/primitives/hashes.py", line 15, in <module>
    from cryptography.hazmat.backends.interfaces import HashBackend
  File "/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/__init__.py", line 9, in <module>
    from cryptography.hazmat.backends.multibackend import MultiBackend
  File "/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/multibackend.py", line 9, in <module>
    from cryptography.hazmat.backends.interfaces import (
  File "/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/interfaces.py", line 12, in <module>
    @six.add_metaclass(abc.ABCMeta)
AttributeError: 'module' object has no attribute 'add_metaclass'
msg: Task failed as maximum retries was encountered
---

Revision history for this message
Andres Toomsalu (andres-active) wrote :
Download full text (3.9 KiB)

Seems that v2.0.0-0.2.alpha2 ansible install in kolla_ansible image is just broken (with centos binary container image at least):

[root@kolla kolla]# docker exec -it kolla_ansible bash
[root@kolla /]# ansible --version
Traceback (most recent call last):
  File "/usr/bin/ansible", line 40, in <module>
    from ansible.utils.display import Display
  File "/usr/lib/python2.7/site-packages/ansible/utils/display.py", line 35, in <module>
    from ansible import constants as C
  File "/usr/lib/python2.7/site-packages/ansible/constants.py", line 30, in <module>
    from ansible.parsing.splitter import unquote
  File "/usr/lib/python2.7/site-packages/ansible/parsing/__init__.py", line 32, in <module>
    from ansible.parsing.vault import VaultLib
  File "/usr/lib/python2.7/site-packages/ansible/parsing/vault/__init__.py", line 82, in <module>
    from cryptography.hazmat.primitives.hashes import SHA256 as c_SHA256
  File "/usr/lib64/python2.7/site-packages/cryptography/hazmat/primitives/hashes.py", line 15, in <module>
    from cryptography.hazmat.backends.interfaces import HashBackend
  File "/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/__init__.py", line 9, in <module>
    from cryptography.hazmat.backends.multibackend import MultiBackend
  File "/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/multibackend.py", line 9, in <module>
    from cryptography.hazmat.backends.interfaces import (
  File "/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/interfaces.py", line 12, in <module>
    @six.add_metaclass(abc.ABCMeta)
AttributeError: 'module' object has no attribute 'add_metaclass'

Simple workaround which seems to fix the issue is:
[root@kolla /]# pip install --upgrade ansible
Requirement already up-to-date: ansible in /usr/lib/python2.7/site-packages
Requirement already up-to-date: paramiko in /usr/lib/python2.7/site-packages (from ansible)
Requirement already up-to-date: jinja2 in /usr/lib64/python2.7/site-packages (from ansible)
Collecting PyYAML (from ansible)
  Downloading PyYAML-3.11.tar.gz (248kB)
    100% |################################| 249kB 721kB/s
Collecting setuptools (from ansible)
  Downloading setuptools-19.2-py2.py3-none-any.whl (463kB)
    100% |################################| 466kB 427kB/s
Requirement already up-to-date: pycrypto>=2.6 in /usr/lib64/python2.7/site-packages (from ansible)
Collecting six (from ansible)
  Downloading six-1.10.0-py2.py3-none-any.whl
Requirement already up-to-date: ecdsa>=0.11 in /usr/lib/python2.7/site-packages (from paramiko->ansible)
Requirement already up-to-date: MarkupSafe in /usr/lib64/python2.7/site-packages (from jinja2->ansible)
Building wheels for collected packages: PyYAML
  Running setup.py bdist_wheel for PyYAML
  Stored in directory: /root/.cache/pip/wheels/fa/db/f6/dee55793d344f1706dc4a5a693298f0115241d1085cc212364
Successfully built PyYAML
Installing collected packages: PyYAML, setuptools, six
  Found existing installation: PyYAML 3.10
    DEPRECATION: Uninstalling a distutils installed project (PyYAML) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only...

Read more...

Revision history for this message
Andres Toomsalu (andres-active) wrote :

This patch works around the issue - but that is just a quick hack:

diff --git a/docker/kolla-ansible/Dockerfile.j2 b/docker/kolla-ansible/Dockerfile.j2
index fdfec7c..cb75a90 100644
--- a/docker/kolla-ansible/Dockerfile.j2
+++ b/docker/kolla-ansible/Dockerfile.j2
@@ -26,6 +26,8 @@ RUN git clone --depth 1 -b v2.0.0-0.2.alpha2 https://github.com/ansible/ansible.
     && git submodule update --init --recursive \
     && pip --no-cache-dir install .

+RUN pip install --upgrade ansible
+
 RUN mkdir -p /etc/ansible /usr/share/ansible \
     && echo 'localhost ansible_connection=local' > /etc/ansible/hosts

summary: - mariadb "Creating haproxy mysql user" task failing with "no no attribute
- 'add_metaclass'" error
+ mariadb "Creating haproxy mysql user" task failing in stable/liberty
Martin André (mandre)
no longer affects: kolla
Steven Dake (sdake)
summary: - mariadb "Creating haproxy mysql user" task failing in stable/liberty
+ six version dependency in kolla_ansible appears to be incorrect.
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.