"""
import json
+import ssl
import sys
+import time
import traceback
from optparse import OptionParser
from threading import Thread # for scaling up, may need celery with RabbitMQ or redis
import pydevd
+import yaml
from flask import Flask, request, Response, g
from requests import RequestException
from schematics.exceptions import DataError
+yaml.warnings({'YAMLLoadWarning': False})
+
import osdf.adapters.aaf.sms as sms
import osdf.operation.responses
from osdf.adapters.policy.interface import get_policies
from osdf.optimizers.placementopt.conductor.remote_opt_processor import process_placement_opt
from osdf.optimizers.routeopt.simple_route_opt import RouteOpt
from osdf.utils import api_data_utils
+from osdf.utils.mdc_utils import clear_mdc, mdc_from_json
from osdf.webapp.appcontroller import auth_basic
ERROR_TEMPLATE = osdf.ERROR_TEMPLATE
return response
+@app.before_request
+def log_request():
+ g.request_start = time.clock()
+ request_json = request.get_json()
+ g.request_id = request_json['requestInfo']['requestId']
+ mdc_from_json(request_json)
+
+
+@app.after_request
+def log_response(response):
+ clear_mdc()
+ return response
+
+
@app.route("/api/oof/v1/healthcheck", methods=["GET"])
def do_osdf_health_check():
"""Simple health check"""
audit_log.info("A health check request is processed!")
+ return "OK"
+
+
+@app.route("/api/oof/loadmodels/v1", methods=["GET"])
+def do_osdf_load_policies():
+ audit_log.info("Uploading policy models")
"""Upload policy models"""
response = upload_policy_models()
audit_log.info(response)
return opts
+def build_ssl_context():
+ ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
+ ssl_context.set_ciphers('ECDHE-RSA-AES128-SHA256:EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH')
+ ssl_context.load_cert_chain(sys_conf['ssl_context'][0], sys_conf['ssl_context'][1])
+ return ssl_context
+
+
if __name__ == "__main__":
sys_conf = osdf_config['core']['osdf_system']
ssl_opts = sys_conf.get('ssl_context')
if ssl_opts:
- common_app_opts.update({'ssl_context': tuple(ssl_opts)})
+ common_app_opts.update({'ssl_context': build_ssl_context()})
opts = get_options(sys.argv)
# Load secrets from SMS