X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=osdfapp.py;h=c28e14c2ee6447f329cc9a358e8e65a9e0e1ab4a;hb=e93d457429f0cb5eb01c5a5ec78c912c1e911a9a;hp=bd5efa718efff1be51966a5b6df66c31c08007a9;hpb=e245dcdb2419299dc2388f66acb5c93f4df69b5c;p=optf%2Fosdf.git diff --git a/osdfapp.py b/osdfapp.py index bd5efa7..c28e14c 100755 --- a/osdfapp.py +++ b/osdfapp.py @@ -34,19 +34,22 @@ import osdf.config.loader import osdf.operation.error_handling import osdf.operation.responses import traceback +from schematics.exceptions import DataError +from requests import RequestException +from optparse import OptionParser from osdf.adapters.policy.interface import get_policies 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.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.utils import api_data_utils ERROR_TEMPLATE = osdf.ERROR_TEMPLATE @@ -105,6 +108,16 @@ def do_osdf_health_check(): @app.route("/api/oof/v1/placement", methods=["POST"]) @auth_basic.login_required def do_placement_opt(): + return placement_rest_api() + + +@app.route("/api/oof/placement/v1", methods=["POST"]) +@auth_basic.login_required +def do_placement_opt_common_versioning(): + return placement_rest_api() + + +def placement_rest_api(): """Perform placement optimization after validating the request and fetching policies Make a call to the call-back URL with the output of the placement request. Note: Call to Conductor for placement optimization may have redirects, so account for them @@ -113,6 +126,7 @@ def do_placement_opt(): req_id = request_json['requestInfo']['requestId'] g.request_id = req_id audit_log.info(MH.received_request(request.url, request.remote_addr, json.dumps(request_json))) + api_version_info = api_data_utils.retrieve_version_info(request, req_id) PlacementAPI(request_json).validate() policies = get_policies(request_json, "placement") audit_log.info(MH.new_worker_thread(req_id, "[for placement]")) @@ -121,18 +135,35 @@ def do_placement_opt(): audit_log.info(MH.accepted_valid_request(req_id, request)) return req_accept(request_id=req_id, transaction_id=request_json['requestInfo']['transactionId'], - request_status="accepted", status_message="") + version_info=api_version_info, request_status="accepted", status_message="") @app.route("/api/oof/v1/route", methods=["POST"]) -@auth_basic.login_required def do_route_calc(): - """Perform the basic route calculations and returnn the vpn-bindings - TODO:Need to add the new class for the route in the API and model to provide this function + """ + Perform the basic route calculations and returnn the vpn-bindings """ request_json = request.get_json() audit_log.info("Calculate Route request received!") - return RouteOpt.getRoute(request_json) + return RouteOpt().getRoute(request_json) + +@app.route("/api/oof/v1/pci", methods=["POST"]) +@auth_basic.login_required +def do_pci_optimization(): + request_json = request.get_json() + req_id = request_json['requestInfo']['requestId'] + 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 + # 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)) + t.start() + audit_log.info(MH.accepted_valid_request(req_id, request)) + return req_accept(request_id=req_id, + transaction_id=request_json['requestInfo']['transactionId'], + request_status="accepted", status_message="") @app.errorhandler(500) @@ -143,7 +174,6 @@ def internal_failure(error): response.status_code = 500 return response - def get_options(argv): program_version_string = '%%prog %s' % "v1.0" program_longdesc = ""