Loading edge_cloud_management_api/configs/env_config.py +2 −2 Original line number Diff line number Diff line Loading @@ -8,8 +8,8 @@ load_dotenv() class Configuration(BaseSettings): MONGO_URI: str = os.getenv("MONGO_URI") SRM_HOST: str = os.getenv("SRM_HOST") PI_EDGE_USERNAME: str = os.getenv("PI_EDGE_USERNAME") PI_EDGE_PASSWORD: str = os.getenv("PI_EDGE_PASSWORD") SRM_USERNAME: str = os.getenv("SRM_USERNAME") SRM_PASSWORD: str = os.getenv("SRM_PASSWORD") HTTP_PROXY: str = os.getenv("HTTP_PROXY") FEDERATION_MANAGER_HOST=os.getenv("FEDERATION_MANAGER_HOST") TOKEN_ENDPOINT = os.getenv('TOKEN_ENDPOINT') Loading edge_cloud_management_api/controllers/app_controllers.py +28 −28 Original line number Diff line number Diff line from flask import jsonify, request from pydantic import ValidationError from edge_cloud_management_api.managers.log_manager import logger from edge_cloud_management_api.services.edge_cloud_services import PiEdgeAPIClientFactory from edge_cloud_management_api.services.edge_cloud_services import SRMAPIClientFactory from edge_cloud_management_api.services.federation_services import FederationManagerClientFactory from edge_cloud_management_api.services.storage_service import get_zone from edge_cloud_management_api.services.storage_service import insert_zones Loading Loading @@ -217,7 +217,7 @@ def _dedupe_app_instances(instances): return deduped def _resolve_app_provider(pi_edge_client, app_id_value, app_payload=None): def _resolve_app_provider(srm_client, app_id_value, app_payload=None): if isinstance(app_payload, dict): provider = app_payload.get("appProvider") or app_payload.get("appProviderId") if provider: Loading @@ -228,7 +228,7 @@ def _resolve_app_provider(pi_edge_client, app_id_value, app_payload=None): if provider: return provider app_response = pi_edge_client.get_app(app_id_value) app_response = srm_client.get_app(app_id_value) if isinstance(app_response, dict): manifest = app_response.get("appManifest") if isinstance(manifest, dict): Loading @@ -241,9 +241,9 @@ def _resolve_app_provider(pi_edge_client, app_id_value, app_payload=None): return None def _get_catalog_app_provider_map(pi_edge_client): def _get_catalog_app_provider_map(srm_client): app_provider_map = {} apps = pi_edge_client.get_service_functions_catalogue() apps = srm_client.get_service_functions_catalogue() if not isinstance(apps, list): return app_provider_map Loading @@ -253,7 +253,7 @@ def _get_catalog_app_provider_map(pi_edge_client): app_id_value = app.get("appId") or app.get("id") if not app_id_value: continue provider = _resolve_app_provider(pi_edge_client, app_id_value, app_payload=app) provider = _resolve_app_provider(srm_client, app_id_value, app_payload=app) if provider: app_provider_map[app_id_value] = provider return app_provider_map Loading Loading @@ -295,8 +295,8 @@ def submit_app(body: dict): Controller for submitting application metadata. """ try: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.submit_app(body) return response Loading @@ -313,8 +313,8 @@ def submit_app(body: dict): def get_apps(x_correlator=None): """Retrieve metadata information of all applications""" try: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() registered_apps = api_client.get_service_functions_catalogue() return registered_apps except Exception as e: Loading @@ -327,8 +327,8 @@ def get_apps(x_correlator=None): def get_app(appId, x_correlator=None): """Retrieve the information of an Application""" try: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.get_app(appId) return response Loading @@ -348,8 +348,8 @@ def get_app(appId, x_correlator=None): def delete_app(appId, x_correlator=None): """Delete Application metadata from an Edge Cloud Provider""" try: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.delete_app(appId=appId) if isinstance(response, dict) and int(response.get("status_code", 500)) >= 400: logger.info("SRM app delete failed, attempting federation cleanup") Loading Loading @@ -437,8 +437,8 @@ def create_app_instance(): "error": "Missing required fields: appId, appZones" }), 400 pi_edge_client_factory = PiEdgeAPIClientFactory() pi_edge_client = pi_edge_client_factory.create_pi_edge_api_client() srm_client_factory = SRMAPIClientFactory() srm_client = srm_client_factory.create_srm_api_client() first_zone = app_zones[0] if isinstance(app_zones, list) and app_zones else {} if not isinstance(first_zone, dict): Loading @@ -457,7 +457,7 @@ def create_app_instance(): zone = get_zone(edge_cloud_zone_id, edge_cloud_provider) if edge_cloud_zone_id else None if not zone and edge_cloud_zone_id: try: zones = pi_edge_client.edge_cloud_zones() zones = srm_client.edge_cloud_zones() if isinstance(zones, list): for z in zones: if not isinstance(z, dict): Loading Loading @@ -494,7 +494,7 @@ def create_app_instance(): # ============================================================ # Step 1: Retrieve application metadata from SRM # ============================================================ app_response = pi_edge_client.get_app(appId=app_id) app_response = srm_client.get_app(appId=app_id) appData = app_response.get("appManifest") if isinstance(app_response, dict) else None if not isinstance(appData, dict): appData = None Loading Loading @@ -806,7 +806,7 @@ def create_app_instance(): try: logger.debug("Sending deployment request to SRM") response = pi_edge_client.deploy_service_function(data=body) response = srm_client.deploy_service_function(data=body) if isinstance(response, dict) and "error" in response: logger.warning( Loading Loading @@ -847,10 +847,10 @@ def get_app_instance(app_id=None, appId=None, x_correlator=None, xCorrelator=Non app_id = app_id or appId app_instance_id = app_instance_id or appInstanceId instances = [] pi_edge_client_factory = PiEdgeAPIClientFactory() pi_edge_client = pi_edge_client_factory.create_pi_edge_api_client() srm_client_factory = SRMAPIClientFactory() srm_client = srm_client_factory.create_srm_api_client() local_response = pi_edge_client.get_app_instances() local_response = srm_client.get_app_instances() local_instances = [] if isinstance(local_response, dict): local_instances = local_response.get("appInstances", []) Loading @@ -864,7 +864,7 @@ def get_app_instance(app_id=None, appId=None, x_correlator=None, xCorrelator=Non feds = get_all_feds() if app_id: app_provider_id = _resolve_app_provider(pi_edge_client, app_id) app_provider_id = _resolve_app_provider(srm_client, app_id) if app_provider_id: for app_id_value, _federation_context_id, _fed_token, zone_provider, fed_instances in _iter_federated_instances( feds, Loading @@ -880,7 +880,7 @@ def get_app_instance(app_id=None, appId=None, x_correlator=None, xCorrelator=Non else: logger.info("Skipping federated lookup; no appProviderId for appId=%s", app_id) else: app_provider_map = _get_catalog_app_provider_map(pi_edge_client) app_provider_map = _get_catalog_app_provider_map(srm_client) for app_id_value, _federation_context_id, _fed_token, zone_provider, fed_instances in _iter_federated_instances( feds, app_provider_map.items(), Loading Loading @@ -926,9 +926,9 @@ def delete_app_instance(appInstanceId: str, x_correlator=None): - Returns 204 if deleted, 404 if not found. """ try: pi_edge_client_factory = PiEdgeAPIClientFactory() pi_edge_client = pi_edge_client_factory.create_pi_edge_api_client() response = pi_edge_client.delete_app_instance(appInstanceId) srm_client_factory = SRMAPIClientFactory() srm_client = srm_client_factory.create_srm_api_client() response = srm_client.delete_app_instance(appInstanceId) if isinstance(response, dict) and response.get("status_code") != 404: status_code = response.get("status_code", 500) return jsonify(response), status_code Loading @@ -943,7 +943,7 @@ def delete_app_instance(appInstanceId: str, x_correlator=None): else: status_code = response.get("status_code", 404) app_provider_map = _get_catalog_app_provider_map(pi_edge_client) app_provider_map = _get_catalog_app_provider_map(srm_client) feds = get_all_feds() for app_id_value, federation_context_id, fed_token, _zone_provider, fed_instances in _iter_federated_instances( Loading edge_cloud_management_api/controllers/edge_cloud_controller.py +8 −8 Original line number Diff line number Diff line Loading @@ -3,14 +3,14 @@ from pydantic import BaseModel, Field, ValidationError from typing import List from edge_cloud_management_api.configs.env_config import config from edge_cloud_management_api.managers.log_manager import logger from edge_cloud_management_api.services.edge_cloud_services import PiEdgeAPIClientFactory from edge_cloud_management_api.services.edge_cloud_services import SRMAPIClientFactory from edge_cloud_management_api.services.storage_service import insert_zones, get_zones from edge_cloud_management_api.services.federation_services import FederationManagerClientFactory try: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() zones = api_client.edge_cloud_zones() for zone in zones: zone['isLocal'] = 'true' Loading Loading @@ -45,11 +45,11 @@ class EdgeCloudQueryParams(BaseModel): def get_local_zones() -> list[dict]: """ Get local Operator Platform available zones from PiEdge Service Resource Manager. Get local Operator Platform available zones from the Service Resource Manager. """ try: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() result = api_client.edge_cloud_zones() if isinstance(result, dict) and "error" in result: Loading Loading @@ -155,7 +155,7 @@ def get_edge_cloud_zones(x_correlator: str | None = None, region=None, status=No def edge_cloud_zone_details(zoneId: str) -> dict: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() result = api_client.edge_cloud_zone_details(zone_id=zoneId) return result edge_cloud_management_api/controllers/network_functions_controller.py +17 −17 Original line number Diff line number Diff line from flask import jsonify from pydantic import ValidationError #Field from edge_cloud_management_api.managers.log_manager import logger from edge_cloud_management_api.services.edge_cloud_services import PiEdgeAPIClientFactory from edge_cloud_management_api.services.edge_cloud_services import SRMAPIClientFactory def create_qod_session(body: dict): """ Loading @@ -12,8 +12,8 @@ def create_qod_session(body: dict): # validated_data = AppManifest(**body) # validated_data_dict = validated_data.model_dump(mode="json") # validated_data_dict["_id"] = str(uuid.uuid4()) pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.create_qod_session(body) return response Loading @@ -35,8 +35,8 @@ def delete_qod_session(sessionId: str): # validated_data = AppManifest(**body) # validated_data_dict = validated_data.model_dump(mode="json") # validated_data_dict["_id"] = str(uuid.uuid4()) pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.delete_qod_session(sessionId=sessionId) return response Loading @@ -58,8 +58,8 @@ def get_qod_session(sessionId: str): # validated_data = AppManifest(**body) # validated_data_dict = validated_data.model_dump(mode="json") # validated_data_dict["_id"] = str(uuid.uuid4()) pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.get_qod_session(sessionId=sessionId) # Insert into MongoDB # with MongoManager() as db: Loading @@ -81,8 +81,8 @@ def get_qod_session(sessionId: str): def create_traffic_influence_resource(body: dict): try: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.create_traffic_influence_resource(body) return response except ValidationError as e: Loading @@ -96,8 +96,8 @@ def create_traffic_influence_resource(body: dict): def get_traffic_influence_resource(id: str): try: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.get_traffic_influence_resource(id) return response except ValidationError as e: Loading @@ -112,8 +112,8 @@ def get_traffic_influence_resource(id: str): def delete_traffic_influence_resource(id: str): try: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.delete_traffic_influence_resource(id) return response except ValidationError as e: Loading @@ -127,8 +127,8 @@ def delete_traffic_influence_resource(id: str): def get_all_traffic_influence_resources(): try: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.get_all_traffic_influence_resources() return response except ValidationError as e: Loading @@ -146,8 +146,8 @@ def retrieve_location(body: dict): Forwards the request to the SRM which delegates to the configured network adapter. """ try: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.retrieve_location(body) return response Loading edge_cloud_management_api/services/edge_cloud_services.py +10 −10 Original line number Diff line number Diff line Loading @@ -9,7 +9,7 @@ proxies = { "https": config.HTTP_PROXY, } class PiEdgeAPIClient: class SRMAPIClient: def __init__(self, base_url, username, password): self.base_url = base_url self.username = username Loading Loading @@ -350,17 +350,17 @@ class PiEdgeAPIClient: error_body = {"error": response.text} return error_body, response.status_code class PiEdgeAPIClientFactory: class SRMAPIClientFactory: """ Factory class to create instances of PiEdgeAPIClient. Factory class to create instances of SRMAPIClient. """ def __init__(self): self.default_base_url = config.SRM_HOST self.default_username = config.PI_EDGE_USERNAME self.default_password = config.PI_EDGE_PASSWORD self.default_username = config.SRM_USERNAME self.default_password = config.SRM_PASSWORD def create_pi_edge_api_client(self, base_url=None, username=None, password=None): def create_srm_api_client(self, base_url=None, username=None, password=None): """ Factory method to create a new SRMAPIClient instance. Loading @@ -370,7 +370,7 @@ class PiEdgeAPIClientFactory: password (str): The password for authentication. If None, the default is used. Returns: PiEdgeAPIClient: A new instance of the PiEdgeAPIClient. SRMAPIClient: A new instance of the SRMAPIClient. """ if base_url is None: base_url = self.default_base_url Loading @@ -379,12 +379,12 @@ class PiEdgeAPIClientFactory: if password is None: password = self.default_password return PiEdgeAPIClient(base_url=base_url, username=username, password=password) return SRMAPIClient(base_url=base_url, username=username, password=password) if __name__ == "__main__": pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() edge_zones = api_client.edge_cloud_zones() logger.error("Edge zones:", edge_zones) Loading
edge_cloud_management_api/configs/env_config.py +2 −2 Original line number Diff line number Diff line Loading @@ -8,8 +8,8 @@ load_dotenv() class Configuration(BaseSettings): MONGO_URI: str = os.getenv("MONGO_URI") SRM_HOST: str = os.getenv("SRM_HOST") PI_EDGE_USERNAME: str = os.getenv("PI_EDGE_USERNAME") PI_EDGE_PASSWORD: str = os.getenv("PI_EDGE_PASSWORD") SRM_USERNAME: str = os.getenv("SRM_USERNAME") SRM_PASSWORD: str = os.getenv("SRM_PASSWORD") HTTP_PROXY: str = os.getenv("HTTP_PROXY") FEDERATION_MANAGER_HOST=os.getenv("FEDERATION_MANAGER_HOST") TOKEN_ENDPOINT = os.getenv('TOKEN_ENDPOINT') Loading
edge_cloud_management_api/controllers/app_controllers.py +28 −28 Original line number Diff line number Diff line from flask import jsonify, request from pydantic import ValidationError from edge_cloud_management_api.managers.log_manager import logger from edge_cloud_management_api.services.edge_cloud_services import PiEdgeAPIClientFactory from edge_cloud_management_api.services.edge_cloud_services import SRMAPIClientFactory from edge_cloud_management_api.services.federation_services import FederationManagerClientFactory from edge_cloud_management_api.services.storage_service import get_zone from edge_cloud_management_api.services.storage_service import insert_zones Loading Loading @@ -217,7 +217,7 @@ def _dedupe_app_instances(instances): return deduped def _resolve_app_provider(pi_edge_client, app_id_value, app_payload=None): def _resolve_app_provider(srm_client, app_id_value, app_payload=None): if isinstance(app_payload, dict): provider = app_payload.get("appProvider") or app_payload.get("appProviderId") if provider: Loading @@ -228,7 +228,7 @@ def _resolve_app_provider(pi_edge_client, app_id_value, app_payload=None): if provider: return provider app_response = pi_edge_client.get_app(app_id_value) app_response = srm_client.get_app(app_id_value) if isinstance(app_response, dict): manifest = app_response.get("appManifest") if isinstance(manifest, dict): Loading @@ -241,9 +241,9 @@ def _resolve_app_provider(pi_edge_client, app_id_value, app_payload=None): return None def _get_catalog_app_provider_map(pi_edge_client): def _get_catalog_app_provider_map(srm_client): app_provider_map = {} apps = pi_edge_client.get_service_functions_catalogue() apps = srm_client.get_service_functions_catalogue() if not isinstance(apps, list): return app_provider_map Loading @@ -253,7 +253,7 @@ def _get_catalog_app_provider_map(pi_edge_client): app_id_value = app.get("appId") or app.get("id") if not app_id_value: continue provider = _resolve_app_provider(pi_edge_client, app_id_value, app_payload=app) provider = _resolve_app_provider(srm_client, app_id_value, app_payload=app) if provider: app_provider_map[app_id_value] = provider return app_provider_map Loading Loading @@ -295,8 +295,8 @@ def submit_app(body: dict): Controller for submitting application metadata. """ try: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.submit_app(body) return response Loading @@ -313,8 +313,8 @@ def submit_app(body: dict): def get_apps(x_correlator=None): """Retrieve metadata information of all applications""" try: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() registered_apps = api_client.get_service_functions_catalogue() return registered_apps except Exception as e: Loading @@ -327,8 +327,8 @@ def get_apps(x_correlator=None): def get_app(appId, x_correlator=None): """Retrieve the information of an Application""" try: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.get_app(appId) return response Loading @@ -348,8 +348,8 @@ def get_app(appId, x_correlator=None): def delete_app(appId, x_correlator=None): """Delete Application metadata from an Edge Cloud Provider""" try: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.delete_app(appId=appId) if isinstance(response, dict) and int(response.get("status_code", 500)) >= 400: logger.info("SRM app delete failed, attempting federation cleanup") Loading Loading @@ -437,8 +437,8 @@ def create_app_instance(): "error": "Missing required fields: appId, appZones" }), 400 pi_edge_client_factory = PiEdgeAPIClientFactory() pi_edge_client = pi_edge_client_factory.create_pi_edge_api_client() srm_client_factory = SRMAPIClientFactory() srm_client = srm_client_factory.create_srm_api_client() first_zone = app_zones[0] if isinstance(app_zones, list) and app_zones else {} if not isinstance(first_zone, dict): Loading @@ -457,7 +457,7 @@ def create_app_instance(): zone = get_zone(edge_cloud_zone_id, edge_cloud_provider) if edge_cloud_zone_id else None if not zone and edge_cloud_zone_id: try: zones = pi_edge_client.edge_cloud_zones() zones = srm_client.edge_cloud_zones() if isinstance(zones, list): for z in zones: if not isinstance(z, dict): Loading Loading @@ -494,7 +494,7 @@ def create_app_instance(): # ============================================================ # Step 1: Retrieve application metadata from SRM # ============================================================ app_response = pi_edge_client.get_app(appId=app_id) app_response = srm_client.get_app(appId=app_id) appData = app_response.get("appManifest") if isinstance(app_response, dict) else None if not isinstance(appData, dict): appData = None Loading Loading @@ -806,7 +806,7 @@ def create_app_instance(): try: logger.debug("Sending deployment request to SRM") response = pi_edge_client.deploy_service_function(data=body) response = srm_client.deploy_service_function(data=body) if isinstance(response, dict) and "error" in response: logger.warning( Loading Loading @@ -847,10 +847,10 @@ def get_app_instance(app_id=None, appId=None, x_correlator=None, xCorrelator=Non app_id = app_id or appId app_instance_id = app_instance_id or appInstanceId instances = [] pi_edge_client_factory = PiEdgeAPIClientFactory() pi_edge_client = pi_edge_client_factory.create_pi_edge_api_client() srm_client_factory = SRMAPIClientFactory() srm_client = srm_client_factory.create_srm_api_client() local_response = pi_edge_client.get_app_instances() local_response = srm_client.get_app_instances() local_instances = [] if isinstance(local_response, dict): local_instances = local_response.get("appInstances", []) Loading @@ -864,7 +864,7 @@ def get_app_instance(app_id=None, appId=None, x_correlator=None, xCorrelator=Non feds = get_all_feds() if app_id: app_provider_id = _resolve_app_provider(pi_edge_client, app_id) app_provider_id = _resolve_app_provider(srm_client, app_id) if app_provider_id: for app_id_value, _federation_context_id, _fed_token, zone_provider, fed_instances in _iter_federated_instances( feds, Loading @@ -880,7 +880,7 @@ def get_app_instance(app_id=None, appId=None, x_correlator=None, xCorrelator=Non else: logger.info("Skipping federated lookup; no appProviderId for appId=%s", app_id) else: app_provider_map = _get_catalog_app_provider_map(pi_edge_client) app_provider_map = _get_catalog_app_provider_map(srm_client) for app_id_value, _federation_context_id, _fed_token, zone_provider, fed_instances in _iter_federated_instances( feds, app_provider_map.items(), Loading Loading @@ -926,9 +926,9 @@ def delete_app_instance(appInstanceId: str, x_correlator=None): - Returns 204 if deleted, 404 if not found. """ try: pi_edge_client_factory = PiEdgeAPIClientFactory() pi_edge_client = pi_edge_client_factory.create_pi_edge_api_client() response = pi_edge_client.delete_app_instance(appInstanceId) srm_client_factory = SRMAPIClientFactory() srm_client = srm_client_factory.create_srm_api_client() response = srm_client.delete_app_instance(appInstanceId) if isinstance(response, dict) and response.get("status_code") != 404: status_code = response.get("status_code", 500) return jsonify(response), status_code Loading @@ -943,7 +943,7 @@ def delete_app_instance(appInstanceId: str, x_correlator=None): else: status_code = response.get("status_code", 404) app_provider_map = _get_catalog_app_provider_map(pi_edge_client) app_provider_map = _get_catalog_app_provider_map(srm_client) feds = get_all_feds() for app_id_value, federation_context_id, fed_token, _zone_provider, fed_instances in _iter_federated_instances( Loading
edge_cloud_management_api/controllers/edge_cloud_controller.py +8 −8 Original line number Diff line number Diff line Loading @@ -3,14 +3,14 @@ from pydantic import BaseModel, Field, ValidationError from typing import List from edge_cloud_management_api.configs.env_config import config from edge_cloud_management_api.managers.log_manager import logger from edge_cloud_management_api.services.edge_cloud_services import PiEdgeAPIClientFactory from edge_cloud_management_api.services.edge_cloud_services import SRMAPIClientFactory from edge_cloud_management_api.services.storage_service import insert_zones, get_zones from edge_cloud_management_api.services.federation_services import FederationManagerClientFactory try: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() zones = api_client.edge_cloud_zones() for zone in zones: zone['isLocal'] = 'true' Loading Loading @@ -45,11 +45,11 @@ class EdgeCloudQueryParams(BaseModel): def get_local_zones() -> list[dict]: """ Get local Operator Platform available zones from PiEdge Service Resource Manager. Get local Operator Platform available zones from the Service Resource Manager. """ try: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() result = api_client.edge_cloud_zones() if isinstance(result, dict) and "error" in result: Loading Loading @@ -155,7 +155,7 @@ def get_edge_cloud_zones(x_correlator: str | None = None, region=None, status=No def edge_cloud_zone_details(zoneId: str) -> dict: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() result = api_client.edge_cloud_zone_details(zone_id=zoneId) return result
edge_cloud_management_api/controllers/network_functions_controller.py +17 −17 Original line number Diff line number Diff line from flask import jsonify from pydantic import ValidationError #Field from edge_cloud_management_api.managers.log_manager import logger from edge_cloud_management_api.services.edge_cloud_services import PiEdgeAPIClientFactory from edge_cloud_management_api.services.edge_cloud_services import SRMAPIClientFactory def create_qod_session(body: dict): """ Loading @@ -12,8 +12,8 @@ def create_qod_session(body: dict): # validated_data = AppManifest(**body) # validated_data_dict = validated_data.model_dump(mode="json") # validated_data_dict["_id"] = str(uuid.uuid4()) pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.create_qod_session(body) return response Loading @@ -35,8 +35,8 @@ def delete_qod_session(sessionId: str): # validated_data = AppManifest(**body) # validated_data_dict = validated_data.model_dump(mode="json") # validated_data_dict["_id"] = str(uuid.uuid4()) pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.delete_qod_session(sessionId=sessionId) return response Loading @@ -58,8 +58,8 @@ def get_qod_session(sessionId: str): # validated_data = AppManifest(**body) # validated_data_dict = validated_data.model_dump(mode="json") # validated_data_dict["_id"] = str(uuid.uuid4()) pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.get_qod_session(sessionId=sessionId) # Insert into MongoDB # with MongoManager() as db: Loading @@ -81,8 +81,8 @@ def get_qod_session(sessionId: str): def create_traffic_influence_resource(body: dict): try: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.create_traffic_influence_resource(body) return response except ValidationError as e: Loading @@ -96,8 +96,8 @@ def create_traffic_influence_resource(body: dict): def get_traffic_influence_resource(id: str): try: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.get_traffic_influence_resource(id) return response except ValidationError as e: Loading @@ -112,8 +112,8 @@ def get_traffic_influence_resource(id: str): def delete_traffic_influence_resource(id: str): try: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.delete_traffic_influence_resource(id) return response except ValidationError as e: Loading @@ -127,8 +127,8 @@ def delete_traffic_influence_resource(id: str): def get_all_traffic_influence_resources(): try: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.get_all_traffic_influence_resources() return response except ValidationError as e: Loading @@ -146,8 +146,8 @@ def retrieve_location(body: dict): Forwards the request to the SRM which delegates to the configured network adapter. """ try: pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.retrieve_location(body) return response Loading
edge_cloud_management_api/services/edge_cloud_services.py +10 −10 Original line number Diff line number Diff line Loading @@ -9,7 +9,7 @@ proxies = { "https": config.HTTP_PROXY, } class PiEdgeAPIClient: class SRMAPIClient: def __init__(self, base_url, username, password): self.base_url = base_url self.username = username Loading Loading @@ -350,17 +350,17 @@ class PiEdgeAPIClient: error_body = {"error": response.text} return error_body, response.status_code class PiEdgeAPIClientFactory: class SRMAPIClientFactory: """ Factory class to create instances of PiEdgeAPIClient. Factory class to create instances of SRMAPIClient. """ def __init__(self): self.default_base_url = config.SRM_HOST self.default_username = config.PI_EDGE_USERNAME self.default_password = config.PI_EDGE_PASSWORD self.default_username = config.SRM_USERNAME self.default_password = config.SRM_PASSWORD def create_pi_edge_api_client(self, base_url=None, username=None, password=None): def create_srm_api_client(self, base_url=None, username=None, password=None): """ Factory method to create a new SRMAPIClient instance. Loading @@ -370,7 +370,7 @@ class PiEdgeAPIClientFactory: password (str): The password for authentication. If None, the default is used. Returns: PiEdgeAPIClient: A new instance of the PiEdgeAPIClient. SRMAPIClient: A new instance of the SRMAPIClient. """ if base_url is None: base_url = self.default_base_url Loading @@ -379,12 +379,12 @@ class PiEdgeAPIClientFactory: if password is None: password = self.default_password return PiEdgeAPIClient(base_url=base_url, username=username, password=password) return SRMAPIClient(base_url=base_url, username=username, password=password) if __name__ == "__main__": pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_api_client() srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() edge_zones = api_client.edge_cloud_zones() logger.error("Edge zones:", edge_zones)