X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=osdfapp.py;h=b8afbf428f6204033b59d801164e8b057923aa56;hb=4a8f63b99a8aeeed0f8a24e62f1ce1dd5fd09e01;hp=b1819eebb366e69d33a21d7f49fe45c8c08d1504;hpb=e7199cef05b7bad04f3ec2b7815423d5d07aa642;p=optf%2Fosdf.git diff --git a/osdfapp.py b/osdfapp.py index b1819ee..b8afbf4 100755 --- a/osdfapp.py +++ b/osdfapp.py @@ -20,36 +20,34 @@ OSDF Manager Main Flask Application """ +import json +import ssl import sys +import traceback +from optparse import OptionParser from threading import Thread # for scaling up, may need celery with RabbitMQ or redis +import pydevd from flask import Flask, request, Response, g +from requests import RequestException +from schematics.exceptions import DataError -import osdf -import pydevd -import json -import osdf.adapters.policy.interface -import osdf.config.credentials -import osdf.config.loader -import osdf.operation.error_handling +import osdf.adapters.aaf.sms as sms import osdf.operation.responses -import traceback from osdf.adapters.policy.interface import get_policies +from osdf.adapters.policy.interface import upload_policy_models from osdf.config.base import osdf_config -from osdf.optimizers.placementopt.conductor.remote_opt_processor import process_placement_opt -from osdf.webapp.appcontroller import auth_basic -from optparse import OptionParser -from osdf.operation.exceptions import BusinessException -from osdf.operation.error_handling import request_exception_to_json_body, internal_error_message -from requests import RequestException -from schematics.exceptions import DataError from osdf.logging.osdf_logging import MH, audit_log, error_log, debug_log -from osdf.models.api.placementRequest import PlacementAPI from osdf.models.api.pciOptimizationRequest import PCIOptimizationAPI +from osdf.models.api.placementRequest import PlacementAPI +from osdf.operation.error_handling import request_exception_to_json_body, internal_error_message +from osdf.operation.exceptions import BusinessException from osdf.operation.responses import osdf_response_for_request_accept as req_accept -from osdf.optimizers.routeopt.simple_route_opt import RouteOpt from osdf.optimizers.pciopt.pci_opt_processor import process_pci_optimation +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.webapp.appcontroller import auth_basic ERROR_TEMPLATE = osdf.ERROR_TEMPLATE @@ -105,6 +103,15 @@ def do_osdf_health_check(): 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 "OK" + + @app.route("/api/oof/v1/placement", methods=["POST"]) @auth_basic.login_required def do_placement_opt(): @@ -145,34 +152,11 @@ def do_route_calc(): """ request_json = request.get_json() audit_log.info("Calculate Route request received!") - src_access_node_id = "" - dst_access_node_id = "" - try: - src_access_node_id = request_json["srcPort"]["src-access-node-id"] - audit_log.info( src_access_node_id ) - dst_access_node_id = request_json["dstPort"]["dst-access-node-id"] - except Exception as ex: - error_log.error("Exception while retriving the src and dst node info") - # for the case of request_json for same domain, return the same node with destination update - if src_access_node_id == dst_access_node_id: - audit_log.info("src and dst are same") - data = '{'\ - '"vpns":['\ - '{'\ - '"access-topology-id": "' + request_json["srcPort"]["src-access-topology-id"] + '",'\ - '"access-client-id": "' + request_json["srcPort"]["src-access-client-id"] + '",'\ - '"access-provider-id": "' + request_json["srcPort"]["src-access-provider-id"]+ '",'\ - '"access-node-id": "' + request_json["srcPort"]["src-access-node-id"]+ '",'\ - '"src-access-ltp-id": "' + request_json["srcPort"]["src-access-ltp-id"]+ '",'\ - '"dst-access-ltp-id": "' + request_json["dstPort"]["dst-access-ltp-id"] +'"'\ - '}'\ - ']'\ - '}' - return data - else: - return RouteOpt.getRoute(request_json) + return RouteOpt().getRoute(request_json) + @app.route("/api/oof/v1/pci", methods=["POST"]) +@app.route("/api/oof/pci/v1", methods=["POST"]) @auth_basic.login_required def do_pci_optimization(): request_json = request.get_json() @@ -180,7 +164,7 @@ def do_pci_optimization(): g.request_id = req_id audit_log.info(MH.received_request(request.url, request.remote_addr, json.dumps(request_json))) PCIOptimizationAPI(request_json).validate() - #disable policy retrieval + # disable policy retrieval # policies = get_policies(request_json, "pciopt") audit_log.info(MH.new_worker_thread(req_id, "[for pciopt]")) t = Thread(target=process_pci_optimation, args=(request_json, osdf_config, None)) @@ -219,6 +203,13 @@ def get_options(argv): 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'] @@ -230,9 +221,11 @@ if __name__ == "__main__": 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 + sms.load_secrets() if not opts.local and not opts.devtest: # normal deployment app.run(port=internal_port, debug=False, **common_app_opts) else: