From: DenisGNoonan Date: Fri, 8 Dec 2023 12:29:14 +0000 (+0000) Subject: NONRTRIC-955: Add uvicorn, fix for appl/json X-Git-Tag: 2.6.0^0 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=sim%2Fa1-interface.git;a=commitdiff_plain;h=d9b25321d9bce8a3db88102c127e2aa4436d81c8 NONRTRIC-955: Add uvicorn, fix for appl/json Signed-off-by: DenisGNoonan Change-Id: I57090883cb12f602194a43801adfc41741f67c98 --- diff --git a/near-rt-ric-simulator/Dockerfile b/near-rt-ric-simulator/Dockerfile index 0c52dc9..786b003 100644 --- a/near-rt-ric-simulator/Dockerfile +++ b/near-rt-ric-simulator/Dockerfile @@ -20,7 +20,7 @@ FROM alpine:3.17.3 RUN apk add --update --no-cache python3=3.10.13-r0 py3-pip nginx nginx-mod-http-lua -RUN pip3 install Flask==2.2.5 connexion[swagger-ui,flask,uvicorn] +RUN pip3 install Flask connexion[swagger-ui,flask,uvicorn] WORKDIR /usr/src/app diff --git a/near-rt-ric-simulator/src/OSC_2.1.0/controllers/a1_mediator_controller.py b/near-rt-ric-simulator/src/OSC_2.1.0/controllers/a1_mediator_controller.py index aec84c5..9aa0f98 100644 --- a/near-rt-ric-simulator/src/OSC_2.1.0/controllers/a1_mediator_controller.py +++ b/near-rt-ric-simulator/src/OSC_2.1.0/controllers/a1_mediator_controller.py @@ -57,7 +57,7 @@ def a1_controller_get_all_policy_types(): res = list(policy_instances.keys()) res = list(map(int, res)) - return (res, 200) + return Response(json.dumps(res), 200, mimetype=APPL_JSON) # API Function: Get a policy type def a1_controller_get_policy_type(policy_type_id): @@ -150,7 +150,9 @@ def a1_controller_get_all_instances_for_type(policy_type_id): if (policy_type_id not in policy_instances.keys()): log_resp_text("Policy type id not found") return (None, 404) - return (list(policy_instances[policy_type_id].keys()), 200) + + res = list(policy_instances[policy_type_id].keys()) + return Response(json.dumps(res), 200, mimetype=APPL_JSON) # API Function: Get a policy instance def a1_controller_get_policy_instance(policy_type_id, policy_instance_id): diff --git a/near-rt-ric-simulator/src/STD_1.1.3/a1.py b/near-rt-ric-simulator/src/STD_1.1.3/a1.py index 23f405a..ece4f39 100644 --- a/near-rt-ric-simulator/src/STD_1.1.3/a1.py +++ b/near-rt-ric-simulator/src/STD_1.1.3/a1.py @@ -23,7 +23,7 @@ import collections import time from connexion import NoContent -from flask import Flask, escape, request, Response, make_response +from flask import Flask, request, Response from var_declaration import policy_instances, policy_status, callbacks, forced_settings, policy_fingerprint, hosts_set from utils import calcFingerprint from maincommon import check_apipath, apipath, get_supported_interfaces_response, extract_host_name, is_duplicate_check @@ -40,8 +40,9 @@ def get_all_policy_identities(): if ((r := check_modified_response()) is not None): return r - return (list(policy_instances.keys()), 200) - + res = list(policy_instances.keys()) + return Response(json.dumps(res), 200, mimetype=APPL_JSON) + # API Function: Create or update a policy def put_policy(policyId): diff --git a/near-rt-ric-simulator/src/STD_1.1.3/main.py b/near-rt-ric-simulator/src/STD_1.1.3/main.py index 7cdda0c..df021d1 100644 --- a/near-rt-ric-simulator/src/STD_1.1.3/main.py +++ b/near-rt-ric-simulator/src/STD_1.1.3/main.py @@ -24,7 +24,7 @@ import requests from pathlib import Path -from flask import Flask, escape, request, Response +from flask import Flask, request, Response from jsonschema import validate from var_declaration import policy_instances, policy_status, callbacks, forced_settings, policy_fingerprint, hosts_set, app from maincommon import check_apipath, apipath, get_supported_interfaces_response, extract_host_name diff --git a/near-rt-ric-simulator/src/STD_2.0.0/a1.py b/near-rt-ric-simulator/src/STD_2.0.0/a1.py index 1dd0859..9b68a6c 100755 --- a/near-rt-ric-simulator/src/STD_2.0.0/a1.py +++ b/near-rt-ric-simulator/src/STD_2.0.0/a1.py @@ -25,7 +25,7 @@ import time import requests from connexion import NoContent -from flask import Flask, escape, request, Response, make_response +from flask import Flask, request, Response from jsonschema import validate from var_declaration import policy_instances, policy_types, policy_status, callbacks, forced_settings, policy_fingerprint, hosts_set from utils import calcFingerprint @@ -48,7 +48,7 @@ def get_all_policy_types(): return r res = list(policy_types.keys()) - return (res, 200) + return Response(json.dumps(res), 200, mimetype=APPL_JSON) # API Function: Get a policy type def get_policy_type(policyTypeId): @@ -80,7 +80,8 @@ def get_all_policy_identities(policyTypeId): pjson=create_problem_json(None, "The policy type does not exist.", 404, None, policy_type_id) return Response(json.dumps(pjson), 404, mimetype=APPL_PROB_JSON) - return (list(policy_instances[policy_type_id].keys()), 200) + res = list(policy_instances[policy_type_id].keys()) + return Response(json.dumps(res), 200, mimetype=APPL_JSON) # API Function: Create or update a policy def put_policy(policyTypeId, policyId): diff --git a/near-rt-ric-simulator/src/STD_2.0.0/main.py b/near-rt-ric-simulator/src/STD_2.0.0/main.py index 85aa153..3057169 100644 --- a/near-rt-ric-simulator/src/STD_2.0.0/main.py +++ b/near-rt-ric-simulator/src/STD_2.0.0/main.py @@ -17,6 +17,7 @@ # import connexion +import uvicorn import json import sys import os @@ -24,7 +25,7 @@ import requests from pathlib import Path -from flask import Flask, escape, request, Response +from flask import Flask, request, Response from jsonschema import validate from var_declaration import policy_instances, policy_types, policy_status, callbacks, forced_settings, policy_fingerprint, hosts_set, data_delivery_counter, app from maincommon import check_apipath, apipath, get_supported_interfaces_response, extract_host_name @@ -253,7 +254,6 @@ if len(sys.argv) >= 2: if isinstance(sys.argv[1], int): port_number = sys.argv[1] -app.add_api('ORAN_A1-p_V2.0.0_api.yaml') - if __name__ == '__main__': - app.run(port=port_number, host="127.0.0.1") \ No newline at end of file + # Use Uvicorn to run the combined app + uvicorn.run(app, host="127.0.0.1", port=port_number, log_level="info") \ No newline at end of file diff --git a/near-rt-ric-simulator/src/STD_2.0.0/var_declaration.py b/near-rt-ric-simulator/src/STD_2.0.0/var_declaration.py index 3bc4aa5..ed93f34 100644 --- a/near-rt-ric-simulator/src/STD_2.0.0/var_declaration.py +++ b/near-rt-ric-simulator/src/STD_2.0.0/var_declaration.py @@ -16,10 +16,17 @@ # from maincommon import apipath -import connexion +from flask import Flask +from connexion import FlaskApp -#Main app -app = connexion.App(__name__, specification_dir=apipath) +flask_app = Flask(__name__) + +# Main app +app = FlaskApp(__name__, specification_dir=apipath) +app.add_api('ORAN_A1-p_V2.0.0_api.yaml') + +# Combine Connexion app with Flask app +app.app = flask_app policy_types={} policy_instances = {} diff --git a/near-rt-ric-simulator/test/EXT_SRV/src/server.py b/near-rt-ric-simulator/test/EXT_SRV/src/server.py index 77286be..cbf2a47 100644 --- a/near-rt-ric-simulator/test/EXT_SRV/src/server.py +++ b/near-rt-ric-simulator/test/EXT_SRV/src/server.py @@ -22,7 +22,7 @@ import logging import collections import time -from flask import Flask, escape, request, Response, make_response +from flask import Flask, request, Response from jsonschema import validate from var_declaration import a1_policy_instances, forced_settings diff --git a/near-rt-ric-simulator/test/OSC_2.1.0/basic_test.sh b/near-rt-ric-simulator/test/OSC_2.1.0/basic_test.sh index f97d945..9e6a88e 100755 --- a/near-rt-ric-simulator/test/OSC_2.1.0/basic_test.sh +++ b/near-rt-ric-simulator/test/OSC_2.1.0/basic_test.sh @@ -341,7 +341,7 @@ RESULT="[]" do_curl GET /a1-p/policytypes/1/policies 200 echo "=== API: Get instances for type 2, shall contain pi2 ===" -RESULT="[ \"pi2\" ]" +RESULT="json:[ \"pi2\" ]" do_curl GET /a1-p/policytypes/2/policies 200 echo "=== Get counter: instances ==="