From 6eea97c3efe6dee6c2c036a581354aaa9b8ef5fa Mon Sep 17 00:00:00 2001 From: Julien Danjou Date: Wed, 1 Mar 2017 18:07:21 +0100 Subject: [PATCH] postgresql: only pass username and password if they are set Passing None makes psycopg2 >= 2.7 use the string "None" as a role rather than nothing like it used to do. Change-Id: Idf575930ea363a7e7e613ebdca4595a9ca8f7389 --- tooz/drivers/pgsql.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/tooz/drivers/pgsql.py b/tooz/drivers/pgsql.py index f989f8dc..56f7cc3e 100644 --- a/tooz/drivers/pgsql.py +++ b/tooz/drivers/pgsql.py @@ -178,8 +178,7 @@ class PostgresDriver(coordination.CoordinationDriver): self._options = utils.collapse(options) def _start(self): - self._conn = PostgresDriver.get_connection(self._parsed_url, - self._options) + self._conn = self.get_connection(self._parsed_url, self._options) def _stop(self): self._conn.close() @@ -216,15 +215,17 @@ class PostgresDriver(coordination.CoordinationDriver): host = options.get("host") or parsed_url.hostname port = options.get("port") or parsed_url.port dbname = options.get("dbname") or parsed_url.path[1:] - username = parsed_url.username - password = parsed_url.password + kwargs = {} + if parsed_url.username is not None: + kwargs["username"] = parsed_url.username + if parsed_url.password is not None: + kwargs["password"] = parsed_url.password try: return psycopg2.connect(host=host, port=port, - user=username, - password=password, - database=dbname) + database=dbname, + **kwargs) except psycopg2.Error as e: utils.raise_with_cause(coordination.ToozConnectionError, _format_exception(e),