__init__.py 2.02 KiB
"""
automatically invoked app factory
"""
import logging
import os
from flask import Flask
def create_app():
"""
overrides default settings with those found
in the file read from env var SETTINGS_FILENAME
:return: a new flask app instance
"""
app = Flask(__name__)
app.secret_key = "super secret session key"
from inventory_provider.routes import default
app.register_blueprint(default.routes, url_prefix='/')
from inventory_provider.routes import data
app.register_blueprint(data.routes, url_prefix='/data')
from inventory_provider.routes import jobs
app.register_blueprint(jobs.routes, url_prefix='/jobs')
from inventory_provider.routes import opsdb
app.register_blueprint(opsdb.routes, url_prefix='/opsdb')
from inventory_provider.routes import classifier
app.register_blueprint(classifier.routes, url_prefix='/classifier')
from inventory_provider.routes import poller
app.register_blueprint(poller.routes, url_prefix='/poller')
if "SETTINGS_FILENAME" not in os.environ:
assert False, \
"environment variable SETTINGS_FILENAME' must be defined"
logging.info("initializing Flask with config from: %r"
% app.config["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"])
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')
return app