in services/utils/__init__.py [0:0]
def get_dsn(self, type=None):
if self._dsn is None:
ssl_mode = self._ssl_mode
sslcert = self._ssl_cert_path
sslkey = self._ssl_key_path
sslrootcert = self._ssl_root_cert_path
if (ssl_mode not in ['allow', 'prefer', 'require', 'verify-ca', 'verify-full']):
ssl_mode = None
sslcert = None
sslkey = None
sslrootcert = None
kwargs = {
'dbname': self._database_name,
'user': self._user,
'host': self._host,
'port': self._port,
'password': self._password,
'sslmode': ssl_mode,
'sslcert': sslcert,
'sslkey': sslkey,
'sslrootcert': sslrootcert
}
if type == DBType.READER:
# We assume that everything except the hostname remains the same for a reader.
# At the moment this is a fair assumption for Postgres read replicas.
kwargs.update({"host": self._read_replica_host})
return psycopg2.extensions.make_dsn(**{k: v for k, v in kwargs.items() if v is not None})
else:
return self._dsn