Loading edge_cloud_management_api/controllers/app_controllers.py +66 −38 Original line number Diff line number Diff line Loading @@ -52,6 +52,52 @@ _resolve_federated_app_identity = resolve_federated_app_identity _resolve_federated_app_provider_id = resolve_federated_app_provider_id def _get_app_provider_for_delete(api_client, app_id): app_response = api_client.get_app(app_id) if not isinstance(app_response, dict): return None 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") return app_provider_id def _cleanup_federated_app_before_local_delete(api_client, app_id): feds = get_all_feds() if not feds: return None app_provider_id = _get_app_provider_for_delete(api_client, app_id) cleanup_response = cleanup_federated_app( federation_client=federation_client, feds=feds, app_id=app_id, app_provider_id=app_provider_id, normalize_federated_app_id=_normalize_federated_app_id, resolve_federated_app_identity=_resolve_federated_app_identity, ) if cleanup_response is None: return None _, cleanup_status = cleanup_response if cleanup_status in (200, 202, 204): return None return cleanup_response def _delete_local_app(api_client, app_id): response = api_client.delete_app(appId=app_id) if isinstance(response, dict): status = int(response.get("status_code", 500)) if status == 404: return None if status >= 400: return jsonify(response), status return "", 204 def _iter_federated_instances(feds, app_id_provider_pairs): return iter_federated_instances(federation_client, feds, app_id_provider_pairs) Loading Loading @@ -134,6 +180,8 @@ def get_app(appId, x_correlator=None): srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.get_app(appId) if isinstance(response, dict) and int(response.get("status_code", 200)) >= 400: return jsonify(response), int(response.get("status_code", 500)) return response except NotFound404Exception: Loading @@ -154,34 +202,14 @@ def delete_app(appId, x_correlator=None): try: srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() feds = get_all_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") if feds: cleanup_response = cleanup_federated_app( federation_client=federation_client, feds=feds, app_id=appId, app_provider_id=app_provider_id, normalize_federated_app_id=_normalize_federated_app_id, resolve_federated_app_identity=_resolve_federated_app_identity, ) cleanup_response = _cleanup_federated_app_before_local_delete(api_client, appId) if cleanup_response is not None: cleanup_body, cleanup_status = cleanup_response if cleanup_status not in (200, 202, 204): return cleanup_response response = api_client.delete_app(appId=appId) if isinstance(response, dict) and int(response.get("status_code", 500)) >= 400: return response return response result = _delete_local_app(api_client, appId) if result is not None: return result return "", 204 except NotFound404Exception: return ( Loading Loading
edge_cloud_management_api/controllers/app_controllers.py +66 −38 Original line number Diff line number Diff line Loading @@ -52,6 +52,52 @@ _resolve_federated_app_identity = resolve_federated_app_identity _resolve_federated_app_provider_id = resolve_federated_app_provider_id def _get_app_provider_for_delete(api_client, app_id): app_response = api_client.get_app(app_id) if not isinstance(app_response, dict): return None 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") return app_provider_id def _cleanup_federated_app_before_local_delete(api_client, app_id): feds = get_all_feds() if not feds: return None app_provider_id = _get_app_provider_for_delete(api_client, app_id) cleanup_response = cleanup_federated_app( federation_client=federation_client, feds=feds, app_id=app_id, app_provider_id=app_provider_id, normalize_federated_app_id=_normalize_federated_app_id, resolve_federated_app_identity=_resolve_federated_app_identity, ) if cleanup_response is None: return None _, cleanup_status = cleanup_response if cleanup_status in (200, 202, 204): return None return cleanup_response def _delete_local_app(api_client, app_id): response = api_client.delete_app(appId=app_id) if isinstance(response, dict): status = int(response.get("status_code", 500)) if status == 404: return None if status >= 400: return jsonify(response), status return "", 204 def _iter_federated_instances(feds, app_id_provider_pairs): return iter_federated_instances(federation_client, feds, app_id_provider_pairs) Loading Loading @@ -134,6 +180,8 @@ def get_app(appId, x_correlator=None): srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() response = api_client.get_app(appId) if isinstance(response, dict) and int(response.get("status_code", 200)) >= 400: return jsonify(response), int(response.get("status_code", 500)) return response except NotFound404Exception: Loading @@ -154,34 +202,14 @@ def delete_app(appId, x_correlator=None): try: srm_factory = SRMAPIClientFactory() api_client = srm_factory.create_srm_api_client() feds = get_all_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") if feds: cleanup_response = cleanup_federated_app( federation_client=federation_client, feds=feds, app_id=appId, app_provider_id=app_provider_id, normalize_federated_app_id=_normalize_federated_app_id, resolve_federated_app_identity=_resolve_federated_app_identity, ) cleanup_response = _cleanup_federated_app_before_local_delete(api_client, appId) if cleanup_response is not None: cleanup_body, cleanup_status = cleanup_response if cleanup_status not in (200, 202, 204): return cleanup_response response = api_client.delete_app(appId=appId) if isinstance(response, dict) and int(response.get("status_code", 500)) >= 400: return response return response result = _delete_local_app(api_client, appId) if result is not None: return result return "", 204 except NotFound404Exception: return ( Loading