NONRTRIC-955: Add uvicorn, fix for appl/json 98/12198/1 2.6.0
authorDenisGNoonan <denis.noonan@est.tech>
Fri, 8 Dec 2023 12:29:14 +0000 (12:29 +0000)
committerDenisGNoonan <denis.noonan@est.tech>
Fri, 8 Dec 2023 12:29:14 +0000 (12:29 +0000)
Signed-off-by: DenisGNoonan <denis.noonan@est.tech>
Change-Id: I57090883cb12f602194a43801adfc41741f67c98

near-rt-ric-simulator/Dockerfile
near-rt-ric-simulator/src/OSC_2.1.0/controllers/a1_mediator_controller.py
near-rt-ric-simulator/src/STD_1.1.3/a1.py
near-rt-ric-simulator/src/STD_1.1.3/main.py
near-rt-ric-simulator/src/STD_2.0.0/a1.py
near-rt-ric-simulator/src/STD_2.0.0/main.py
near-rt-ric-simulator/src/STD_2.0.0/var_declaration.py
near-rt-ric-simulator/test/EXT_SRV/src/server.py
near-rt-ric-simulator/test/OSC_2.1.0/basic_test.sh

index 0c52dc9..786b003 100644 (file)
@@ -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
 
index aec84c5..9aa0f98 100644 (file)
@@ -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):
index 23f405a..ece4f39 100644 (file)
@@ -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):
 
index 7cdda0c..df021d1 100644 (file)
@@ -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
index 1dd0859..9b68a6c 100755 (executable)
@@ -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):
index 85aa153..3057169 100644 (file)
@@ -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
index 3bc4aa5..ed93f34 100644 (file)
 #
 
 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 = {}
index 77286be..cbf2a47 100644 (file)
@@ -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
 
index f97d945..9e6a88e 100755 (executable)
@@ -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 ==="