Skip to content

Commit 070f71f

Browse files
committed
config: Add default values
Signed-off-by: Phoevos Kalemkeris <[email protected]>
1 parent 02d0efe commit 070f71f

File tree

2 files changed

+35
-28
lines changed

2 files changed

+35
-28
lines changed

cogstack_model_gateway/common/config.py

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9,27 +9,28 @@
99
CONFIG_FILE = os.getenv("CONFIG_FILE", "config.json")
1010
ACCEPTED_ENVIRONMENT_VARIABLES = {
1111
"cms": {
12-
"CMS_PROJECT_NAME",
13-
"CMS_HOST_URL",
12+
"CMS_HOST_URL": "",
13+
"CMS_PROJECT_NAME": "cms",
14+
"CMS_SERVER_PORT": "8000",
1415
},
1516
"cmg": {
16-
"CMG_DB_USER",
17-
"CMG_DB_PASSWORD",
18-
"CMG_DB_NAME",
19-
"CMG_DB_HOST",
20-
"CMG_DB_PORT",
21-
"CMG_OBJECT_STORE_HOST",
22-
"CMG_OBJECT_STORE_PORT",
23-
"CMG_OBJECT_STORE_ACCESS_KEY",
24-
"CMG_OBJECT_STORE_SECRET_KEY",
25-
"CMG_OBJECT_STORE_BUCKET_TASKS",
26-
"CMG_OBJECT_STORE_BUCKET_RESULTS",
27-
"CMG_QUEUE_USER",
28-
"CMG_QUEUE_PASSWORD",
29-
"CMG_QUEUE_NAME",
30-
"CMG_QUEUE_HOST",
31-
"CMG_QUEUE_PORT",
32-
"CMG_SCHEDULER_MAX_CONCURRENT_TASKS",
17+
"CMG_DB_USER": "admin",
18+
"CMG_DB_PASSWORD": "admin",
19+
"CMG_DB_NAME": "cmg_tasks",
20+
"CMG_DB_HOST": "postgres",
21+
"CMG_DB_PORT": "5432",
22+
"CMG_OBJECT_STORE_HOST": "minio",
23+
"CMG_OBJECT_STORE_PORT": "9000",
24+
"CMG_OBJECT_STORE_ACCESS_KEY": "admin",
25+
"CMG_OBJECT_STORE_SECRET_KEY": "admin123",
26+
"CMG_OBJECT_STORE_BUCKET_TASKS": "cmg-tasks",
27+
"CMG_OBJECT_STORE_BUCKET_RESULTS": "cmg-results",
28+
"CMG_QUEUE_USER": "admin",
29+
"CMG_QUEUE_PASSWORD": "admin",
30+
"CMG_QUEUE_NAME": "cmg_tasks",
31+
"CMG_QUEUE_HOST": "rabbitmq",
32+
"CMG_QUEUE_PORT": "5672",
33+
"CMG_SCHEDULER_MAX_CONCURRENT_TASKS": "1",
3334
},
3435
}
3536

@@ -85,18 +86,17 @@ def load_config() -> Config:
8586
with open(CONFIG_FILE) as f:
8687
config = json.load(f)
8788
except FileNotFoundError:
88-
log.error(f"Config file {CONFIG_FILE} not found.")
89-
raise
89+
log.warning(f"Config file {CONFIG_FILE} not found.")
90+
config = {}
9091
except json.JSONDecodeError:
9192
log.error(f"Config file {CONFIG_FILE} is not a valid JSON file.")
9293
raise
9394

9495
load_dotenv()
9596
for key, env_vars in ACCEPTED_ENVIRONMENT_VARIABLES.items():
9697
config[key] = {
97-
var.replace(f"{key.upper()}_", "", 1).lower(): value
98-
for var in env_vars
99-
if (value := os.getenv(var))
98+
var.replace(f"{key.upper()}_", "", 1).lower(): os.getenv(var, default)
99+
for var, default in env_vars.items()
100100
}
101101
log.info(f"Loaded config: {config}")
102102
_config_instance = Config(config)

tests/unit/common/test_config.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
from unittest.mock import mock_open, patch
22

3-
from cogstack_model_gateway.common.config import Config, get_config, load_config
3+
from cogstack_model_gateway.common.config import (
4+
ACCEPTED_ENVIRONMENT_VARIABLES,
5+
Config,
6+
get_config,
7+
load_config,
8+
)
49

510
TEST_ENV_VARS = {
611
"CMS_HOST_URL": "http://localhost:8000",
@@ -81,12 +86,12 @@ def test_load_config(mock_load_dotenv, mock_getenv, mock_open):
8186
assert config.key == "value"
8287

8388
assert "cmg" in config
84-
assert len(config.cmg) == 1
89+
assert len(config.cmg) == len(ACCEPTED_ENVIRONMENT_VARIABLES["cmg"])
8590
assert "db_user" in config.cmg
8691
assert config.cmg.db_user == "test_user"
8792

8893
assert "cms" in config
89-
assert len(config.cms) == 1
94+
assert len(config.cms) == len(ACCEPTED_ENVIRONMENT_VARIABLES["cms"])
9095
assert "host_url" in config.cms
9196
assert config.cms.host_url == "http://localhost:8000"
9297

@@ -99,7 +104,9 @@ def test_load_config_no_env_vars(mock_load_dotenv, mock_getenv, mock_open):
99104
config = load_config()
100105
assert isinstance(config, Config)
101106
assert config.key == "value"
102-
assert not config.cmg and not config.cms
107+
assert "cmg" in config and "cms" in config
108+
assert len(config.cmg) == len(ACCEPTED_ENVIRONMENT_VARIABLES["cmg"])
109+
assert len(config.cms) == len(ACCEPTED_ENVIRONMENT_VARIABLES["cms"])
103110
config.set("nested", {"inner_key": "inner_value"})
104111
assert isinstance(config.nested, Config)
105112
assert config.nested.inner_key == "inner_value"

0 commit comments

Comments
 (0)