From 7cb8594e974666e3bdc8e3ae2ab89c707ba1f7eb Mon Sep 17 00:00:00 2001 From: Andrew Klychkov Date: Sat, 15 Feb 2020 16:03:53 +0300 Subject: [PATCH] Bugfix of 67377: postgresql_set converts value to uppercase if "mb" or "gb" or "tb" is in the value string (#67418) * Bugfix of 67377: postgresql_set converts value to uppercase if "mb" or "gb" or "tb" is in the value string * fix CI * add changelog (cherry picked from commit 59bcc9f739d40c35ec1f471dbd7f30934bccfd94) --- ...gresql_set_converts_value_to_uppercase.yml | 2 ++ .../database/postgresql/postgresql_set.py | 2 +- .../postgresql/tasks/postgresql_set.yml | 23 ++++++++++++++++++- 3 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 changelogs/fragments/67418-postgresql_set_converts_value_to_uppercase.yml diff --git a/changelogs/fragments/67418-postgresql_set_converts_value_to_uppercase.yml b/changelogs/fragments/67418-postgresql_set_converts_value_to_uppercase.yml new file mode 100644 index 00000000000..b3cd21f8589 --- /dev/null +++ b/changelogs/fragments/67418-postgresql_set_converts_value_to_uppercase.yml @@ -0,0 +1,2 @@ +bugfixes: +- postgresql_set - fix converting value to uppercase (https://github.com/ansible/ansible/issues/67377). diff --git a/lib/ansible/modules/database/postgresql/postgresql_set.py b/lib/ansible/modules/database/postgresql/postgresql_set.py index 49319585bfd..7772fdbb3db 100644 --- a/lib/ansible/modules/database/postgresql/postgresql_set.py +++ b/lib/ansible/modules/database/postgresql/postgresql_set.py @@ -300,7 +300,7 @@ def main(): # Allow to pass values like 1mb instead of 1MB, etc: if value: for unit in POSSIBLE_SIZE_UNITS: - if unit in value: + if value[:-2].isdigit() and unit in value[-2:]: value = value.upper() if value and reset: diff --git a/test/integration/targets/postgresql/tasks/postgresql_set.yml b/test/integration/targets/postgresql/tasks/postgresql_set.yml index 04d043bc3f4..01e6de1d750 100644 --- a/test/integration/targets/postgresql/tasks/postgresql_set.yml +++ b/test/integration/targets/postgresql/tasks/postgresql_set.yml @@ -69,7 +69,7 @@ postgresql_set: <<: *pg_parameters name: work_mem - value: 12MB + value: 12mb register: set_wm - assert: @@ -281,3 +281,24 @@ - set_aut.changed == false - set_aut.restart_required == false - set_aut.value.value == 'off' + + ################# + # Bugfix of 67377 + - name: archive command with mb + <<: *task_parameters + postgresql_set: + <<: *pg_parameters + name: archive_command + value: 'test ! -f /mnt/postgres/mb/%f && cp %p /mnt/postgres/mb/%f' + + # Check: + - name: check value + <<: *task_parameters + postgresql_query: + <<: *pg_parameters + query: select reset_val from pg_settings where name = 'archive_command' + register: result + + - assert: + that: + - result.query_result.0.reset_val == "test ! -f /mnt/postgres/mb/%f && cp %p /mnt/postgres/mb/%f"