diff --git a/.coverage b/.coverage index 1862db14a5396d8631739e7cbc31d7fd5032d8f6..a971904287219021b0dd2eecebe4d6e7dde83190 100644 Binary files a/.coverage and b/.coverage differ diff --git a/coverage.xml b/coverage.xml index c75f163eba717f8708e8fa4219c7fb6f608f2300..2ce6dda83c9402e6fda359ea3951dceae366212e 100644 --- a/coverage.xml +++ b/coverage.xml @@ -1,5 +1,5 @@ - + @@ -61,13 +61,13 @@ - + - + @@ -114,64 +114,63 @@ - - - + + - + - - - - + + + - + - + - - + + - - + + + - - - + + - + - - - - + + + + - - - - - - - - + + + + + + + + + - + @@ -203,74 +202,139 @@ - - + - - - - - - - - - + + + + + + + + + - - - - - + + + + + + + + + + + - + + - - + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -279,8 +343,9 @@ - - + + + @@ -288,8 +353,28 @@ - + + + + + + + + + + + + + + + + + + + + + @@ -498,28 +583,27 @@ - + - + - - + - - - - - + + + + + @@ -536,8 +620,8 @@ - - + + @@ -554,8 +638,8 @@ - - + + @@ -573,8 +657,8 @@ - - + + @@ -591,8 +675,8 @@ - - + + @@ -609,8 +693,8 @@ - - + + @@ -627,8 +711,8 @@ - - + + @@ -645,44 +729,45 @@ - + - - - - - - + + + + + + - + - + - + - + - + - + - + - - - + + + - + + - + @@ -706,16 +791,17 @@ + - - - - + + + + @@ -724,18 +810,18 @@ - + - + - + - + - + - - + + @@ -743,12 +829,12 @@ - + - + - - + + @@ -756,90 +842,168 @@ - + - + - - + + - + - + - + - - + + - + - + - + - - + + - + - + - - + + - + - + - - - + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/edge_cloud_management_api/controllers/app_controllers.py b/edge_cloud_management_api/controllers/app_controllers.py index 3ce787fc79e569e562f741f36c58f2b458b3a8a0..2a0010605b578f738613079fad5d451af08eda0e 100644 --- a/edge_cloud_management_api/controllers/app_controllers.py +++ b/edge_cloud_management_api/controllers/app_controllers.py @@ -85,79 +85,6 @@ def delete_app(appId, x_correlator=None): ) -#def create_app_instance(): - # logger.info("Received request to create app instance") - - # try: - # Step 1: Get request body - # body = request.get_json() - # logger.debug(f"Request body: {body}") - - # Step 2: Validate body format - # app_id = body.get('appId') - # app_zones = body.get('appZones') - - # if not app_id or not app_zones: - # return jsonify({"error": "Missing required fields: appId or appZones"}), 400 - - # Step 3: Connect to Mongo and check if app exists - # with MongoManager() as mongo_manager: - # app_data = mongo_manager.find_document("apps", {"_id": app_id}) - # pi_edge_client_factory = PiEdgeAPIClientFactory() - # pi_edge_client = pi_edge_client_factory.create_pi_edge_api_client() - # app_data = pi_edge_client.get_app(app_id) - - # if len(app_data)<1: - # logger.warning(f"No application found with ID {app_id}") - # return jsonify({"error": "App not found", "details": f"No application found with ID {app_id}"}), 404 - - # logger.info(f"Application {app_id} found in database") - - # Step 4: Deploy app instance using Pi-Edge client - - - #logger.info(f"Preparing to send deployment request to SRM for appId={app_id}") - - # deployment_payload = { - # "appId": app_id, - # "appZones": app_zones - #} - - #Print everything before sending - # print("\n=== Preparing Deployment Request ===") - # print(f"Endpoint: {pi_edge_client.base_url}/deployedServiceFunction") - # print(f"Headers: {pi_edge_client._get_headers()}") - # print(f"Payload: {deployment_payload}") - # print("=== End of Deployment Request ===\n") - - #Try sending to Pi-Edge, catch connection errors separately - # try: - # response = pi_edge_client.deploy_service_function(data=deployment_payload) - - # if isinstance(response, dict) and "error" in response: - # logger.warning(f"Failed to deploy service function: {response}") - # return jsonify({ - # "warning": "Deployment not completed (SRM service unreachable)", - # "details": response - # }), 202 # Still accept the request but warn - - # logger.info(f"Deployment response from SRM: {response}") - - # except Exception as inner_error: - # logger.error(f"Exception while trying to deploy to SRM: {inner_error}") - # return jsonify({ - # "warning": "SRM backend unavailable. Deployment request was built correctly.", - # "details": str(inner_error) - # }), 202 # Still accept it (because your backend worked) - - # return jsonify({"message": f"Application {app_id} instantiation accepted"}), 202 - - # except ValidationError as e: - # logger.error(f"Validation error: {str(e)}") - # return jsonify({"error": "Validation error", "details": str(e)}), 400 - #except Exception as e: - # logger.error(f"Unexpected error in create_app_instance: {str(e)}") - # return jsonify({"error": "An unexpected error occurred", "details": str(e)}), 500 def create_app_instance(): logger.info("Received request to create app instance") diff --git a/edge_cloud_management_api/controllers/edge_cloud_controller.py b/edge_cloud_management_api/controllers/edge_cloud_controller.py index ce31309268791eaca66f3d9a55fd672384b2cf3a..1773deef3032f88920a6389578369e3cf176d1aa 100644 --- a/edge_cloud_management_api/controllers/edge_cloud_controller.py +++ b/edge_cloud_management_api/controllers/edge_cloud_controller.py @@ -110,15 +110,13 @@ def get_edge_cloud_zones(x_correlator: str | None = None, region=None, status=No "message": f"An error occurred: {str(e)}", } return jsonify(error_info), 500 - -<<<<<<< HEAD def edge_cloud_zone_details(zoneId: str) -> dict: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() result = api_client.edge_cloud_zone_details(zone_id=zoneId) return result -======= - def get_zone_details(zoneId:str): - pass ->>>>>>> 1c306f8dd595452cbe7804c3473f2f4b77a0b270 + +def get_zone_details(zoneId:str): + pass + diff --git a/edge_cloud_management_api/controllers/network_functions_controller.py b/edge_cloud_management_api/controllers/network_functions_controller.py index 32697b76b1276946584dcebcfb422d7f81cc4101..c10fc801b37808adc8ff1b189f29629aca8147be 100644 --- a/edge_cloud_management_api/controllers/network_functions_controller.py +++ b/edge_cloud_management_api/controllers/network_functions_controller.py @@ -1,5 +1,5 @@ from flask import jsonify -from pydantic import Field, ValidationError +from pydantic import ValidationError #Field from edge_cloud_management_api.managers.log_manager import logger from edge_cloud_management_api.services.pi_edge_services import PiEdgeAPIClientFactory @@ -138,4 +138,4 @@ def get_all_traffic_influence_resources(): return ( jsonify({"error": "An unexpected error occurred", "details": str(e)}), 500, - ) \ No newline at end of file + ) diff --git a/edge_cloud_management_api/services/pi_edge_services.py b/edge_cloud_management_api/services/pi_edge_services.py index 24d7a1109f703049766df0411883330d2307d3f0..503d7dac04ba550f527c1f869eb0c818357f3c30 100644 --- a/edge_cloud_management_api/services/pi_edge_services.py +++ b/edge_cloud_management_api/services/pi_edge_services.py @@ -340,86 +340,7 @@ class PiEdgeAPIClient: logger.info(e.args) return e.args - def create_qod_session(self, body:dict): - - url = f"{self.base_url}/sessions" - request_headers = self._get_headers() - try: - response = requests.post(url, json=body, headers=request_headers,verify=False) - response.raise_for_status() - return response.json() - except Exception as e: - logger.info(e.args) - return e.args - - def get_qod_session(self, sessionId: str): - - url = f"{self.base_url}/sessions/"+sessionId - request_headers = self._get_headers() - try: - response = requests.get(url, headers=request_headers,verify=False) - response.raise_for_status() - return response - except Exception as e: - logger.info(e.args) - return e.args - - def delete_qod_session(self, sessionId: str): - - url = f"{self.base_url}/sessions/"+sessionId - request_headers = self._get_headers() - try: - response = requests.delete(url, headers=request_headers,verify=False) - response.raise_for_status() - return response - except Exception as e: - logger.info(e.args) - return e.args - def create_traffic_influence_resource(self, body_dict): - url = f"{self.base_url}/traffic-influences/" - request_headers = self._get_headers() - try: - response = requests.post(url, json=body_dict, headers=request_headers,verify=False) - response.raise_for_status() - return response.json() - except Exception as e: - logger.info(e.args) - return e.args - - def delete_traffic_influence_resource(self, id: str): - url = f"{self.base_url}/traffic-influences/"+id - request_headers = self._get_headers() - try: - response = requests.delete(url, headers=request_headers,verify=False) - response.raise_for_status() - return response - except Exception as e: - logger.info(e.args) - return e.args - - def get_traffic_influence_resource(self, id: str): - url = f"{self.base_url}/traffic-influences/"+id - request_headers = self._get_headers() - try: - response = requests.get(url, headers=request_headers,verify=False) - response.raise_for_status() - return response.json() - except Exception as e: - logger.info(e.args) - return e.args - - def get_all_traffic_influence_resources(self): - url = f"{self.base_url}/traffic-influences/" - request_headers = self._get_headers() - try: - response = requests.get(url, headers=request_headers,verify=False) - response.raise_for_status() - return response.json() - except Exception as e: - logger.info(e.args) - return e.args - class PiEdgeAPIClientFactory: