From dfce4a20a1fbea1f9f7ca3f125e1398926053c2c Mon Sep 17 00:00:00 2001 From: Pepe Barbe Date: Tue, 14 Aug 2012 15:53:18 -0500 Subject: [PATCH] Fix using postgres default values When initalizing a connection to psycopg2, in order to use the default values, the keywords must be missing. So we use a dictionary as a kwarg and include only the keywords that do not have an empty value on the module parameters. --- postgresql_db | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/postgresql_db b/postgresql_db index 1b894f71b17..e57ef720f47 100755 --- a/postgresql_db +++ b/postgresql_db @@ -75,11 +75,19 @@ def main(): encoding = module.params["encoding"] state = module.params["state"] changed = False + + # To use defaults values, keyword arguments must be absent, so + # check which values are empty and don't include in the **kw + # dictionary + params_map = { + "login_host":"host", + "login_user":"user", + "login_password":"password" + } + kw = dict( (params_map[k], v) for (k, v) in module.params.iteritems() + if k in params_map and v != '' ) try: - db_connection = psycopg2.connect(host=module.params["login_host"], - user=module.params["login_user"], - password=module.params["login_password"], - database="template1") + db_connection = psycopg2.connect(database="template1", **kw) # Enable autocommit so we can create databases db_connection.autocommit = True cursor = db_connection.cursor()