aboutsummaryrefslogtreecommitdiff
path: root/gn2/wqflask/startup.py
diff options
context:
space:
mode:
authorArun Isaac2023-12-29 18:55:37 +0000
committerArun Isaac2023-12-29 19:01:46 +0000
commit204a308be0f741726b9a620d88fbc22b22124c81 (patch)
treeb3cf66906674020b530c844c2bb4982c8a0e2d39 /gn2/wqflask/startup.py
parent83062c75442160427b50420161bfcae2c5c34c84 (diff)
downloadgenenetwork2-204a308be0f741726b9a620d88fbc22b22124c81.tar.gz
Namespace all modules under gn2.
We move all modules under a gn2 directory. This is important for "correct" packaging and deployment as a Guix service.
Diffstat (limited to 'gn2/wqflask/startup.py')
-rw-r--r--gn2/wqflask/startup.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/gn2/wqflask/startup.py b/gn2/wqflask/startup.py
new file mode 100644
index 00000000..069755fe
--- /dev/null
+++ b/gn2/wqflask/startup.py
@@ -0,0 +1,42 @@
+"""Checks to do before the application is started."""
+from typing import Tuple
+
+from flask import Blueprint, current_app, render_template
+
+class StartupError(Exception):
+ """Base class for Application Check Errors."""
+
+class MissingConfigurationError(StartupError):
+ """Raised in case of a missing required setting."""
+
+ def __init__(self, missing=Tuple[str, ...]):
+ """Initialise the MissingConfigurationError object."""
+ super().__init__("At least one required configuration is missing.")
+ self.missing = missing
+
+startup_errors = Blueprint("app_check_errors", __name__)
+__MANDATORY_CONFIGURATIONS__ = (
+ "REDIS_URL", # URI to Redis server
+ "SQL_URI", # URI to MariaDB server
+ "GN_SERVER_URL", # REST API Server
+ "AUTH_SERVER_URL" # Auth(entic/oris)ation Server
+)
+
+def check_mandatory_configs(app):
+ """Check that all mandatory configuration settings are defined."""
+ missing = tuple(
+ setting for setting in __MANDATORY_CONFIGURATIONS__
+ if (setting not in app.config
+ or app.config.get(setting) is None
+ or app.config.get(setting).strip() == ""))
+ if len(missing) > 0:
+ print(missing)
+ raise MissingConfigurationError(missing)
+
+@startup_errors.route("/")
+def error_index():
+ """Display errors experienced at application startup"""
+ return render_template(
+ "startup_errors.html",
+ error_type = type(current_app.startup_error).__name__,
+ error_value = current_app.startup_error)