From 3744e6720bc4d64b3d66bf768b2542576df52853 Mon Sep 17 00:00:00 2001 From: Christian Boettcher <c.boettcher@fz-juelich.de> Date: Mon, 17 May 2021 09:35:34 +0200 Subject: [PATCH] settings can now be done via the config.env file using the dotenv format --- apiserver/config/__init__.py | 2 +- apiserver/config/settings.py | 9 ++++----- apiserver/main.py | 4 ++-- apiserver/storage/JsonFileStorageAdapter.py | 6 +++--- apiserver_tests/context.py | 4 ++-- apiserver_tests/test_responsiveness.py | 1 - apiserver/config/config.env => config.env | 1 + 7 files changed, 13 insertions(+), 14 deletions(-) rename apiserver/config/config.env => config.env (61%) diff --git a/apiserver/config/__init__.py b/apiserver/config/__init__.py index 094d3cd..c739845 100644 --- a/apiserver/config/__init__.py +++ b/apiserver/config/__init__.py @@ -1 +1 @@ -from .settings import Settings \ No newline at end of file +from .settings import ApiserverSettings \ No newline at end of file diff --git a/apiserver/config/settings.py b/apiserver/config/settings.py index 4c1559a..6cc526d 100644 --- a/apiserver/config/settings.py +++ b/apiserver/config/settings.py @@ -5,10 +5,9 @@ DEFAULT_JSON_FILEPATH: str = "./app/data" ## Additional Settings can be made available by adding them as properties to this class # At launch they will be read from environment variables (case-INsensitive) -class Settings(BaseSettings): - datacatalog_apiserver_host: str = "0.0.0.0" - datacatalog_apiserver_port: int = 80 - datacatalog_apiserver_json_storage_path: str = DEFAULT_JSON_FILEPATH +class ApiserverSettings(BaseSettings): + json_storage_path: str = DEFAULT_JSON_FILEPATH class Config: - env_file = "config.env" \ No newline at end of file + env_prefix: str = "datacatalog_apiserver_" + env_file: str = "config.env" \ No newline at end of file diff --git a/apiserver/main.py b/apiserver/main.py index 64b30d0..9366ebf 100644 --- a/apiserver/main.py +++ b/apiserver/main.py @@ -11,12 +11,12 @@ from .storage import AbstractLocationDataStorageAdapter from .storage import LocationData from .storage import LocationDataType -from .config import Settings +from .config import ApiserverSettings from enum import Enum -settings = Settings() +settings = ApiserverSettings() app = FastAPI( title="API-Server for the Data Catalogue" diff --git a/apiserver/storage/JsonFileStorageAdapter.py b/apiserver/storage/JsonFileStorageAdapter.py index 4489df1..e8fbc6f 100644 --- a/apiserver/storage/JsonFileStorageAdapter.py +++ b/apiserver/storage/JsonFileStorageAdapter.py @@ -4,7 +4,7 @@ import uuid from .LocationStorage import AbstractLocationDataStorageAdapter, LocationData, LocationDataType -from apiserver.config import Settings +from apiserver.config import ApiserverSettings from typing import List @@ -23,9 +23,9 @@ class StoredData: class JsonFileStorageAdapter(AbstractLocationDataStorageAdapter): data_dir: str - def __init__(self, settings: Settings): + def __init__(self, settings: ApiserverSettings): AbstractLocationDataStorageAdapter.__init__(self) - self.data_dir = settings.datacatalog_apiserver_json_storage_path + self.data_dir = settings.json_storage_path if not (os.path.exists(self.data_dir) and os.path.isdir(self.data_dir)): raise Exception('Data Directory \"' + self.data_dir + '\" does not exist.') diff --git a/apiserver_tests/context.py b/apiserver_tests/context.py index 2f8a361..557827b 100644 --- a/apiserver_tests/context.py +++ b/apiserver_tests/context.py @@ -2,5 +2,5 @@ import os import sys sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) -import apiserver -import apiserver.storage as storage \ No newline at end of file +import apiserver as apiserver +import apiserver.storage as storage \ No newline at end of file diff --git a/apiserver_tests/test_responsiveness.py b/apiserver_tests/test_responsiveness.py index b70b0b9..7838446 100644 --- a/apiserver_tests/test_responsiveness.py +++ b/apiserver_tests/test_responsiveness.py @@ -6,7 +6,6 @@ from fastapi.testclient import TestClient from context import apiserver from context import storage - client = TestClient(apiserver.app) # get root diff --git a/apiserver/config/config.env b/config.env similarity index 61% rename from apiserver/config/config.env rename to config.env index 93c325d..64719b6 100644 --- a/apiserver/config/config.env +++ b/config.env @@ -1,3 +1,4 @@ +# contains Settings that can be loaded via pydantic settings .env support DATACATALOG_APISERVER_HOST="0.0.0.0", DATACATALOG_APISERVER_PORT=80 DATACATALOG_APISERVER_JSON_STORAGE_PATH="./app/data" \ No newline at end of file -- GitLab