mirror of
https://github.com/ansible-collections/community.mysql.git
synced 2025-08-04 05:04:23 -07:00
Merge branch 'ansible-collections:main' into add_pam_service_option
This commit is contained in:
commit
2c431a2084
15 changed files with 135 additions and 119 deletions
166
.github/workflows/ansible-test-plugins.yml
vendored
166
.github/workflows/ansible-test-plugins.yml
vendored
|
@ -15,54 +15,31 @@ on:
|
|||
|
||||
|
||||
env:
|
||||
mysql_version_file: "./ansible_collections/community/mysql/tests/integration/targets/setup_mysql/defaults/main.yml"
|
||||
connector_version_file: "./ansible_collections/community/mysql/tests/integration/targets/setup_mysql/vars/main.yml"
|
||||
mysql_version_file: "tests/integration/targets/setup_mysql/defaults/main.yml"
|
||||
connector_version_file: "tests/integration/targets/setup_mysql/vars/main.yml"
|
||||
|
||||
jobs:
|
||||
sanity:
|
||||
name: "Sanity (Python: ${{ matrix.python }}, Ansible: ${{ matrix.ansible }})"
|
||||
runs-on: ubuntu-latest
|
||||
name: "Sanity (Ansible: ${{ matrix.ansible }})"
|
||||
runs-on: ubuntu-20.04
|
||||
strategy:
|
||||
matrix:
|
||||
ansible:
|
||||
- stable-2.11
|
||||
- stable-2.12
|
||||
- stable-2.13
|
||||
- stable-2.14
|
||||
- devel
|
||||
python:
|
||||
- 3.8
|
||||
- 3.9
|
||||
exclude:
|
||||
- python: 3.8
|
||||
ansible: stable-2.13
|
||||
- python: 3.8
|
||||
ansible: devel
|
||||
- python: 3.9
|
||||
ansible: stable-2.11
|
||||
- python: 3.9
|
||||
ansible: stable-2.12
|
||||
steps:
|
||||
|
||||
- name: Check out code
|
||||
uses: actions/checkout@v2
|
||||
- name: Perform sanity testing
|
||||
uses: ansible-community/ansible-test-gh-action@release/v1
|
||||
with:
|
||||
path: ansible_collections/community/mysql
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: ${{ matrix.python }}
|
||||
|
||||
- name: Install ansible-base (${{ matrix.ansible }})
|
||||
run: pip install https://github.com/ansible/ansible/archive/${{ matrix.ansible }}.tar.gz --disable-pip-version-check
|
||||
|
||||
- name: Run sanity tests
|
||||
run: ansible-test sanity --docker -v --color
|
||||
working-directory: ./ansible_collections/community/mysql
|
||||
ansible-core-version: ${{ matrix.ansible }}
|
||||
testing-type: sanity
|
||||
pull-request-change-detection: true
|
||||
|
||||
integration:
|
||||
name: "Integration (Python: ${{ matrix.python }}, Ansible: ${{ matrix.ansible }}, MySQL: ${{ matrix.db_engine_version }}, Connector: ${{ matrix.connector }})"
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-20.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
|
@ -74,9 +51,9 @@ jobs:
|
|||
# also change the "Set MariaDB URL sub dir" task
|
||||
- mariadb_10.8.3
|
||||
ansible:
|
||||
- stable-2.11
|
||||
- stable-2.12
|
||||
- stable-2.13
|
||||
- stable-2.14
|
||||
- devel
|
||||
python:
|
||||
- 3.6
|
||||
|
@ -95,68 +72,49 @@ jobs:
|
|||
ansible: stable-2.12
|
||||
- python: 3.6
|
||||
ansible: stable-2.13
|
||||
- python: 3.6
|
||||
ansible: stable-2.14
|
||||
- python: 3.6
|
||||
ansible: devel
|
||||
- python: 3.8
|
||||
ansible: stable-2.11
|
||||
- python: 3.8
|
||||
ansible: stable-2.13
|
||||
- python: 3.8
|
||||
ansible: stable-2.14
|
||||
- python: 3.8
|
||||
ansible: devel
|
||||
- python: 3.9
|
||||
ansible: stable-2.11
|
||||
- python: 3.9
|
||||
ansible: stable-2.12
|
||||
|
||||
steps:
|
||||
|
||||
- name: Check out code
|
||||
uses: actions/checkout@v2
|
||||
- name: >-
|
||||
Perform integration testing against
|
||||
Ansible version ${{ matrix.ansible }}
|
||||
under Python ${{ matrix.python }}
|
||||
uses: ansible-community/ansible-test-gh-action@release/v1
|
||||
with:
|
||||
path: ansible_collections/community/mysql
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: ${{ matrix.python }}
|
||||
|
||||
- name: Install ansible-base (${{ matrix.ansible }})
|
||||
run: pip install https://github.com/ansible/ansible/archive/${{ matrix.ansible }}.tar.gz --disable-pip-version-check
|
||||
|
||||
- name: Set MySQL version (${{ matrix.db_engine_version }})
|
||||
run: |
|
||||
export DB_VERSION=$(echo "${{ matrix.db_engine_version }}" | awk -F_ '{print $2}')
|
||||
sed -i "s/^mysql_version:.*/mysql_version: $DB_VERSION/g" ${{ env.mysql_version_file }}
|
||||
if: ${{ startsWith(matrix.db_engine_version, 'mysql') }}
|
||||
|
||||
- name: Set MariaDB version (${{ matrix.db_engine_version }})
|
||||
run: |
|
||||
export DB_VERSION=$(echo "${{ matrix.db_engine_version }}" | awk -F_ '{print $2}')
|
||||
sed -i -e "s/^mariadb_version:.*/mariadb_version: $DB_VERSION/g" -e 's/^mariadb_install: false/mariadb_install: true/g' ${{ env.mysql_version_file }}
|
||||
if: ${{ startsWith(matrix.db_engine_version, 'mariadb') }}
|
||||
|
||||
- name: Set MariaDB URL sub dir
|
||||
run: |
|
||||
sed -i -e "s/^mariadb_url_subdir:.*/mariadb_url_subdir: linux-systemd/g" ${{ env.connector_version_file }}
|
||||
if: matrix.db_engine_version == 'mariadb_10.8.3'
|
||||
|
||||
- name: Set Connector version (${{ matrix.connector }})
|
||||
run: "sed -i 's/^python_packages:.*/python_packages: [${{ matrix.connector }}]/' ${{ env.connector_version_file }}"
|
||||
|
||||
- name: Run integration tests
|
||||
run: ansible-test integration --docker -v --color --retry-on-error --continue-on-error --python ${{ matrix.python }} --diff --coverage
|
||||
working-directory: ./ansible_collections/community/mysql
|
||||
|
||||
- name: Generate coverage report.
|
||||
run: ansible-test coverage xml -v --requirements --group-by command --group-by version
|
||||
working-directory: ./ansible_collections/community/mysql
|
||||
|
||||
- uses: codecov/codecov-action@v1
|
||||
with:
|
||||
fail_ci_if_error: false
|
||||
ansible-core-version: ${{ matrix.ansible }}
|
||||
pre-test-cmd: >-
|
||||
DB_ENGINE=$(echo '${{ matrix.db_engine_version }}' | awk -F_ '{print $1}');
|
||||
DB_VERSION=$(echo '${{ matrix.db_engine_version }}' | awk -F_ '{print $2}');
|
||||
DB_ENGINE_PRETTY=$([[ "${DB_ENGINE}" == 'mysql' ]] && echo 'MySQL' || echo 'MariaDB');
|
||||
>&2 echo Matrix factor for the DB is ${{ matrix.db_engine_version }}...;
|
||||
>&2 echo Setting ${DB_ENGINE_PRETTY} version to ${DB_VERSION}...;
|
||||
sed -i -e "s/^${DB_ENGINE}_version:.*/${DB_ENGINE}_version: $DB_VERSION/g" -e 's/^mariadb_install: false/mariadb_install: true/g' '${{ env.mysql_version_file }}';
|
||||
${{
|
||||
matrix.db_engine_version == 'mariadb_10.8.3'
|
||||
&& format(
|
||||
'>&2 echo Set MariaDB v10.8.3 URL sub dir...; sed -i -e "s/^mariadb_url_subdir:.*/mariadb_url_subdir: linux-systemd/g" "{0}";', env.connector_version_file
|
||||
)
|
||||
|| ''
|
||||
}}
|
||||
>&2 echo Setting Connector version to ${{ matrix.connector }}...;
|
||||
sed -i 's/^python_packages:.*/python_packages: [${{ matrix.connector }}]/' ${{ env.connector_version_file }}
|
||||
target-python-version: ${{ matrix.python }}
|
||||
testing-type: integration
|
||||
pull-request-change-detection: true
|
||||
|
||||
units:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-20.04
|
||||
name: Units (Ⓐ${{ matrix.ansible }})
|
||||
strategy:
|
||||
# As soon as the first unit test fails,
|
||||
|
@ -164,9 +122,9 @@ jobs:
|
|||
fail-fast: true
|
||||
matrix:
|
||||
ansible:
|
||||
- stable-2.11
|
||||
- stable-2.12
|
||||
- stable-2.13
|
||||
- stable-2.14
|
||||
- devel
|
||||
python:
|
||||
- 3.8
|
||||
|
@ -174,38 +132,20 @@ jobs:
|
|||
exclude:
|
||||
- python: 3.8
|
||||
ansible: stable-2.13
|
||||
- python: 3.8
|
||||
ansible: stable-2.14
|
||||
- python: 3.8
|
||||
ansible: devel
|
||||
- python: 3.9
|
||||
ansible: stable-2.11
|
||||
- python: 3.9
|
||||
ansible: stable-2.12
|
||||
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@v2
|
||||
- name: >-
|
||||
Perform unit testing against
|
||||
Ansible version ${{ matrix.ansible }}
|
||||
uses: ansible-community/ansible-test-gh-action@release/v1
|
||||
with:
|
||||
path: ./ansible_collections/community/mysql
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: ${{ matrix.python }}
|
||||
|
||||
- name: Install ansible-base (${{matrix.ansible}})
|
||||
run: pip install https://github.com/ansible/ansible/archive/${{ matrix.ansible }}.tar.gz --disable-pip-version-check
|
||||
|
||||
# Run the unit tests
|
||||
- name: Run unit test
|
||||
run: ansible-test units -v --color --docker --coverage
|
||||
working-directory: ./ansible_collections/community/mysql
|
||||
|
||||
# ansible-test support producing code coverage date
|
||||
- name: Generate coverage report
|
||||
run: ansible-test coverage xml -v --requirements --group-by command --group-by version
|
||||
working-directory: ./ansible_collections/community/mysql
|
||||
|
||||
# See the reports at https://codecov.io/gh/GITHUBORG/REPONAME
|
||||
- uses: codecov/codecov-action@v1
|
||||
with:
|
||||
fail_ci_if_error: false
|
||||
ansible-core-version: ${{ matrix.ansible }}
|
||||
target-python-version: ${{ matrix.python }}
|
||||
testing-type: units
|
||||
pull-request-change-detection: true
|
||||
|
|
2
.github/workflows/ansible-test-roles.yml
vendored
2
.github/workflows/ansible-test-roles.yml
vendored
|
@ -14,7 +14,7 @@ on:
|
|||
jobs:
|
||||
molecule:
|
||||
name: "Molecule (Python: ${{ matrix.python }}, Ansible: ${{ matrix.ansible }}, MySQL: ${{ matrix.mysql }})"
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-20.04
|
||||
env:
|
||||
PY_COLORS: 1
|
||||
ANSIBLE_FORCE_COLOR: 1
|
||||
|
|
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -134,3 +134,6 @@ dmypy.json
|
|||
|
||||
# MacOS
|
||||
.DS_Store
|
||||
|
||||
# IntelliJ IDEA or PyCharm
|
||||
.idea/
|
||||
|
|
|
@ -33,6 +33,7 @@ baldpale
|
|||
banyek
|
||||
BarbzYHOOL
|
||||
Berbe
|
||||
bizmate
|
||||
bjne
|
||||
bmalynovytch
|
||||
bmildren
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# MySQL collection for Ansible
|
||||
[](https://github.com/ansible-collections/community.mysql/actions?query=workflow%3A"Plugins+CI") [](https://github.com/ansible-collections/community.mysql/actions?query=workflow%3A"Roles+CI") [](https://codecov.io/gh/ansible-collections/community.mysql)
|
||||
[](https://github.com/ansible-collections/community.mysql/actions?query=workflow%3A"Plugins+CI") [](https://github.com/ansible-collections/community.mysql/actions?query=workflow%3A"Roles+CI") [](https://codecov.io/gh/ansible-collections/community.mysql) []
|
||||
|
||||
This collection is a part of the Ansible package.
|
||||
|
||||
|
@ -36,7 +36,7 @@ They also should be subscribed to Ansible's [The Bullhorn newsletter](https://do
|
|||
|
||||
We announce releases and important changes through Ansible's [The Bullhorn newsletter](https://eepurl.com/gZmiEP). Be sure you are subscribed.
|
||||
|
||||
Join us in the `#ansible` (general use questions and support), `#ansible-community` (community and collection development questions), and other [IRC channels](https://docs.ansible.com/ansible/devel/community/communication.html#irc-channels) on [Libera.Chat](https://libera.chat).
|
||||
Join us on Matrix in the `#mysql:ansible.com` [room](https://matrix.to/#/#mysql:ansible.com), the `#users:ansible.com` [room](https://matrix.to/#/#users:ansible.com) (general use questions and support), `#ansible-community:ansible.com` [room](https://matrix.to/#/#community:ansible.com) (community and collection development questions), and other Matrix rooms or corresponding bridged Libera.Chat channels. See the [Ansible Communication Guide](https://docs.ansible.com/ansible/devel/community/communication.html) for details.
|
||||
|
||||
We take part in the global quarterly [Ansible Contributor Summit](https://github.com/ansible/community/wiki/Contributor-Summit) virtually or in-person. Track [The Bullhorn newsletter](https://eepurl.com/gZmiEP) and join us.
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
minor_changes:
|
||||
- mysql_user - display a more informative invalid privilege exception.
|
||||
Changes the exception handling of the granting permission logic to show the query executed , params
|
||||
and the exception message granting privileges fails` (https://github.com/ansible-collections/community.mysql/issues/465).
|
|
@ -79,8 +79,6 @@ requirements:
|
|||
- PyMySQL (Python 2.7 and Python 3.x) or
|
||||
- MySQLdb (Python 2.x)
|
||||
notes:
|
||||
- "To avoid the C(Please explicitly state intended protocol) error, use the I(login_unix_socket) argument,
|
||||
for example, C(login_unix_socket: /run/mysqld/mysqld.sock)."
|
||||
- Requires the PyMySQL (Python 2.7 and Python 3.X) or MySQL-python (Python 2.X) package installed on the remote host.
|
||||
The Python package may be installed with apt-get install python-pymysql (Ubuntu; see M(ansible.builtin.apt)) or
|
||||
yum install python2-PyMySQL (RHEL/CentOS/Fedora; see M(ansible.builtin.yum)). You can also use dnf install python2-PyMySQL
|
||||
|
@ -107,4 +105,9 @@ notes:
|
|||
- "If credentials from the config file (for example, C(/root/.my.cnf)) are not needed to connect to a database server, but
|
||||
the file exists and does not contain a C([client]) section, before any other valid directives, it will be read and this
|
||||
will cause the connection to fail, to prevent this set it to an empty string, (for example C(config_file: ''))."
|
||||
- "To avoid the C(Please explicitly state intended protocol) error, use the I(login_unix_socket) argument,
|
||||
for example, C(login_unix_socket: /run/mysqld/mysqld.sock)."
|
||||
- Alternatively, to avoid using I(login_unix_socket) argument on each invocation you can specify the socket path
|
||||
using the `socket` option in your MySQL config file (usually C(~/.my.cnf)) on the destination host, for
|
||||
example C(socket=/var/lib/mysql/mysql.sock).
|
||||
'''
|
||||
|
|
|
@ -733,7 +733,8 @@ def privileges_grant(cursor, user, host, db_table, priv, tls_requires, maria_rol
|
|||
try:
|
||||
cursor.execute(query, params)
|
||||
except (mysql_driver.ProgrammingError, mysql_driver.OperationalError, mysql_driver.InternalError) as e:
|
||||
raise InvalidPrivsError("Error granting privileges, invalid priv string: %s" % priv_string)
|
||||
raise InvalidPrivsError("Error granting privileges, invalid priv string: %s , params: %s, query: %s ,"
|
||||
" exception: %s." % (priv_string, str(params), query, str(e)))
|
||||
|
||||
|
||||
def convert_priv_dict_to_str(priv):
|
||||
|
|
|
@ -4,3 +4,5 @@
|
|||
src: installed_file.j2
|
||||
dest: "{{ dbdeployer_installed_file }}"
|
||||
listen: create zookeeper installed file
|
||||
tags:
|
||||
- setup_mysql
|
||||
|
|
|
@ -5,7 +5,17 @@
|
|||
####################################################################
|
||||
|
||||
- import_tasks: setvars.yml
|
||||
tags:
|
||||
- setup_mysql
|
||||
- import_tasks: dir.yml
|
||||
tags:
|
||||
- setup_mysql
|
||||
- import_tasks: install.yml
|
||||
tags:
|
||||
- setup_mysql
|
||||
- import_tasks: config.yml
|
||||
tags:
|
||||
- setup_mysql
|
||||
- import_tasks: verify.yml
|
||||
tags:
|
||||
- setup_mysql
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
- name: delete temporary directory
|
||||
include_tasks: default-cleanup.yml
|
||||
tags:
|
||||
- setup_remote_tmp_dir
|
||||
|
||||
- name: delete temporary directory (windows)
|
||||
include_tasks: windows-cleanup.yml
|
||||
tags:
|
||||
- setup_remote_tmp_dir
|
||||
|
|
|
@ -7,9 +7,13 @@
|
|||
setup:
|
||||
gather_subset: distribution
|
||||
when: ansible_facts == {}
|
||||
tags:
|
||||
- setup_remote_tmp_dir
|
||||
|
||||
- include_tasks: "{{ lookup('first_found', files)}}"
|
||||
vars:
|
||||
files:
|
||||
- "{{ ansible_os_family | lower }}.yml"
|
||||
- "default.yml"
|
||||
tags:
|
||||
- setup_remote_tmp_dir
|
||||
|
|
|
@ -281,6 +281,10 @@
|
|||
- include: test_priv_subtract.yml enable_check_mode=no
|
||||
- include: test_priv_subtract.yml enable_check_mode=yes
|
||||
|
||||
- import_tasks: test_privs_issue_465.yml
|
||||
tags:
|
||||
- issue_465
|
||||
|
||||
# Tests for the TLS requires dictionary
|
||||
- include: tls_requirements.yml
|
||||
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
---
|
||||
# test code for privileges for mysql_user module - issue 465
|
||||
|
||||
- vars:
|
||||
mysql_parameters: &mysql_params
|
||||
login_user: '{{ mysql_user }}'
|
||||
login_password: '{{ mysql_password }}'
|
||||
login_host: 127.0.0.1
|
||||
login_port: '{{ mysql_primary_port }}'
|
||||
|
||||
block:
|
||||
|
||||
# ============================================================
|
||||
- name: create a user with parameters that will always cause an exception
|
||||
mysql_user:
|
||||
<<: *mysql_params
|
||||
name: user_issue_465
|
||||
password: a_test_password_465
|
||||
priv: '*.{{ db_name }}:SELECT'
|
||||
state: present
|
||||
ignore_errors: true
|
||||
register: result
|
||||
|
||||
- name: assert output message for current privileges
|
||||
assert:
|
||||
that:
|
||||
- result is failed
|
||||
- result.msg is search('invalid priv string')
|
||||
- result.msg is search('params')
|
||||
- result.msg is search('query')
|
||||
- result.msg is search('exception')
|
8
tests/sanity/ignore-2.15.txt
Normal file
8
tests/sanity/ignore-2.15.txt
Normal file
|
@ -0,0 +1,8 @@
|
|||
plugins/modules/mysql_db.py validate-modules:doc-elements-mismatch
|
||||
plugins/modules/mysql_db.py validate-modules:parameter-list-no-elements
|
||||
plugins/modules/mysql_db.py validate-modules:use-run-command-not-popen
|
||||
plugins/modules/mysql_info.py validate-modules:doc-elements-mismatch
|
||||
plugins/modules/mysql_info.py validate-modules:parameter-list-no-elements
|
||||
plugins/modules/mysql_query.py validate-modules:parameter-list-no-elements
|
||||
plugins/modules/mysql_user.py validate-modules:undocumented-parameter
|
||||
plugins/modules/mysql_variables.py validate-modules:doc-required-mismatch
|
Loading…
Add table
Add a link
Reference in a new issue