Commit 79cbeb6a authored by Pelayo Torres's avatar Pelayo Torres
Browse files

Events Logic notifications

parent f32e1e5b
Loading
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -54,6 +54,13 @@ 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.supportedFeatures 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

            result = self.__check_subscriber_id(subscriber_id)
@@ -125,6 +132,13 @@ class EventSubscriptionsOperations(Resource):

            current_app.logger.debug("Updating event subscription")
            
            if event_subscription.supportedFeatures is None:
                return bad_request_error(
                    detail="supportedFeatures must be present in this request",
                    cause="supportedFeatures missed",
                    invalid_params=[{"param": "supportedFeatures", "reason": "not defined"}]
                )

            result = self.__check_subscriber_id(subscriber_id)

            if  isinstance(result, Response):
+18 −11
Original line number Diff line number Diff line
@@ -33,15 +33,22 @@ 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)):

                        if sub["supported_features"] is None:
                            if not (key == "serviceAPIDescriptions" and redis_event.get('event', None) in ["SERVICE_API_AVAILABLE", "SERVICE_API_UNAVAILABLE"]):
                                event_detail[key]=redis_event.get('information', None)[pos]
                        else:
                            if not (redis_event.get('event', None) in ["SERVICE_API_AVAILABLE", "SERVICE_API_UNAVAILABLE"] and key == "serviceAPIDescriptions" and (not EventSubscription.return_supp_feat_dict(sub["supported_features"])["ApiStatusMonitoring"] or not EventSubscription.return_supp_feat_dict(sub["supported_features"])["EnhancedEventReport"])):
                                event_detail[key]=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)["apiIds"]
                            if EventSubscription.return_supp_feat_dict(sub["supported_features"])["ApiStatusMonitoring"] and  "serviceAPIDescriptions" in redis_event.get('key', None):
                                event_detail["serviceAPIDescriptions"]=redis_event.get('information', None)["serviceAPIDescription"]
                        elif redis_event.get('event', None) in ["SERVICE_API_UPDATE"]:
                            event_detail["serviceAPIDescriptions"]=redis_event.get('information', None)["serviceAPIDescription"]
                        elif redis_event.get('event', None) in ["API_INVOKER_ONBOARDED", "API_INVOKER_OFFBOARDED", "API_INVOKER_UPDATED"]:
                            event_detail["apiInvokerIds"]=redis_event.get('information', None)["apiInvokerIds"]
                        elif redis_event.get('event', None) in ["ACCESS_CONTROL_POLICY_UPDATE"]:
                            event_detail["accCtrlPolList"]=redis_event.get('information', None)["accCtrlPolList"]
                        elif redis_event.get('event', None) in ["SERVICE_API_INVOCATION_SUCCESS", "SERVICE_API_INVOCATION_FAILURE"]:
                            event_detail["invocationLogs"]=redis_event.get('information', None)["invocationLogs"]
                        elif redis_event.get('event', None) in ["API_TOPOLOGY_HIDING_CREATED", "API_TOPOLOGY_HIDING_REVOKED"]:
                            event_detail["apiTopoHide"]=redis_event.get('information', None)["apiTopoHide"]

                        current_app.logger.debug(event_detail)
                        data.event_detail=event_detail