From a81ab5fe4067ffc6c7827d65b148480ba2ec643d Mon Sep 17 00:00:00 2001 From: Andrew Klychkov Date: Thu, 27 Feb 2020 16:51:23 +0300 Subject: [PATCH] mysql_db: add possibility to make dump with --no-create-db option (#67767) * mysql_db: add possibility to make dump with --no-create-db option * add changelog fragment * fix --- .../67767-mysql_db_fix_bug_introduced_by_56721.yml | 2 ++ lib/ansible/modules/database/mysql/mysql_db.py | 6 +++++- .../targets/mysql_db/tasks/state_dump_import.yml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 changelogs/fragments/67767-mysql_db_fix_bug_introduced_by_56721.yml diff --git a/changelogs/fragments/67767-mysql_db_fix_bug_introduced_by_56721.yml b/changelogs/fragments/67767-mysql_db_fix_bug_introduced_by_56721.yml new file mode 100644 index 00000000000..e09a54c179e --- /dev/null +++ b/changelogs/fragments/67767-mysql_db_fix_bug_introduced_by_56721.yml @@ -0,0 +1,2 @@ +bugfixes: +- mysql_db - fix bug in the ``db_import`` function introduced by https://github.com/ansible/ansible/pull/56721 (https://github.com/ansible/ansible/issues/65351). diff --git a/lib/ansible/modules/database/mysql/mysql_db.py b/lib/ansible/modules/database/mysql/mysql_db.py index 19cc283b34f..58bcca78324 100644 --- a/lib/ansible/modules/database/mysql/mysql_db.py +++ b/lib/ansible/modules/database/mysql/mysql_db.py @@ -325,10 +325,14 @@ def db_dump(module, host, user, password, db_name, target, all_databases, port, cmd += " --socket=%s" % shlex_quote(socket) else: cmd += " --host=%s --port=%i" % (shlex_quote(host), port) + if all_databases: cmd += " --all-databases" - else: + elif len(db_name) > 1: cmd += " --databases {0}".format(' '.join(db_name)) + else: + cmd += " %s" % shlex_quote(' '.join(db_name)) + if skip_lock_tables: cmd += " --skip-lock-tables" if (encoding is not None) and (encoding != ""): diff --git a/test/integration/targets/mysql_db/tasks/state_dump_import.yml b/test/integration/targets/mysql_db/tasks/state_dump_import.yml index c1bb3674ce8..abd655727b3 100644 --- a/test/integration/targets/mysql_db/tasks/state_dump_import.yml +++ b/test/integration/targets/mysql_db/tasks/state_dump_import.yml @@ -74,7 +74,7 @@ assert: that: - result is changed - - result.executed_commands[0] is search("mysqldump --force --socket={{ mysql_socket }} --databases {{ db_name }} --skip-lock-tables --quick --ignore-table={{ db_name }}.department --master-data=1 --skip-triggers") + - result.executed_commands[0] is search("mysqldump --force --socket={{ mysql_socket }} {{ db_name }} --skip-lock-tables --quick --ignore-table={{ db_name }}.department --master-data=1 --skip-triggers") - name: state dump/import - file name should exist file: name={{ db_file_name }} state=file