Commit 709790f4 authored by Huihui, Jonathan's avatar Huihui, Jonathan
Browse files

Merge branch 'feature/multi-env-var' into 'develop'

Allow for multiple database type connections based on environmental variables.

See merge request nset-utilities/common-package!12
parents d8b95203 88fd659f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@ services:
      - ./src/:/tmp/src
      - ./test/:/test/
    env_file:
      - ./envfile_mssql
      - ./envfile
    command: ["sh", "-c", "/test/mssql_test_server/test-mssql-conn && pytest -v --cov=common /test/test_mssql.py --cov-report term-missing"]
    depends_on:
      - mssql
+10 −0
Original line number Diff line number Diff line
DATABASE_HOST_PG=postgres
DATABASE_DB_PG=postgres
DATABASE_PORT_PG=5432
DATABASE_USER_PG=postgres
DATABASE_PW_PG=postgres
DATABASE_HOST=postgres
DATABASE_DB=postgres
DATABASE_PORT=5432
@@ -8,3 +13,8 @@ DATABASE_LOG_FILE=/tmp/test.log
DATABASE_LOG_MODE=w
DATABASE_LOG_ENCODING=utf-8
LOGLEVEL=debug
DATABASE_HOST_MS=mssql
DATABASE_DB_MS=CommonDB
DATABASE_PORT_MS=1433
DATABASE_USER_MS=sa
DATABASE_PW_MS=5nowDog5
 No newline at end of file

envfile_mssql

deleted100644 → 0
+0 −10
Original line number Diff line number Diff line
DATABASE_HOST=mssql
DATABASE_DB=CommonDB
DATABASE_PORT=1433
DATABASE_USER=sa
DATABASE_PW=5nowDog5
DATABASE_TIMEOUT=60
DATABASE_LOG_FILE=/tmp/test.log
DATABASE_LOG_MODE=w
DATABASE_LOG_ENCODING=utf-8
LOGLEVEL=debug
 No newline at end of file
+1 −2
Original line number Diff line number Diff line
@@ -50,7 +50,6 @@ class Database(ABC):

        :note: File logging is disabled by default.
    """
    DEFAULT_TIMEOUT = ce('DATABASE_TIMEOUT', 60)
    DEFAULT_DB = ce('DATABASE_DB', 'postgres')
    DEFAULT_USER = ce('DATABASE_USER', 'postgres')
    DEFAULT_PW = ce('DATABASE_PW', 'postgres')
@@ -58,6 +57,7 @@ class Database(ABC):
    DEFAULT_PORT = int(ce('DATABASE_PORT', 5432))
    DEFAULT_SCHEMA = ce('DATABASE_SCHEMA', 'public')
    DEFAULT_ENGINE = ce('DATABASE_ENGINE', 'postgresql')
    DEFAULT_TIMEOUT = ce('DATABASE_TIMEOUT', 60)
    DEFAULT_LOG_PATH = ce('DATABASE_LOG_FILE', '')
    DEFAULT_LOG_MODE = ce('DATABASE_LOG_MODE', 'a')
    DEFAULT_LOG_ENCODING = ce('DATABASE_LOG_ENCODING', 'utf-8')
@@ -145,7 +145,6 @@ class Database(ABC):
            self.connection.close()
            self.connection = None


    def is_open(self):
        """Determine if the database is open or not."""
        if self.cursor is not None and self.connection is not None:
+24 −2
Original line number Diff line number Diff line
@@ -9,9 +9,9 @@ def boolify(var):

    :param var: the variable to check to see if it can be converted to bool
    """
    if var in [0, '0', 'FALSE', 'False', 'false']:
    if var in [0, '0', 'FALSE', 'False', 'false', False]:
        return False
    if var in [1, '1', 'TRUE', 'True', 'true']:
    if var in [1, '1', 'TRUE', 'True', 'true', True]:
        return True
    raise TypeError('unable to evaluate expected boolean')

@@ -34,7 +34,29 @@ def check_environment(env_var, default=None):
        return os.environ[env_var]
    # assume if in python environment, it is already a bool or int
    if env_var in globals():
        os.environ[env_var] = str(globals()[env_var])
        return globals()[env_var]
    if env_var in locals():
        os.environ[env_var] = str(locals()[env_var])
        return locals()[env_var]
    if default is not None:
        os.environ[env_var] = str(default)
    return default


def check_multi_environment(env_var_multi, multi_value, env_var, default=None):
    """ Check if the mod environment variable exists,
    if so, return that. If not, check if the vanilla variable
    has been specified and return that value instead.

    :param env_var_multi: the modified environment variable to look for
    :param multi_value: the value of the modified environmental
    :param env_var: the vanilla environment variable to look for
    :param default: the vanilla environment variable default value
    """
    # check for existence of new var, if it exists, set environment
    # return multi value
    if str(env_var_multi) in os.environ:
        return check_environment(env_var_multi, multi_value)
    # set environment for vanilla and return vanilla
    return check_environment(env_var, default)
Loading