You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
4.2 KiB
115 lines
4.2 KiB
from commonkit import parse_jinja_string
|
|
|
|
|
|
def pgsql_command_parser(snippet, args=None):
|
|
a = list()
|
|
|
|
if snippet.admin_pass:
|
|
a.append('export PGPASSWORD="%s" &&' % snippet.admin_pass)
|
|
|
|
if snippet.admin_user:
|
|
a.append("-U %s" % snippet.admin_user)
|
|
|
|
if snippet.host:
|
|
a.append("--host=%s" % snippet.host)
|
|
|
|
if snippet.port:
|
|
a.append("--port=%s" % snippet.port)
|
|
|
|
context = snippet.context.copy()
|
|
context['args'] = args or snippet.args
|
|
context.update(snippet.kwargs)
|
|
|
|
if type(snippet.content) is list:
|
|
b = list()
|
|
for i in snippet.content:
|
|
b.append(parse_jinja_string(i, context))
|
|
|
|
return " ".join(b)
|
|
|
|
return parse_jinja_string(snippet.content, context)
|
|
|
|
|
|
pgsql = {
|
|
'pgsql': {
|
|
'create': [
|
|
'{% if admin_pass %}export PGPASSWORD="{{ admin_pass }}" &&{% endif %}',
|
|
"createdb",
|
|
'-U {{ admin_user|default("postgres") }}',
|
|
'--host={{ host|default("localhost") }}',
|
|
'--port={{ port|default("5432") }}',
|
|
"{% if owner %}--owner={{ owner }}{% endif %}",
|
|
"{% if template %}--template={{ template }}{% endif %}",
|
|
"{{ args[0] }}",
|
|
],
|
|
'drop': [
|
|
'{% if admin_pass %}export PGPASSWORD="{{ admin_pass }}" &&{% endif %}',
|
|
"dropdb",
|
|
'-U {{ admin_user|default("postgres") }}',
|
|
'--host={{ host|default("localhost") }}',
|
|
'--port={{ port|default("5432") }}',
|
|
"{{ args[0] }}",
|
|
],
|
|
'dump': [
|
|
'{% if admin_pass %}export PGPASSWORD="{{ admin_pass }}" &&{% endif %}',
|
|
"pd_dump",
|
|
'-U {{ admin_user|default("postgres") }}',
|
|
'--host={{ host|default("localhost") }}',
|
|
'--port={{ port|default("5432") }}',
|
|
"--column-inserts",
|
|
'--file={{ file_name|default("dump.sql") }}',
|
|
"{{ args[0] }}"
|
|
],
|
|
'exec': [
|
|
'{% if admin_pass %}export PGPASSWORD="{{ admin_pass }}" &&{% endif %}',
|
|
"psql",
|
|
'-U {{ admin_user|default("postgres") }}',
|
|
'--host={{ host|default("localhost") }}',
|
|
'--port={{ port|default("5432") }}',
|
|
"--dbname={{ database }}",
|
|
'-c "{{ args[0] }}"',
|
|
],
|
|
'exists': [
|
|
'{% if admin_pass %}export PGPASSWORD="{{ admin_pass }}" &&{% endif %}',
|
|
"psql",
|
|
'-U {{ admin_user|default("postgres") }}',
|
|
'--host={{ host|default("localhost") }}',
|
|
'--port={{ port|default("5432") }}',
|
|
r"-lqt | cut -d \| -f 1 | grep -qw {{ args[0] }}",
|
|
],
|
|
'user': {
|
|
'create': [
|
|
'{% if admin_pass %}export PGPASSWORD="{{ admin_pass }}" &&{% endif %}',
|
|
"createuser",
|
|
'-U {{ admin_user|default("postgres") }}',
|
|
'--host={{ host|default("localhost") }}',
|
|
'--port={{ port|default("5432") }}',
|
|
"-DRS {{ args[0] }}", # no create db or roles, and not a superuser
|
|
'{% if password %}&& psql -U {{ admin_user|default("postgres") }} '
|
|
'--host={{ host|default("localhost") }} '
|
|
'--port={{ port|default("5432") }} '
|
|
' -c "ALTER USER {{ args[0] }} WITH ENCRYPTED PASSWORD \'{{ password }}\';"'
|
|
'{% endif %}',
|
|
],
|
|
'drop': [
|
|
'{% if admin_pass %}export PGPASSWORD="{{ admin_pass }}" &&{% endif %}',
|
|
"dropuser",
|
|
'-U {{ admin_user|default("postgres") }}',
|
|
'--host={{ host|default("localhost") }}',
|
|
'--port={{ port|default("5432") }}',
|
|
"{{ args[0] }}"
|
|
],
|
|
'exists': [
|
|
'{% if admin_pass %}export PGPASSWORD="{{ admin_pass }}" &&{% endif %}',
|
|
"psql",
|
|
'-U {{ admin_user|default("postgres") }}',
|
|
'--host={{ host|default("localhost") }}',
|
|
'--port={{ port|default("5432") }}',
|
|
'-c "SELECT 1 FROM pgsql_roles WHERE rolnamme={{ args[0] }};"'
|
|
],
|
|
},
|
|
# '_parser': pgsql_command_parser,
|
|
'_register': ["exists", 'user.exists'],
|
|
}
|
|
}
|
|
|
|
|