in services/utils/__init__.py [0:0]
def __init__(self,
dsn: str = None,
host: str = "localhost",
port: int = 5432,
user: str = "postgres",
password: str = "postgres",
database_name: str = "postgres",
ssl_mode: str = "disabled",
ssl_cert_path: str = None,
ssl_key_path: str = None,
ssl_root_cert_path: str = None,
prefix="MF_METADATA_DB_",
pool_min: int = 1,
pool_max: int = 10,
timeout: int = 60):
self._dsn = os.environ.get(prefix + "DSN", dsn)
# Check if it is a BAD DSN String.
# if bad dsn string set self._dsn as None.
if self._dsn is not None:
if not self._is_valid_dsn(self._dsn):
self._dsn = None
self._host = os.environ.get(prefix + "HOST", host)
self._read_replica_host = \
os.environ.get(prefix + "READ_REPLICA_HOST") if USE_SEPARATE_READER_POOL else self._host
self._port = int(os.environ.get(prefix + "PORT", port))
self._user = os.environ.get(prefix + "USER", user)
self._password = os.environ.get(prefix + "PSWD", password)
self._database_name = os.environ.get(prefix + "NAME", database_name)
self._ssl_mode = os.environ.get(prefix + "SSL_MODE", ssl_mode)
self._ssl_cert_path = os.environ.get(prefix + "SSL_CERT_PATH", ssl_cert_path)
self._ssl_key_path = os.environ.get(prefix + "SSL_KEY_PATH", ssl_key_path)
self._ssl_root_cert_path = os.environ.get(prefix + "SSL_ROOT_CERT_PATH", ssl_root_cert_path)
conn_str_required_values = [
self._host,
self._port,
self._user,
self._password,
self._database_name
]
some_conn_str_values_missing = any(v is None for v in conn_str_required_values)
if self._dsn is None and some_conn_str_values_missing:
env_values = ', '.join([
prefix + "HOST",
prefix + "PORT",
prefix + "USER",
prefix + "PSWD",
prefix + "NAME",
])
dsn_var = prefix + "DSN"
raise Exception(
f"Some of the environment variables '{env_values}' are not set. "
f"Please either set '{env_values}' or {dsn_var}. "
)
self.pool_min = int(os.environ.get(prefix + "POOL_MIN", pool_min))
self.pool_max = int(os.environ.get(prefix + "POOL_MAX", pool_max))
self.timeout = int(os.environ.get(prefix + "TIMEOUT", timeout))