From 1e7ece9cf70e98837a7fde39152fa7deafcb2d6b Mon Sep 17 00:00:00 2001
From: Erik Reid <erik.reid@geant.org>
Date: Sat, 29 Jun 2019 11:38:32 +0200
Subject: [PATCH] changed environment variables for startup

moved inventory json config filename from flask settings
to its own independent env variable
---
 inventory_provider/__init__.py | 49 +++++++++++++++++-----------------
 1 file changed, 25 insertions(+), 24 deletions(-)

diff --git a/inventory_provider/__init__.py b/inventory_provider/__init__.py
index 1e10f25b..97cb00a8 100644
--- a/inventory_provider/__init__.py
+++ b/inventory_provider/__init__.py
@@ -16,14 +16,32 @@ def create_app():
     :return: a new flask app instance
     """
 
-    if "SETTINGS_FILENAME" not in os.environ:
-        assert False, \
-            "environment variable SETTINGS_FILENAME' must be defined"
+    required_env_vars = [
+        'FLASK_SETTINGS_FILENAME', 'INVENTORY_PROVIDER_CONFIG_FILENAME']
+
+    assert all([n in os.environ for n in required_env_vars]), \
+        'environment variables %r must be defined' % required_env_vars
+
+    assert os.path.isfile(os.environ['INVENTORY_PROVIDER_CONFIG_FILENAME']), (
+        'config file %r not found %r' %
+        os.environ['INVENTORY_PROVIDER_CONFIG_FILENAME'])
+
+    from inventory_provider import config
+    with open(os.environ['INVENTORY_PROVIDER_CONFIG_FILENAME']) as f:
+        logging.info(
+            'loading config from: %r'
+            % os.environ['INVENTORY_PROVIDER_CONFIG_FILENAME'])
+        inventory_provider_config = config.load(f)
 
     app = Flask(__name__)
-    app.secret_key = "super secret session key"
+    app.secret_key = 'super secret session key'
 
-    environment.setup_logging()
+    logging.info(
+        'initializing Flask with config from: %r' %
+        os.environ['FLASK_SETTINGS_FILENAME'])
+    app.config.from_envvar('FLASK_SETTINGS_FILENAME')
+
+    app.config['INVENTORY_PROVIDER_CONFIG'] = inventory_provider_config
 
     from inventory_provider.routes import default
     app.register_blueprint(default.routes, url_prefix='/')
@@ -40,30 +58,13 @@ def create_app():
     from inventory_provider.routes import poller
     app.register_blueprint(poller.routes, url_prefix='/poller')
 
-    logging.info("initializing Flask with config from: %r"
-                 % os.environ["SETTINGS_FILENAME"])
-    app.config.from_envvar("SETTINGS_FILENAME")
-
-    assert "INVENTORY_PROVIDER_CONFIG_FILENAME" in app.config, (
-        "INVENTORY_PROVIDER_CONFIG_FILENAME not defined in %s"
-        % os.environ["SETTINGS_FILENAME"])
-
-    assert os.path.isfile(app.config["INVENTORY_PROVIDER_CONFIG_FILENAME"]), (
-        "config file '%s' not found" %
-        app.config["INVENTORY_PROVIDER_CONFIG_FILENAME"])
-
     if app.config.get('ENABLE_TESTING_ROUTES', False):
         from inventory_provider.routes import testing
         app.register_blueprint(testing.routes, url_prefix='/testing')
         logging.warning('DANGER!!! testing routes enabled')
 
-    from inventory_provider import config
-    with open(app.config["INVENTORY_PROVIDER_CONFIG_FILENAME"]) as f:
-        # test the config file can be loaded
-        logging.info("loading config from: %r"
-                     % app.config["INVENTORY_PROVIDER_CONFIG_FILENAME"])
-        app.config["INVENTORY_PROVIDER_CONFIG"] = config.load(f)
-
     logging.info('Inventory Provider Flask app initialized')
 
+    environment.setup_logging()
+
     return app
-- 
GitLab