mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Add recursive database owner change to postgres module/state
Add recursive owner change to postgres.db_alter and expose it via postgres_database.present parameter. `owner_recurse` defaults to false to avoid breaking compatibility, but could arguably be a sane default.
This commit is contained in:
parent
6ae9fe6dff
commit
3aa4b3bfe6
3 changed files with 32 additions and 19 deletions
|
@ -89874,7 +89874,7 @@ salt \(aq*\(aq postgres.create_metadata adminpack
|
|||
.UNINDENT
|
||||
.INDENT 0.0
|
||||
.TP
|
||||
.B salt.modules.postgres.db_alter(name, user=None, host=None, port=None, maintenance_db=None, password=None, tablespace=None, owner=None, runas=None)
|
||||
.B salt.modules.postgres.db_alter(name, user=None, host=None, port=None, maintenance_db=None, password=None, tablespace=None, owner=None, owner_recurse=False, runas=None)
|
||||
Change tablespace or/and owner of database.
|
||||
.sp
|
||||
CLI Example:
|
||||
|
|
|
@ -400,7 +400,7 @@ def db_create(name,
|
|||
|
||||
|
||||
def db_alter(name, user=None, host=None, port=None, maintenance_db=None,
|
||||
password=None, tablespace=None, owner=None,
|
||||
password=None, tablespace=None, owner=None, owner_recurse=False,
|
||||
runas=None):
|
||||
'''
|
||||
Change tablespace or/and owner of database.
|
||||
|
@ -414,22 +414,31 @@ def db_alter(name, user=None, host=None, port=None, maintenance_db=None,
|
|||
if not any((tablespace, owner)):
|
||||
return True # Nothing todo?
|
||||
|
||||
queries = []
|
||||
if owner:
|
||||
queries.append('ALTER DATABASE "{0}" OWNER TO "{1}"'.format(
|
||||
name, owner
|
||||
))
|
||||
if tablespace:
|
||||
queries.append('ALTER DATABASE "{0}" SET TABLESPACE "{1}"'.format(
|
||||
name, tablespace
|
||||
))
|
||||
for query in queries:
|
||||
ret = _psql_prepare_and_run(['-c', query],
|
||||
user=user, host=host, port=port,
|
||||
maintenance_db=maintenance_db,
|
||||
password=password, runas=runas)
|
||||
if ret['retcode'] != 0:
|
||||
return False
|
||||
if owner and owner_recurse:
|
||||
ret = owner_to(name, owner,
|
||||
user=user,
|
||||
host=host,
|
||||
port=port,
|
||||
password=password,
|
||||
runas=runas)
|
||||
else:
|
||||
queries = []
|
||||
if owner:
|
||||
queries.append('ALTER DATABASE "{0}" OWNER TO "{1}"'.format(
|
||||
name, owner
|
||||
))
|
||||
if tablespace:
|
||||
queries.append('ALTER DATABASE "{0}" SET TABLESPACE "{1}"'.format(
|
||||
name, tablespace
|
||||
))
|
||||
for query in queries:
|
||||
ret = _psql_prepare_and_run(['-c', query],
|
||||
user=user, host=host, port=port,
|
||||
maintenance_db=maintenance_db,
|
||||
password=password, runas=runas)
|
||||
|
||||
if ret['retcode'] != 0:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ def present(name,
|
|||
lc_collate=None,
|
||||
lc_ctype=None,
|
||||
owner=None,
|
||||
owner_recurse=False,
|
||||
template=None,
|
||||
user=None,
|
||||
maintenance_db=None,
|
||||
|
@ -56,6 +57,9 @@ def present(name,
|
|||
owner
|
||||
The username of the database owner
|
||||
|
||||
owner_recurse
|
||||
Recurse owner change to all relations in the database
|
||||
|
||||
template
|
||||
The template database from which to build this database
|
||||
|
||||
|
@ -139,7 +143,7 @@ def present(name,
|
|||
name in dbs and __salt__['postgres.db_alter'](
|
||||
name,
|
||||
tablespace=tablespace,
|
||||
owner=owner, **db_args)
|
||||
owner=owner, owner_recurse=owner_recurse, **db_args)
|
||||
):
|
||||
ret['comment'] = ('Parameters for database {0} have been changed'
|
||||
).format(name)
|
||||
|
|
Loading…
Add table
Reference in a new issue