saltstack-formulas/mysql-formula

[BUG] Centos 8 - python client for mysql missing

campbellmc opened this issue · 5 comments

Centos 7 (Mysql-python) not available for Centos 8

Formula commit hash / release tag

mysql-formula commit sha: ba91d98

Versions reports (master & minion)

Salt Version:
           Salt: 3000.3

Dependency Versions:
           cffi: 1.11.5
       cherrypy: Not Installed
       dateutil: 2.6.1
      docker-py: Not Installed
          gitdb: Not Installed
      gitpython: Not Installed
         Jinja2: 2.11.2
        libgit2: Not Installed
       M2Crypto: 0.35.2
           Mako: Not Installed
   msgpack-pure: Not Installed
 msgpack-python: 0.6.2
   mysql-python: Not Installed
      pycparser: 2.14
       pycrypto: Not Installed
   pycryptodome: 3.9.7
         pygit2: Not Installed
         Python: 3.6.8 (default, Apr 16 2020, 01:36:27)
   python-gnupg: Not Installed
         PyYAML: 5.3.1
          PyZMQ: 19.0.0
          smmap: Not Installed
        timelib: Not Installed
        Tornado: 4.5.3
            ZMQ: 4.3.2

System Versions:
           dist: centos 8.1.1911 Core
         locale: UTF-8
        machine: x86_64
        release: 4.18.0-147.3.1.el8_1.x86_64
         system: Linux
        version: CentOS Linux 8.1.1911 Core

Pillar / config used

None

Bug details

Describe the bug

          ID: mysql_python
    Function: pkg.installed
        Name: MySQL-python
      Result: False
     Comment: Error occurred installing package(s). Additional info follows:

              errors:
                  - Running scope as unit: run-r0c9cfbc85e0f42b9ac871d461a69014a.scope
                    Last metadata expiration check: 0:00:02 ago on Mon Jun 22 03:07:26 2020.
                    No match for argument: MySQL-python
                    Error: Unable to find a match: MySQL-python
     Started: 03:06:57.804965
    Duration: 33111.198 ms
     Changes:

Steps to reproduce the bug

salt-call state.apply mysql

Holy Smokes! It's missing in the versions report and the python shell:

[root@3e477a6d4c63 /]# python3
Python 3.6.8 (default, Apr 16 2020, 01:36:27)
[GCC 8.3.1 20191121 (Red Hat 8.3.1-5)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'MySQLdb'
>>>

Attempts to fix the bug

Best. but really awkward, solution seems to be:

dnf install mysql-devel
pip3 install mysqlclient

This means that mysql-python shows up in salt -V:

# salt -V
Salt Version:
           Salt: 3000.3

Dependency Versions:
           cffi: 1.11.5
       cherrypy: Not Installed
       dateutil: 2.6.1
      docker-py: Not Installed
          gitdb: Not Installed
      gitpython: Not Installed
         Jinja2: 2.11.2
        libgit2: Not Installed
       M2Crypto: 0.35.2
           Mako: Not Installed
   msgpack-pure: Not Installed
 msgpack-python: 0.6.2
   mysql-python: 1.4.6
      pycparser: 2.14
       pycrypto: Not Installed
   pycryptodome: 3.9.7
         pygit2: Not Installed
         Python: 3.6.8 (default, Apr 16 2020, 01:36:27)
   python-gnupg: Not Installed
         PyYAML: 5.3.1
          PyZMQ: 19.0.0
          smmap: Not Installed
        timelib: Not Installed
        Tornado: 4.5.3
            ZMQ: 4.3.2

System Versions:
           dist: centos 8.1.1911 Core
         locale: UTF-8
        machine: x86_64
        release: 4.18.0-147.3.1.el8_1.x86_64
         system: Linux
        version: CentOS Linux 8.1.1911 Core

Now available in python shell:

# python3
Python 3.6.8 (default, Apr 16 2020, 01:36:27)
[GCC 8.3.1 20191121 (Red Hat 8.3.1-5)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
>>>

I'm happy to create a PR but not entirely sure what it should be right now.
Note that this also affects mysql usage by salt generally (such as returners etc)

myii commented

Thanks for the detailed report, @campbellmc. I can confirm this from Travis:

As you've mentioned, the fix may be a little convoluted and there's no set maintainer for this formula at the current time. What's the actual package replacement for MySQL-python on CentOS 8?

The pypi package mysqlclient was the only package I could find that worked to provide python bindings.
I didn't find a drop in replacement yum package that provides the MySQLdb python module.
The pypi module PyMySQL seems to have more activity as a module, however, it's not detected by salt.

@campbellmc did you end up reaching a solution for this? I am running in to the exact same issue.

@campbellmc did you end up reaching a solution for this? I am running in to the exact same issue.

Sadly, my solution involved not using salt for managing mysql.

Fixed in
#252 # centos8 py3
#262 # centos7 py3