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