Loading edge_cloud_management_api/controllers/app_controllers.py +62 −7 Original line number Diff line number Diff line Loading @@ -151,6 +151,61 @@ def delete_app(appId, x_correlator=None): pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_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") else: return response feds = get_all_feds() if feds: app_provider_id = None app_response = api_client.get_app(appId) if isinstance(app_response, dict): app_provider_id = app_response.get("appProvider") or app_response.get("appProviderId") manifest = app_response.get("appManifest") if isinstance(manifest, dict) and not app_provider_id: app_provider_id = manifest.get("appProvider") or manifest.get("appProviderId") for fed in feds: fed_token = fed.get("token") federation_context_id = fed.get("_id") if not federation_context_id or not fed_token: continue if app_provider_id: fed_instances, fed_code = federation_client.get_all_app_instances( federation_context_id=federation_context_id, app_id=appId, app_provider_id=app_provider_id, token=fed_token, ) if fed_code == 200 and isinstance(fed_instances, list): for zone_info in fed_instances: if not isinstance(zone_info, dict): continue zone_id = zone_info.get("zoneId") instances_list = zone_info.get("appInstanceInfo", []) if not zone_id or not isinstance(instances_list, list): continue for instance in instances_list: if not isinstance(instance, dict): continue instance_id = instance.get("appInstIdentifier") if not instance_id: continue federation_client.remove_app_instance( federation_context_id=federation_context_id, app_id=appId, app_instance_id=instance_id, zone_id=zone_id, token=fed_token, ) remove_response, remove_status = federation_client.delete_onboarded_app( federation_context_id, appId, fed_token ) if remove_status in (200, 202, 204): return jsonify(remove_response), remove_status return response except NotFound404Exception: Loading Loading
edge_cloud_management_api/controllers/app_controllers.py +62 −7 Original line number Diff line number Diff line Loading @@ -151,6 +151,61 @@ def delete_app(appId, x_correlator=None): pi_edge_factory = PiEdgeAPIClientFactory() api_client = pi_edge_factory.create_pi_edge_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") else: return response feds = get_all_feds() if feds: app_provider_id = None app_response = api_client.get_app(appId) if isinstance(app_response, dict): app_provider_id = app_response.get("appProvider") or app_response.get("appProviderId") manifest = app_response.get("appManifest") if isinstance(manifest, dict) and not app_provider_id: app_provider_id = manifest.get("appProvider") or manifest.get("appProviderId") for fed in feds: fed_token = fed.get("token") federation_context_id = fed.get("_id") if not federation_context_id or not fed_token: continue if app_provider_id: fed_instances, fed_code = federation_client.get_all_app_instances( federation_context_id=federation_context_id, app_id=appId, app_provider_id=app_provider_id, token=fed_token, ) if fed_code == 200 and isinstance(fed_instances, list): for zone_info in fed_instances: if not isinstance(zone_info, dict): continue zone_id = zone_info.get("zoneId") instances_list = zone_info.get("appInstanceInfo", []) if not zone_id or not isinstance(instances_list, list): continue for instance in instances_list: if not isinstance(instance, dict): continue instance_id = instance.get("appInstIdentifier") if not instance_id: continue federation_client.remove_app_instance( federation_context_id=federation_context_id, app_id=appId, app_instance_id=instance_id, zone_id=zone_id, token=fed_token, ) remove_response, remove_status = federation_client.delete_onboarded_app( federation_context_id, appId, fed_token ) if remove_status in (200, 202, 204): return jsonify(remove_response), remove_status return response except NotFound404Exception: Loading