mirror of https://github.com/ansible/ansible.git
postgresql_lang: add owner parameter (#62999)
* postgresql_lang: add owner parameter * postgresql_lang: add owner parameter, add changelog fragmentpull/63088/head
parent
ea86b2c2f7
commit
ad5200a7c0
@ -0,0 +1,2 @@
|
|||||||
|
minor_changes:
|
||||||
|
- postgresql_lang - add ``owner`` parameter (https://github.com/ansible/ansible/pull/62999).
|
||||||
@ -1,3 +1,7 @@
|
|||||||
# Initial CI tests of postgresql_lang module
|
# Initial CI tests of postgresql_lang module
|
||||||
- import_tasks: postgresql_lang_initial.yml
|
- import_tasks: postgresql_lang_initial.yml
|
||||||
when: ansible_distribution == 'CentOS'
|
when: ansible_distribution == 'CentOS'
|
||||||
|
|
||||||
|
# CI tests of owner param
|
||||||
|
- import_tasks: postgresql_lang_add_owner_param.yml
|
||||||
|
when: ansible_distribution == 'CentOS'
|
||||||
|
|||||||
@ -0,0 +1,196 @@
|
|||||||
|
# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
|
||||||
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||||
|
|
||||||
|
- vars:
|
||||||
|
test_user1: alice
|
||||||
|
test_user2: bob
|
||||||
|
test_lang: plperl
|
||||||
|
non_existent_role: fake_role
|
||||||
|
task_parameters: &task_parameters
|
||||||
|
become_user: '{{ pg_user }}'
|
||||||
|
become: yes
|
||||||
|
register: result
|
||||||
|
pg_parameters: &pg_parameters
|
||||||
|
login_user: '{{ pg_user }}'
|
||||||
|
login_db: postgres
|
||||||
|
|
||||||
|
block:
|
||||||
|
- name: Create roles for tests
|
||||||
|
<<: *task_parameters
|
||||||
|
postgresql_user:
|
||||||
|
<<: *pg_parameters
|
||||||
|
name: '{{ item }}'
|
||||||
|
loop:
|
||||||
|
- '{{ test_user1 }}'
|
||||||
|
- '{{ test_user2 }}'
|
||||||
|
|
||||||
|
- name: Create lang with owner in check_mode
|
||||||
|
<<: *task_parameters
|
||||||
|
postgresql_lang:
|
||||||
|
<<: *pg_parameters
|
||||||
|
name: '{{ test_lang }}'
|
||||||
|
owner: '{{ test_user1 }}'
|
||||||
|
check_mode: yes
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- result is changed
|
||||||
|
- result.queries == []
|
||||||
|
|
||||||
|
- name: Check that nothing was actually changed
|
||||||
|
<<: *task_parameters
|
||||||
|
postgresql_query:
|
||||||
|
<<: *pg_parameters
|
||||||
|
query: >
|
||||||
|
SELECT r.rolname FROM pg_language l
|
||||||
|
JOIN pg_roles r ON l.lanowner = r.oid
|
||||||
|
WHERE l.lanname = '{{ test_lang }}'
|
||||||
|
AND r.rolname = '{{ test_user1 }}'
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- result.rowcount == 0
|
||||||
|
|
||||||
|
- name: Create lang with owner
|
||||||
|
<<: *task_parameters
|
||||||
|
postgresql_lang:
|
||||||
|
<<: *pg_parameters
|
||||||
|
name: '{{ test_lang }}'
|
||||||
|
owner: '{{ test_user1 }}'
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- result is changed
|
||||||
|
- result.queries == ['CREATE LANGUAGE "{{ test_lang }}"', 'ALTER LANGUAGE {{ test_lang }} OWNER TO {{ test_user1 }}']
|
||||||
|
|
||||||
|
- name: Check
|
||||||
|
<<: *task_parameters
|
||||||
|
postgresql_query:
|
||||||
|
<<: *pg_parameters
|
||||||
|
query: >
|
||||||
|
SELECT r.rolname FROM pg_language l
|
||||||
|
JOIN pg_roles r ON l.lanowner = r.oid
|
||||||
|
WHERE l.lanname = '{{ test_lang }}'
|
||||||
|
AND r.rolname = '{{ test_user1 }}'
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- result.rowcount == 1
|
||||||
|
|
||||||
|
- name: Change lang owner in check_mode
|
||||||
|
<<: *task_parameters
|
||||||
|
postgresql_lang:
|
||||||
|
<<: *pg_parameters
|
||||||
|
name: '{{ test_lang }}'
|
||||||
|
owner: '{{ test_user2 }}'
|
||||||
|
check_mode: yes
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- result is changed
|
||||||
|
- result.queries == ["ALTER LANGUAGE {{ test_lang }} OWNER TO {{ test_user2 }}"]
|
||||||
|
|
||||||
|
- name: Check that nothing was actually changed
|
||||||
|
<<: *task_parameters
|
||||||
|
postgresql_query:
|
||||||
|
<<: *pg_parameters
|
||||||
|
query: >
|
||||||
|
SELECT r.rolname FROM pg_language l
|
||||||
|
JOIN pg_roles r ON l.lanowner = r.oid
|
||||||
|
WHERE l.lanname = '{{ test_lang }}'
|
||||||
|
AND r.rolname = '{{ test_user2 }}'
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- result.rowcount == 0
|
||||||
|
|
||||||
|
- name: Change lang owner
|
||||||
|
<<: *task_parameters
|
||||||
|
postgresql_lang:
|
||||||
|
<<: *pg_parameters
|
||||||
|
name: '{{ test_lang }}'
|
||||||
|
owner: '{{ test_user2 }}'
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- result is changed
|
||||||
|
# TODO: the first elem of the returned list below
|
||||||
|
# looks like a bug, not related with the option owner, needs to be checked
|
||||||
|
- result.queries == ["UPDATE pg_language SET lanpltrusted = 'False' WHERE lanname = '{{ test_lang }}'", "ALTER LANGUAGE {{ test_lang }} OWNER TO {{ test_user2 }}"]
|
||||||
|
|
||||||
|
- name: Check
|
||||||
|
<<: *task_parameters
|
||||||
|
postgresql_query:
|
||||||
|
<<: *pg_parameters
|
||||||
|
query: >
|
||||||
|
SELECT r.rolname FROM pg_language l
|
||||||
|
JOIN pg_roles r ON l.lanowner = r.oid
|
||||||
|
WHERE l.lanname = '{{ test_lang }}'
|
||||||
|
AND r.rolname = '{{ test_user2 }}'
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- result.rowcount == 1
|
||||||
|
|
||||||
|
- name: Try to change lang owner again to the same role
|
||||||
|
<<: *task_parameters
|
||||||
|
postgresql_lang:
|
||||||
|
<<: *pg_parameters
|
||||||
|
name: '{{ test_lang }}'
|
||||||
|
owner: '{{ test_user2 }}'
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- result is not changed
|
||||||
|
- result.queries == []
|
||||||
|
|
||||||
|
- name: Check
|
||||||
|
<<: *task_parameters
|
||||||
|
postgresql_query:
|
||||||
|
<<: *pg_parameters
|
||||||
|
query: >
|
||||||
|
SELECT r.rolname FROM pg_language l
|
||||||
|
JOIN pg_roles r ON l.lanowner = r.oid
|
||||||
|
WHERE l.lanname = '{{ test_lang }}'
|
||||||
|
AND r.rolname = '{{ test_user2 }}'
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- result.rowcount == 1
|
||||||
|
|
||||||
|
- name: Drop test lang with owner, must ignore
|
||||||
|
<<: *task_parameters
|
||||||
|
postgresql_lang:
|
||||||
|
<<: *pg_parameters
|
||||||
|
name: '{{ test_lang }}'
|
||||||
|
state: absent
|
||||||
|
owner: '{{ non_existent_role }}'
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- result is changed
|
||||||
|
- result.queries == ["DROP LANGUAGE \"{{ test_lang }}\""]
|
||||||
|
|
||||||
|
- name: Check
|
||||||
|
<<: *task_parameters
|
||||||
|
postgresql_query:
|
||||||
|
<<: *pg_parameters
|
||||||
|
query: >
|
||||||
|
SELECT r.rolname FROM pg_language l
|
||||||
|
JOIN pg_roles r ON l.lanowner = r.oid
|
||||||
|
WHERE l.lanname = '{{ test_lang }}'
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- result.rowcount == 0
|
||||||
|
|
||||||
|
# Clean up
|
||||||
|
- name: Drop test roles
|
||||||
|
<<: *task_parameters
|
||||||
|
postgresql_user:
|
||||||
|
<<: *pg_parameters
|
||||||
|
name: '{{ item }}'
|
||||||
|
state: absent
|
||||||
|
loop:
|
||||||
|
- '{{ test_user1 }}'
|
||||||
|
- '{{ test_user2 }}'
|
||||||
Loading…
Reference in New Issue