def make_app(): """App builder (wsgi) Entry point for Savanna REST API server """ app = Flask('savanna.api') @app.route('/', methods=['GET']) def version_list(): return render({ "versions": [ {"id": "v0.2", "status": "CURRENT"} ] }) app.register_blueprint(api_v02.rest, url_prefix='/v0.2') setup_storage(app) setup_scheduler(app) def make_json_error(ex): status_code = (ex.code if isinstance(ex, HTTPException) else 500) description = (ex.description if isinstance(ex, HTTPException) else str(ex)) return render({'error': status_code, 'error_message': description}, status=status_code) for code in default_exceptions.iterkeys(): app.error_handler_spec[None][code] = make_json_error app.wsgi_app = auth_valid(app.config)(app.wsgi_app) app.wsgi_app = auth_token( app.config, auth_host=CONF.os_auth_host, auth_port=CONF.os_auth_port, auth_protocol=CONF.os_auth_protocol, admin_user=CONF.os_admin_username, admin_password=CONF.os_admin_password, admin_tenant=CONF.os_admin_tenant_name )(app.wsgi_app) return app
def make_app(): """ Entry point for Savanna REST API server """ app = Flask('savanna.api') app.config['SQLALCHEMY_DATABASE_URI'] = CONF.sqlalchemy.database_uri app.config['SQLALCHEMY_ECHO'] = CONF.sqlalchemy.echo app.register_blueprint(api_v02.rest, url_prefix='/v0.2') setup_storage(app) setup_defaults() setup_scheduler(app) def make_json_error(ex): status_code = (ex.code if isinstance(ex, HTTPException) else 500) description = (ex.description if isinstance(ex, HTTPException) else str(ex)) return render({'error': status_code, 'error_message': description}, status=status_code) for code in default_exceptions.iterkeys(): app.error_handler_spec[None][code] = make_json_error app.wsgi_app = auth_valid(app.config)(app.wsgi_app) app.wsgi_app = auth_token( app.config, auth_host=CONF.os_auth_host, auth_port=CONF.os_auth_port, auth_protocol=CONF.os_auth_protocol, admin_user=CONF.os_admin_username, admin_password=CONF.os_admin_password, admin_tenant=CONF.os_admin_tenant_name )(app.wsgi_app) return app
def make_app(): """App builder (wsgi) Entry point for Savanna REST API server """ app = flask.Flask('savanna.api') @app.route('/', methods=['GET']) def version_list(): context.set_ctx(None) return api_utils.render({ "versions": [ {"id": "v1.0", "status": "CURRENT"} ] }) @app.teardown_request def teardown_request(_ex=None): # TODO(slukjanov): how it'll work in case of exception? if context.has_ctx(): if flask.request.path != '/': try: session = context.session() if session.transaction: session.transaction.commit() except Exception as e: return api_utils.internal_error( 500, 'Internal Server Error', e) context.set_ctx(None) app.register_blueprint(api_v10.rest, url_prefix='/v1.0') db_api.configure_db() scheduler.setup_scheduler(app) plugins_base.setup_plugins() def make_json_error(ex): status_code = (ex.code if isinstance(ex, werkzeug_exceptions.HTTPException) else 500) description = (ex.description if isinstance(ex, werkzeug_exceptions.HTTPException) else str(ex)) return api_utils.render({'error': status_code, 'error_message': description}, status=status_code) for code in werkzeug_exceptions.default_exceptions.iterkeys(): app.error_handler_spec[None][code] = make_json_error if CONF.debug and not CONF.log_exchange: LOG.debug('Logging of request/response exchange could be enabled using' ' flag --log-exchange') if CONF.log_exchange: app.wsgi_app = debug.Debug.factory(app.config)(app.wsgi_app) app.wsgi_app = auth_valid.filter_factory(app.config)(app.wsgi_app) app.wsgi_app = auth_token.filter_factory( app.config, auth_host=CONF.os_auth_host, auth_port=CONF.os_auth_port, auth_protocol=CONF.os_auth_protocol, admin_user=CONF.os_admin_username, admin_password=CONF.os_admin_password, admin_tenant_name=CONF.os_admin_tenant_name )(app.wsgi_app) return app
def make_app(): """App builder (wsgi) Entry point for Savanna REST API server """ app = flask.Flask('savanna.api') @app.route('/', methods=['GET']) def version_list(): context.set_ctx(None) return api_utils.render( {"versions": [{ "id": "v1.0", "status": "CURRENT" }]}) @app.teardown_request def teardown_request(_ex=None): context.set_ctx(None) app.register_blueprint(api_v10.rest, url_prefix='/v1.0') app.register_blueprint(api_v10.rest, url_prefix='/v1.1') app.register_blueprint(api_v11.rest, url_prefix='/v1.1') # TODO(slukjanov): it should be removed when db-manage will be finished db_api.setup_db() scheduler.setup_scheduler(app) plugins_base.setup_plugins() def make_json_error(ex): status_code = (ex.code if isinstance( ex, werkzeug_exceptions.HTTPException) else 500) description = (ex.description if isinstance( ex, werkzeug_exceptions.HTTPException) else str(ex)) return api_utils.render( { 'error': status_code, 'error_message': description }, status=status_code) for code in werkzeug_exceptions.default_exceptions.iterkeys(): app.error_handler_spec[None][code] = make_json_error if CONF.debug and not CONF.log_exchange: LOG.debug('Logging of request/response exchange could be enabled using' ' flag --log-exchange') if CONF.log_exchange: app.wsgi_app = debug.Debug.factory(app.config)(app.wsgi_app) app.wsgi_app = auth_valid.filter_factory(app.config)(app.wsgi_app) app.wsgi_app = auth_token.filter_factory( app.config, auth_host=CONF.os_auth_host, auth_port=CONF.os_auth_port, auth_protocol=CONF.os_auth_protocol, admin_user=CONF.os_admin_username, admin_password=CONF.os_admin_password, admin_tenant_name=CONF.os_admin_tenant_name)(app.wsgi_app) return app