Skip to content

Commit

Permalink
Merge pull request #392 from bundlewrap/no-more-psql-exceptions
Browse files Browse the repository at this point in the history
postgres_*: No longer throw exceptions
  • Loading branch information
trehn committed Mar 19, 2018
2 parents b812718 + f79fcb2 commit d21376d
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 10 deletions.
18 changes: 11 additions & 7 deletions bundlewrap/items/postgres_dbs.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,22 +29,25 @@ def create_db(node, name, owner, when_creating):

cmd += name

return node.run(cmd)
return node.run(cmd, may_fail=True)


def drop_db(node, name):
return node.run("sudo -u postgres dropdb -w {}".format(quote(name)))
return node.run("sudo -u postgres dropdb -w {}".format(quote(name)), may_fail=True)


def get_databases(node):
output = node.run("echo '\\l' | sudo -u postgres psql -Anqt -F '|' | grep '|'").stdout
result = {}
for line in force_text(output).strip().split("\n"):
result = node.run("echo '\\l' | sudo -u postgres psql -Anqt -F '|' | grep '|'", may_fail=True)
if result.return_code != 0:
return {}

databases = {}
for line in force_text(result.stdout).strip().split("\n"):
db, owner = line.strip().split("|", 2)[:2]
result[db] = {
databases[db] = {
'owner': owner,
}
return result
return databases


def set_owner(node, name, owner):
Expand All @@ -54,6 +57,7 @@ def set_owner(node, name, owner):
name=name,
owner=owner,
),
may_fail=True,
)


Expand Down
10 changes: 7 additions & 3 deletions bundlewrap/items/postgres_roles.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@


def delete_role(node, role):
node.run("sudo -u postgres dropuser -w {}".format(role))
node.run("sudo -u postgres dropuser -w {}".format(role), may_fail=True)


def fix_role(node, role, attrs, create=False):
Expand All @@ -28,14 +28,18 @@ def fix_role(node, role, attrs, create=False):
password="" if attrs['password_hash'] is None else password,
role=role,
superuser="" if attrs['superuser'] is True else "NO",
)
),
may_fail=True,
)


def get_role(node, role):
result = node.run("echo \"SELECT rolcanlogin, rolsuper, rolpassword from pg_authid "
"WHERE rolname='{}'\" "
"| sudo -u postgres psql -Anqwx -F '|'".format(role))
"| sudo -u postgres psql -Anqwx -F '|'".format(role),
may_fail=True)
if result.return_code != 0:
return None

role_attrs = {}
for line in force_text(result.stdout).strip().split("\n"):
Expand Down

0 comments on commit d21376d

Please sign in to comment.