Exemplo n.º 1
0
 def test_indent_type_error(self):
     logger_initial_config()
     logger = wrap_logger(logging.getLogger())
     with self.assertLogs(level='ERROR') as cm:
         logger.error('Test')
     message = cm[0][0].msg
     self.assertIn(
         '"event": "Test", "trace": "", "span": "", "parent": "",'
         ' "level": "error", "service": "ras-frontstage"', message)
Exemplo n.º 2
0
 def test_success(self):
     os.environ['JSON_INDENT_LOGGING'] = '1'
     logger_initial_config()
     logger = wrap_logger(logging.getLogger())
     with self.assertLogs(level='ERROR') as cm:
         logger.error('Test')
     message = cm[0][0].msg
     message_contents = '\n "event": "Test",\n "trace": "",\n "span": "",\n "parent": "",' \
                        '\n "level": "error",\n "service": "ras-frontstage"'
     self.assertIn(message_contents, message)
Exemplo n.º 3
0
def create_app_object():
    app = Flask(__name__)
    app.name = "ras-frontstage"

    # Load app config
    app_config = 'config.{}'.format(os.environ.get('APP_SETTINGS', 'Config'))
    app.config.from_object(app_config)

    # Zipkin
    zipkin = Zipkin(app=app, sample_rate=app.config.get("ZIPKIN_SAMPLE_RATE"))
    requestsdefaulter.default_headers(zipkin.create_http_headers_for_new_span)

    # Configure logger
    log_level = 'DEBUG' if app.config['DEBUG'] else None
    logger_initial_config(service_name='ras-frontstage', log_level=log_level)
    logger = wrap_logger(logging.getLogger(__name__))
    logger.debug('App configuration set', config=app_config)

    # If deploying in cloudfoundry set config to use cf redis instance
    if cf.detected:
        logger.info('Cloudfoundry detected, setting service configurations')
        app.config['REDIS_HOST'] = cf.redis.credentials['host']
        app.config['REDIS_PORT'] = cf.redis.credentials['port']

    # If any required variables are not set abort launch
    for var in app.config['NON_DEFAULT_VARIABLES']:
        if not app.config[var]:
            raise MissingEnvironmentVariable(app, logger)

    app.url_map.strict_slashes = False

    app.jinja_env.filters['file_size_filter'] = file_size_filter
    app.jinja_env.filters['subject_filter'] = subject_filter

    @app.after_request
    def apply_headers(response):
        if request.path.startswith('/static/'):
            return response
        response.headers["X-Frame-Options"] = "DENY"
        for k, v in CACHE_HEADERS.items():
            response.headers[k] = v
        return response

    return app
Exemplo n.º 4
0
def create_app_object():
    app = Flask(__name__)

    # Load app config
    app_config = "config.{}".format(os.environ.get("APP_SETTINGS", "Config"))
    app.config.from_object(app_config)

    app.name = "ras-frontstage"

    if not app.config["DEBUG"]:
        app.wsgi_app = GCPLoadBalancer(app.wsgi_app)

    # Configure logger
    logger_initial_config(log_level=app.config["LOGGING_LEVEL"])
    logger = wrap_logger(logging.getLogger(__name__))
    logger.debug("App configuration set", config=app_config)

    # If any required variables are not set abort launch
    for var in app.config["NON_DEFAULT_VARIABLES"]:
        if not app.config[var]:
            raise MissingEnvironmentVariable(app, logger)

    app.url_map.strict_slashes = False

    app.jinja_env.filters["file_size_filter"] = file_size_filter
    app.jinja_env.filters["subject_filter"] = subject_filter

    CSRFProtect(app)

    @app.after_request
    def apply_headers(response):
        if request.path.startswith("/static/"):
            return response
        response.headers["X-Frame-Options"] = "DENY"
        for k, v in CACHE_HEADERS.items():
            response.headers[k] = v
        return response

    return app