mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-19 19:30:22 -07:00
New module postgresql_sequence (#55027)
* postgresql_sequence: initial commit with new module and tests * change return variables and adjust tests * fix sanity checks * fix linter errors * change formatting functions and put params alphabetically * add new examples and remove restrict option * remove restrict option * remove `required: false` * add links to documentation * change some minor parts in documentation * add new integration tests for ** drop cascade ** change owner * change usage of owner and created a test case for set owner during creation * remove some documents and use docsfragments * add aliases for minvalue and maxvalue * change to warn if sequence not exists but should be removed * use connect_to_db from module_utils/postgres.py * add checkmode for several tests * fix psycopg2 import and connect_to_db * add a test for drop nonexistent sequence * change get_info funcrtion to use only one SQL statement * rewrite the module for cleaner code * remove psycopg2 * change check_mode behavior * add docstrings for class and methods * add test for create sequence with owner in check_mode * fix typo in set_schema() * fix docu and cleanup the code * adjust documentation for state, schema and newschema * remove mutually_exclusive for 'absent' * remove unused code comments * remove warning for drop non-exicsting sequence * change autocommit condition * adjust state documentation
This commit is contained in:
parent
03d64cd9ea
commit
07d446825a
4 changed files with 1322 additions and 1 deletions
|
@ -837,6 +837,10 @@
|
|||
- include: postgresql_copy.yml
|
||||
when: postgres_version_resp.stdout is version('9.4', '>=')
|
||||
|
||||
# Test postgresql_sequence module
|
||||
- include: postgresql_sequence.yml
|
||||
when: postgres_version_resp.stdout is version('9.0', '>=')
|
||||
|
||||
# Test postgresql_ext.
|
||||
# pg_extension system view is available from PG 9.1.
|
||||
# The tests are restricted by Fedora because there will be errors related with
|
||||
|
|
|
@ -0,0 +1,696 @@
|
|||
# Copyright: (c) 2019, Tobias Birkefeld (@tcraxs) <t@craxs.de>
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
|
||||
# Preparation for tests.
|
||||
- name: postgresql_sequence - create DB
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_db:
|
||||
state: present
|
||||
name: "{{ db_name }}"
|
||||
owner: "{{ db_user1 }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
|
||||
- name: postgresql_sequence - create a user to be owner of a database
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_user:
|
||||
name: "{{ db_user1 }}"
|
||||
state: present
|
||||
encrypted: yes
|
||||
password: password
|
||||
role_attr_flags: LOGIN
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
|
||||
- name: Create a user to be owner of a sequence
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_user:
|
||||
name: "{{ db_user2 }}"
|
||||
state: present
|
||||
encrypted: yes
|
||||
password: password
|
||||
role_attr_flags: LOGIN
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
|
||||
- name: postgresql_sequence - create a schema
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_schema:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
name: foobar_schema
|
||||
|
||||
####################
|
||||
# Test: create sequence in checkmode
|
||||
- name: postgresql_sequence - create a new seqeunce with name "foobar" in check_mode
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
check_mode: yes
|
||||
postgresql_sequence:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
name: foobar
|
||||
register: result
|
||||
|
||||
# Checks
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.changed == True
|
||||
- result.sequence == 'foobar'
|
||||
- result.queries == ["CREATE SEQUENCE \"public\".\"foobar\""]
|
||||
|
||||
# Real SQL check
|
||||
- name: postgresql_sequence - check that the new seqeunce "foobar" not exists
|
||||
become: yes
|
||||
become_user: "{{ pg_user }}"
|
||||
postgresql_query:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar'"
|
||||
register: result
|
||||
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.rowcount == 0
|
||||
- result.statusmessage == 'SELECT 0'
|
||||
|
||||
####################
|
||||
# Test: create sequence
|
||||
- name: postgresql_sequence - create a new seqeunce with name "foobar"
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_sequence:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
name: foobar
|
||||
register: result
|
||||
|
||||
# Checks
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.changed == True
|
||||
- result.sequence == 'foobar'
|
||||
- result.queries == ["CREATE SEQUENCE \"public\".\"foobar\""]
|
||||
|
||||
# Real SQL check
|
||||
- name: postgresql_sequence - check that the new seqeunce "foobar" exists
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_query:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar'"
|
||||
register: result
|
||||
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.rowcount == 1
|
||||
|
||||
####################
|
||||
# Test: drop sequence in checkmode
|
||||
- name: postgresql_sequence - drop a sequence called foobar
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
check_mode: yes
|
||||
postgresql_sequence:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
name: foobar
|
||||
state: absent
|
||||
register: result
|
||||
|
||||
# Checks
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.changed == True
|
||||
- result.sequence == 'foobar'
|
||||
- result.queries == ["DROP SEQUENCE \"public\".\"foobar\""]
|
||||
|
||||
# Real SQL check
|
||||
- name: postgresql_sequence - check that the seqeunce "foobar" still exists
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_query:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar'"
|
||||
register: result
|
||||
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.rowcount == 1
|
||||
|
||||
####################
|
||||
# Test: drop sequence
|
||||
- name: postgresql_sequence - drop a sequence called foobar
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_sequence:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
name: foobar
|
||||
state: absent
|
||||
register: result
|
||||
|
||||
# Checks
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.changed == True
|
||||
- result.sequence == 'foobar'
|
||||
- result.queries == ["DROP SEQUENCE \"public\".\"foobar\""]
|
||||
|
||||
# Real SQL check
|
||||
- name: postgresql_sequence - check that the seqeunce "foobar" not exists
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_query:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar'"
|
||||
register: result
|
||||
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.rowcount == 0
|
||||
|
||||
####################
|
||||
# Test: drop nonexistent sequence
|
||||
- name: postgresql_sequence - drop a sequence called foobar which does not exists
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_sequence:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
name: foobar
|
||||
state: absent
|
||||
register: result
|
||||
|
||||
# Checks
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.changed == False
|
||||
- result.sequence == 'foobar'
|
||||
- result.queries == []
|
||||
|
||||
# Real SQL check
|
||||
- name: postgresql_sequence - check that the seqeunce "foobar" not exists
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_query:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar'"
|
||||
register: result
|
||||
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.rowcount == 0
|
||||
|
||||
####################
|
||||
# Test: create sequence with options
|
||||
- name: postgresql_sequence - create an descending sequence called foobar_desc, starting at 101 and which cycle between 1 to 1000
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_sequence:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
name: foobar_desc
|
||||
increment: -1
|
||||
start: 101
|
||||
minvalue: 1
|
||||
maxvalue: 1000
|
||||
cycle: yes
|
||||
register: result
|
||||
|
||||
# Checks
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.changed == True
|
||||
- result.sequence == 'foobar_desc'
|
||||
- result.increment == '-1'
|
||||
- result.minvalue == '1'
|
||||
- result.maxvalue == '1000'
|
||||
- result.cycle == 'YES'
|
||||
- result.queries == ["CREATE SEQUENCE \"public\".\"foobar_desc\" INCREMENT BY -1 MINVALUE 1 MAXVALUE 1000 START WITH 101 CYCLE"]
|
||||
|
||||
# Real SQL check
|
||||
- name: postgresql_sequence - check that the new seqeunce "foobar_desc" exists
|
||||
postgresql_query:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar_desc'"
|
||||
register: result
|
||||
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.rowcount == 1
|
||||
|
||||
####################
|
||||
# Test: rename a sequence in checkmode
|
||||
- name: postgresql_sequence - rename an existing sequence named foobar_desc to foobar_with_options
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
check_mode: yes
|
||||
postgresql_sequence:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
name: foobar_desc
|
||||
rename_to: foobar_with_options
|
||||
register: result
|
||||
|
||||
# Checks
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.changed == True
|
||||
- result.sequence == 'foobar_desc'
|
||||
- result.newname == 'foobar_with_options'
|
||||
- result.queries == ["ALTER SEQUENCE \"public\".\"foobar_desc\" RENAME TO \"foobar_with_options\""]
|
||||
|
||||
# Real SQL check
|
||||
- name: postgresql_sequence - check that the seqeunce "foobar_desc" still exists and is not renamed
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_query:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar_desc'"
|
||||
register: result
|
||||
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.rowcount == 1
|
||||
|
||||
####################
|
||||
# Test: rename a sequence
|
||||
- name: postgresql_sequence - rename an existing sequence named foobar_desc to foobar_with_options
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_sequence:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
name: foobar_desc
|
||||
rename_to: foobar_with_options
|
||||
register: result
|
||||
|
||||
# Checks
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.changed == True
|
||||
- result.sequence == 'foobar_desc'
|
||||
- result.newname == 'foobar_with_options'
|
||||
- result.queries == ["ALTER SEQUENCE \"public\".\"foobar_desc\" RENAME TO \"foobar_with_options\""]
|
||||
|
||||
# Real SQL check
|
||||
- name: postgresql_sequence - check that the renamed seqeunce "foobar_with_options" exists
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_query:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar_with_options'"
|
||||
register: result
|
||||
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.rowcount == 1
|
||||
|
||||
####################
|
||||
# Test: change schema of a sequence in checkmode
|
||||
- name: postgresql_sequence - change schema of an existing sequence from public to foobar_schema
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
check_mode: yes
|
||||
postgresql_sequence:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
name: foobar_with_options
|
||||
newschema: foobar_schema
|
||||
register: result
|
||||
|
||||
# Checks
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.changed == True
|
||||
- result.sequence == 'foobar_with_options'
|
||||
- result.schema == 'public'
|
||||
- result.newschema == 'foobar_schema'
|
||||
- result.queries == ["ALTER SEQUENCE \"public\".\"foobar_with_options\" SET SCHEMA \"foobar_schema\""]
|
||||
|
||||
# Real SQL check
|
||||
- name: postgresql_sequence - check that the seqeunce "foobar_with_options" still exists in the old schema
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_query:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
query: "SELECT sequence_name,sequence_schema FROM information_schema.sequences WHERE sequence_name = 'foobar_with_options' AND sequence_schema = 'public'"
|
||||
register: result
|
||||
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.rowcount == 1
|
||||
|
||||
####################
|
||||
# Test: change schema of a sequence
|
||||
- name: postgresql_sequence - change schema of an existing sequence from public to foobar_schema
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_sequence:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
name: foobar_with_options
|
||||
newschema: foobar_schema
|
||||
register: result
|
||||
|
||||
# Checks
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.changed == True
|
||||
- result.sequence == 'foobar_with_options'
|
||||
- result.schema == 'public'
|
||||
- result.newschema == 'foobar_schema'
|
||||
- result.queries == ["ALTER SEQUENCE \"public\".\"foobar_with_options\" SET SCHEMA \"foobar_schema\""]
|
||||
|
||||
# Real SQL check
|
||||
- name: postgresql_sequence - check that the seqeunce "foobar_with_options" exists in new schema
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_query:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
query: "SELECT sequence_name,sequence_schema FROM information_schema.sequences WHERE sequence_name = 'foobar_with_options' AND sequence_schema = 'foobar_schema'"
|
||||
register: result
|
||||
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.rowcount == 1
|
||||
|
||||
####################
|
||||
# Test: change owner of a sequence in checkmode
|
||||
- name: postgresql_sequence - change owner of an existing sequence from "{{ pg_user }}" to "{{ db_user1 }}"
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
check_mode: yes
|
||||
postgresql_sequence:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
name: foobar_with_options
|
||||
schema: foobar_schema
|
||||
owner: "{{ db_user1 }}"
|
||||
register: result
|
||||
|
||||
# Checks
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.changed == True
|
||||
- result.sequence == 'foobar_with_options'
|
||||
- result.owner == "{{ pg_user }}"
|
||||
- result.queries == ["ALTER SEQUENCE \"foobar_schema\".\"foobar_with_options\" OWNER TO \"{{ db_user1 }}\""]
|
||||
|
||||
# Real SQL check
|
||||
- name: postgresql_sequence - check that the seqeunce "foobar_with_options" has still the old owner
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_query:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
query: "SELECT c.relname,a.rolname,n.nspname
|
||||
FROM pg_class as c
|
||||
JOIN pg_authid as a on (c.relowner = a.oid)
|
||||
JOIN pg_namespace as n on (c.relnamespace = n.oid)
|
||||
WHERE c.relkind = 'S' and
|
||||
c.relname = 'foobar_with_options' and
|
||||
n.nspname = 'foobar_schema' and
|
||||
a.rolname = '{{ pg_user }}'"
|
||||
register: result
|
||||
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.rowcount == 1
|
||||
|
||||
####################
|
||||
# Test: change owner of a sequence
|
||||
- name: postgresql_sequence - change owner of an existing sequence from "{{ pg_user }}" to "{{ db_user1 }}"
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_sequence:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
name: foobar_with_options
|
||||
schema: foobar_schema
|
||||
owner: "{{ db_user1 }}"
|
||||
register: result
|
||||
|
||||
# Checks
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.changed == True
|
||||
- result.sequence == 'foobar_with_options'
|
||||
- result.owner == "{{ pg_user }}"
|
||||
- result.queries == ["ALTER SEQUENCE \"foobar_schema\".\"foobar_with_options\" OWNER TO \"{{ db_user1 }}\""]
|
||||
|
||||
# Real SQL check
|
||||
- name: postgresql_sequence - check that the seqeunce "foobar_with_options" has a new owner
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_query:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
query: "SELECT c.relname,a.rolname,n.nspname
|
||||
FROM pg_class as c
|
||||
JOIN pg_authid as a on (c.relowner = a.oid)
|
||||
JOIN pg_namespace as n on (c.relnamespace = n.oid)
|
||||
WHERE c.relkind = 'S' and
|
||||
c.relname = 'foobar_with_options' and
|
||||
n.nspname = 'foobar_schema' and
|
||||
a.rolname = '{{ db_user1 }}'"
|
||||
register: result
|
||||
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.rowcount == 1
|
||||
|
||||
####################
|
||||
# Test: drop seqeunce with cascade
|
||||
|
||||
# CREATE SEQUENCE seq1;
|
||||
# CREATE TABLE t1 (f1 INT NOT NULL DEFAULT nextval('seq1'));
|
||||
# DROP SEQUENCE seq1 CASCADE;
|
||||
- name: postgresql_sequence - create sequence for drop cascade test
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_sequence:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
name: seq1
|
||||
|
||||
- name: postgresql_sequence - create table which use seqeunce for drop cascade test
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_table:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
name: t1
|
||||
columns:
|
||||
- f1 INT NOT NULL DEFAULT nextval('seq1')
|
||||
|
||||
####################
|
||||
# Test: drop seqeunce with cascade in checkmode
|
||||
- name: postgresql_sequence - drop with cascade a sequence called seq1
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
check_mode: yes
|
||||
postgresql_sequence:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
name: seq1
|
||||
state: absent
|
||||
cascade: yes
|
||||
register: result
|
||||
|
||||
# Checks
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.changed == True
|
||||
- result.sequence == 'seq1'
|
||||
- result.queries == ["DROP SEQUENCE \"public\".\"seq1\" CASCADE"]
|
||||
|
||||
# Real SQL check
|
||||
- name: postgresql_sequence - check that the seqeunce "seq1" still exists
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_query:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'seq1'"
|
||||
register: result
|
||||
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.rowcount == 1
|
||||
|
||||
####################
|
||||
# Test: drop seqeunce with cascade
|
||||
- name: postgresql_sequence - drop with cascade a sequence called seq1
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_sequence:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
name: seq1
|
||||
state: absent
|
||||
cascade: yes
|
||||
register: result
|
||||
|
||||
# Checks
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.changed == True
|
||||
- result.sequence == 'seq1'
|
||||
- result.queries == ["DROP SEQUENCE \"public\".\"seq1\" CASCADE"]
|
||||
|
||||
# Real SQL check
|
||||
- name: postgresql_sequence - check that the seqeunce "seq1" not exists
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_query:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'seq1'"
|
||||
register: result
|
||||
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.rowcount == 0
|
||||
|
||||
####################
|
||||
# Test: create sequence with owner in checkmode
|
||||
- name: postgresql_sequence - create a new seqeunce with name "foobar2" with owner "{{ db_user2 }}"
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
check_mode: yes
|
||||
postgresql_sequence:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
name: foobar2
|
||||
owner: "{{ db_user2 }}"
|
||||
register: result
|
||||
|
||||
# Checks
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.changed == True
|
||||
- result.sequence == 'foobar2'
|
||||
- result.queries == ["CREATE SEQUENCE \"public\".\"foobar2\"", "ALTER SEQUENCE \"public\".\"foobar2\" OWNER TO \"ansible_db_user2\""]
|
||||
|
||||
# Real SQL check
|
||||
- name: postgresql_sequence - check that the new seqeunce "foobar2" does not exists
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_query:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar2'"
|
||||
register: result
|
||||
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.rowcount == 0
|
||||
|
||||
####################
|
||||
# Test: create sequence with owner
|
||||
- name: postgresql_sequence - create a new seqeunce with name "foobar2" with owner "{{ db_user2 }}"
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_sequence:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
name: foobar2
|
||||
owner: "{{ db_user2 }}"
|
||||
register: result
|
||||
|
||||
# Checks
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.changed == True
|
||||
- result.sequence == 'foobar2'
|
||||
- result.queries == ["CREATE SEQUENCE \"public\".\"foobar2\"", "ALTER SEQUENCE \"public\".\"foobar2\" OWNER TO \"ansible_db_user2\""]
|
||||
|
||||
# Real SQL check
|
||||
- name: postgresql_sequence - check that the new seqeunce "foobar2" exists
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_query:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
query: "SELECT sequence_name FROM information_schema.sequences WHERE sequence_name = 'foobar2'"
|
||||
register: result
|
||||
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.rowcount == 1
|
||||
|
||||
- name: postgresql_sequence - check that the seqeunce "foobar2" has owner "{{ db_user2 }}"
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_query:
|
||||
db: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
||||
query: "SELECT c.relname,a.rolname,n.nspname
|
||||
FROM pg_class as c
|
||||
JOIN pg_authid as a on (c.relowner = a.oid)
|
||||
JOIN pg_namespace as n on (c.relnamespace = n.oid)
|
||||
WHERE c.relkind = 'S' and
|
||||
c.relname = 'foobar2' and
|
||||
n.nspname = 'public' and
|
||||
a.rolname = '{{ db_user2 }}'"
|
||||
register: result
|
||||
|
||||
- name: postgresql_sequence - check with assert the output
|
||||
assert:
|
||||
that:
|
||||
- result.rowcount == 1
|
||||
|
||||
# Cleanup
|
||||
- name: postgresql_sequence - destroy DB
|
||||
become_user: "{{ pg_user }}"
|
||||
become: yes
|
||||
postgresql_db:
|
||||
state: absent
|
||||
name: "{{ db_name }}"
|
||||
login_user: "{{ pg_user }}"
|
Loading…
Add table
Add a link
Reference in a new issue