2013-09-23 16:37:40 +00:00
|
|
|
import logging
|
2013-10-01 03:54:12 +00:00
|
|
|
import os
|
2014-06-23 15:24:54 +00:00
|
|
|
import json
|
2013-09-23 16:37:40 +00:00
|
|
|
|
2013-09-25 16:45:12 +00:00
|
|
|
from flask import Flask
|
2013-09-20 22:38:17 +00:00
|
|
|
from flask.ext.principal import Principal
|
2013-09-25 16:45:12 +00:00
|
|
|
from flask.ext.login import LoginManager
|
2013-09-27 23:29:01 +00:00
|
|
|
from flask.ext.mail import Mail
|
2013-10-03 20:19:01 +00:00
|
|
|
|
2014-04-03 22:47:17 +00:00
|
|
|
import features
|
|
|
|
|
2014-04-03 21:31:46 +00:00
|
|
|
from storage import Storage
|
2014-05-13 16:17:26 +00:00
|
|
|
from data import model
|
|
|
|
from data import database
|
2014-04-03 21:31:46 +00:00
|
|
|
from data.userfiles import Userfiles
|
2014-05-09 21:39:43 +00:00
|
|
|
from data.users import UserAuthentication
|
2014-04-07 05:20:09 +00:00
|
|
|
from util.analytics import Analytics
|
2014-04-28 22:59:22 +00:00
|
|
|
from util.exceptionlog import Sentry
|
2014-05-21 23:50:37 +00:00
|
|
|
from util.queuemetrics import QueueMetrics
|
2014-05-29 15:24:10 +00:00
|
|
|
from util.expiration import Expiration
|
2014-04-10 19:20:16 +00:00
|
|
|
from data.billing import Billing
|
2014-05-09 22:45:11 +00:00
|
|
|
from data.buildlogs import BuildLogs
|
2014-05-21 23:50:37 +00:00
|
|
|
from data.queue import WorkQueue
|
2014-05-30 18:25:29 +00:00
|
|
|
from data.userevent import UserEventsBuilderModule
|
2014-05-28 17:51:52 +00:00
|
|
|
from license import load_license
|
|
|
|
from datetime import datetime
|
2013-10-03 20:19:01 +00:00
|
|
|
|
2013-09-20 15:55:44 +00:00
|
|
|
|
2014-04-07 20:59:22 +00:00
|
|
|
OVERRIDE_CONFIG_FILENAME = 'conf/stack/config.py'
|
2014-06-23 15:24:54 +00:00
|
|
|
OVERRIDE_CONFIG_KEY = 'QUAY_OVERRIDE_CONFIG'
|
2014-05-28 17:51:52 +00:00
|
|
|
LICENSE_FILENAME = 'conf/stack/license.enc'
|
2014-04-07 20:59:22 +00:00
|
|
|
|
|
|
|
|
2013-09-20 15:55:44 +00:00
|
|
|
app = Flask(__name__)
|
2013-10-03 20:19:01 +00:00
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
2013-10-01 03:54:12 +00:00
|
|
|
|
2014-04-07 20:59:22 +00:00
|
|
|
if 'TEST' in os.environ:
|
|
|
|
from test.testconfig import TestConfig
|
|
|
|
logger.debug('Loading test config.')
|
|
|
|
app.config.from_object(TestConfig())
|
|
|
|
else:
|
|
|
|
from config import DefaultConfig
|
|
|
|
logger.debug('Loading default config.')
|
|
|
|
app.config.from_object(DefaultConfig())
|
2014-04-03 21:31:46 +00:00
|
|
|
|
2014-04-07 20:59:22 +00:00
|
|
|
if os.path.exists(OVERRIDE_CONFIG_FILENAME):
|
|
|
|
logger.debug('Applying config file: %s', OVERRIDE_CONFIG_FILENAME)
|
|
|
|
app.config.from_pyfile(OVERRIDE_CONFIG_FILENAME)
|
2013-09-27 23:29:01 +00:00
|
|
|
|
2014-06-23 15:24:54 +00:00
|
|
|
environ_config = json.loads(os.environ.get(OVERRIDE_CONFIG_KEY, '{}'))
|
|
|
|
app.config.update(environ_config)
|
|
|
|
|
2014-05-28 17:51:52 +00:00
|
|
|
logger.debug('Applying license config from: %s', LICENSE_FILENAME)
|
|
|
|
app.config.update(load_license(LICENSE_FILENAME))
|
|
|
|
|
|
|
|
if app.config.get('LICENSE_EXPIRATION', datetime.min) < datetime.utcnow():
|
|
|
|
raise RuntimeError('License has expired, please contact support@quay.io')
|
|
|
|
|
2014-04-03 22:47:17 +00:00
|
|
|
features.import_features(app.config)
|
|
|
|
|
2014-03-17 16:01:13 +00:00
|
|
|
Principal(app, use_sessions=False)
|
2013-09-20 22:38:17 +00:00
|
|
|
|
2014-04-09 03:05:45 +00:00
|
|
|
login_manager = LoginManager(app)
|
|
|
|
mail = Mail(app)
|
|
|
|
storage = Storage(app)
|
|
|
|
userfiles = Userfiles(app)
|
|
|
|
analytics = Analytics(app)
|
2014-04-10 19:20:16 +00:00
|
|
|
billing = Billing(app)
|
2014-04-28 22:59:22 +00:00
|
|
|
sentry = Sentry(app)
|
2014-05-09 22:45:11 +00:00
|
|
|
build_logs = BuildLogs(app)
|
2014-05-21 23:50:37 +00:00
|
|
|
queue_metrics = QueueMetrics(app)
|
2014-05-13 16:17:26 +00:00
|
|
|
authentication = UserAuthentication(app)
|
2014-07-28 21:55:01 +00:00
|
|
|
# expiration = Expiration(app)
|
2014-05-30 18:25:29 +00:00
|
|
|
userevents = UserEventsBuilderModule(app)
|
2014-05-21 23:50:37 +00:00
|
|
|
|
2014-05-22 16:13:41 +00:00
|
|
|
tf = app.config['DB_TRANSACTION_FACTORY']
|
|
|
|
image_diff_queue = WorkQueue(app.config['DIFFS_QUEUE_NAME'], tf)
|
|
|
|
dockerfile_build_queue = WorkQueue(app.config['DOCKERFILE_BUILD_QUEUE_NAME'], tf,
|
2014-05-21 23:50:37 +00:00
|
|
|
reporter=queue_metrics.report)
|
2014-05-22 16:13:41 +00:00
|
|
|
webhook_queue = WorkQueue(app.config['WEBHOOK_QUEUE_NAME'], tf)
|
|
|
|
|
2014-05-13 16:17:26 +00:00
|
|
|
database.configure(app.config)
|
|
|
|
model.config.app_config = app.config
|
|
|
|
model.config.store = storage
|