From da5cc31dc9ae3bf82fa022a491c2f79827014b64 Mon Sep 17 00:00:00 2001 From: Pelayo Torres Date: Mon, 2 Dec 2024 13:26:36 +0100 Subject: [PATCH] fix supported features apiStatusMonitoring --- .../capif_events/core/events_apis.py | 12 +++--- .../capif_events/core/notifications.py | 40 +++++++++---------- .../core/serviceapidescriptions.py | 40 +++++++------------ 3 files changed, 40 insertions(+), 52 deletions(-) diff --git a/services/TS29222_CAPIF_Events_API/capif_events/core/events_apis.py b/services/TS29222_CAPIF_Events_API/capif_events/core/events_apis.py index a8c07807..33620c84 100644 --- a/services/TS29222_CAPIF_Events_API/capif_events/core/events_apis.py +++ b/services/TS29222_CAPIF_Events_API/capif_events/core/events_apis.py @@ -54,12 +54,12 @@ class EventSubscriptionsOperations(Resource): current_app.logger.error("Bad url format") return bad_request_error(detail="Bad Param", cause = "Detected Bad formar of param", invalid_params=[{"param": "notificationDestination", "reason": "Not valid URL format"}]) - # if event_subscription.supported_features is None: - # return bad_request_error( - # detail="supportedFeatures must be present in this request", - # cause="supportedFeatures missed", - # invalid_params=[{"param": "supportedFeatures", "reason": "not defined"}] - # ) + if event_subscription.supported_features is None: + return bad_request_error( + detail="supportedFeatures must be present in this request", + cause="supportedFeatures missed", + invalid_params=[{"param": "supportedFeatures", "reason": "not defined"}] + ) ## Verify that this subscriberID exist in publishers or invokers diff --git a/services/TS29222_CAPIF_Events_API/capif_events/core/notifications.py b/services/TS29222_CAPIF_Events_API/capif_events/core/notifications.py index 353f85e5..f5379172 100644 --- a/services/TS29222_CAPIF_Events_API/capif_events/core/notifications.py +++ b/services/TS29222_CAPIF_Events_API/capif_events/core/notifications.py @@ -33,27 +33,27 @@ class Notifications(): current_app.logger.debug(url) data = EventNotification(sub["subscription_id"], events=redis_event.get('event')) if redis_event.get('key', None) != None and redis_event.get('information', None) != None: - # if EventSubscription.return_supp_feat_dict(sub["supported_features"])["EnhancedEventReport"]: - event_detail={} - for pos, key in enumerate(redis_event.get('key', None)): - current_app.logger.debug(f"information: {redis_event.get('information', None)[pos]}") - if redis_event.get('event', None) in ["SERVICE_API_AVAILABLE", "SERVICE_API_UNAVAILABLE"]: - event_detail["apiIds"]=[redis_event.get('information', None)[pos]] - # if EventSubscription.return_supp_feat_dict(sub["supported_features"])["ApiStatusMonitoring"] and "serviceAPIDescriptions" in information: - # event_detail["serviceAPIDescriptions"]=information["serviceAPIDescription"] - elif redis_event.get('event', None) in ["SERVICE_API_UPDATE"]: - event_detail["serviceAPIDescriptions"]=redis_event.get('information', None)[pos] - elif redis_event.get('event', None) in ["API_INVOKER_ONBOARDED", "API_INVOKER_OFFBOARDED", "API_INVOKER_UPDATED"]: - event_detail["apiInvokerIds"]=redis_event.get('information', None)[pos] - elif redis_event.get('event', None) in ["ACCESS_CONTROL_POLICY_UPDATE"]: - event_detail["accCtrlPolList"]=redis_event.get('information', None)[pos] - elif redis_event.get('event', None) in ["SERVICE_API_INVOCATION_SUCCESS", "SERVICE_API_INVOCATION_FAILURE"]: - event_detail["invocationLogs"]=redis_event.get('information', None)[pos] - elif redis_event.get('event', None) in ["API_TOPOLOGY_HIDING_CREATED", "API_TOPOLOGY_HIDING_REVOKED"]: - event_detail["apiTopoHide"]=redis_event.get('information', None)[pos] + if EventSubscription.return_supp_feat_dict(sub["supported_features"])["EnhancedEventReport"]: + event_detail={} + for pos, key in enumerate(redis_event.get('key', None)): + current_app.logger.debug(f"information: {redis_event.get('information', None)[pos]}") + if redis_event.get('event', None) in ["SERVICE_API_AVAILABLE", "SERVICE_API_UNAVAILABLE"] and key == "apiIds": + event_detail["apiIds"]=[redis_event.get('information', None)[pos]] + elif EventSubscription.return_supp_feat_dict(sub["supported_features"])["ApiStatusMonitoring"] and key == "serviceAPIDescriptions": + event_detail["serviceAPIDescriptions"]=redis_event.get('information', None)[pos] + elif redis_event.get('event', None) in ["SERVICE_API_UPDATE"]: + event_detail["serviceAPIDescriptions"]=redis_event.get('information', None)[pos] + elif redis_event.get('event', None) in ["API_INVOKER_ONBOARDED", "API_INVOKER_OFFBOARDED", "API_INVOKER_UPDATED"]: + event_detail["apiInvokerIds"]=redis_event.get('information', None)[pos] + elif redis_event.get('event', None) in ["ACCESS_CONTROL_POLICY_UPDATE"]: + event_detail["accCtrlPolList"]=redis_event.get('information', None)[pos] + elif redis_event.get('event', None) in ["SERVICE_API_INVOCATION_SUCCESS", "SERVICE_API_INVOCATION_FAILURE"]: + event_detail["invocationLogs"]=redis_event.get('information', None)[pos] + elif redis_event.get('event', None) in ["API_TOPOLOGY_HIDING_CREATED", "API_TOPOLOGY_HIDING_REVOKED"]: + event_detail["apiTopoHide"]=redis_event.get('information', None)[pos] - current_app.logger.debug(event_detail) - data.event_detail=event_detail + current_app.logger.debug(event_detail) + data.event_detail=event_detail current_app.logger.debug(json.dumps(data.to_dict(),cls=CustomJSONEncoder)) diff --git a/services/TS29222_CAPIF_Publish_Service_API/published_apis/core/serviceapidescriptions.py b/services/TS29222_CAPIF_Publish_Service_API/published_apis/core/serviceapidescriptions.py index c9714caa..4a05a007 100644 --- a/services/TS29222_CAPIF_Publish_Service_API/published_apis/core/serviceapidescriptions.py +++ b/services/TS29222_CAPIF_Publish_Service_API/published_apis/core/serviceapidescriptions.py @@ -132,39 +132,27 @@ class PublishServiceOperations(Resource): if res.status_code == 201: current_app.logger.info("Service published") if serviceapidescription.api_status is None or len(serviceapidescription.api_status.aef_ids) > 0: - if serviceapidescription.supported_features is not None: - if serviceapidescription.return_supp_feat_dict(serviceapidescription.supported_features)["ApiStatusMonitoring"]: - current_app.logger.info(f"Service available") - RedisEvent("SERVICE_API_AVAILABLE", - ["serviceAPIDescriptions", "apiIds"], - [[clean_n_camel_case(serviceapidescription.to_dict())], [str(api_id)]]).send_event() - else: - current_app.logger.info("Service available") - RedisEvent("SERVICE_API_AVAILABLE", - ["apiIds"], - [str(api_id)]).send_event() + if serviceapidescription.return_supp_feat_dict(serviceapidescription.supported_features)["ApiStatusMonitoring"]: + current_app.logger.info(f"Service available") + RedisEvent("SERVICE_API_AVAILABLE", + ["serviceAPIDescriptions", "apiIds"], + [[clean_n_camel_case(serviceapidescription.to_dict())], [str(api_id)]]).send_event() else: current_app.logger.info("Service available") RedisEvent("SERVICE_API_AVAILABLE", - ["apiIds"], - [str(api_id)]).send_event() + ["apiIds"], + [str(api_id)]).send_event() else: - if serviceapidescription.supported_features is not None: - if serviceapidescription.return_supp_feat_dict(serviceapidescription.supported_features)["ApiStatusMonitoring"]: - current_app.logger.info(f"Service unavailable") - RedisEvent("SERVICE_API_UNAVAILABLE", - ["serviceAPIDescriptions", "apiIds"], - [[clean_n_camel_case(serviceapidescription.to_dict())], [str(api_id)]]).send_event() - else: - current_app.logger.info("Service available") - RedisEvent("SERVICE_API_UNAVAILABLE", - ["apiIds"], - [str(api_id)]).send_event() + if serviceapidescription.return_supp_feat_dict(serviceapidescription.supported_features)["ApiStatusMonitoring"]: + current_app.logger.info(f"Service unavailable") + RedisEvent("SERVICE_API_UNAVAILABLE", + ["serviceAPIDescriptions", "apiIds"], + [[clean_n_camel_case(serviceapidescription.to_dict())], [str(api_id)]]).send_event() else: current_app.logger.info("Service available") RedisEvent("SERVICE_API_UNAVAILABLE", - ["apiIds"], - [str(api_id)]).send_event() + ["apiIds"], + [str(api_id)]).send_event() return res -- GitLab