diff --git a/services/TS29222_CAPIF_Events_API/capif_events/app.py b/services/TS29222_CAPIF_Events_API/capif_events/app.py index a4eb7477c05bf2327a43a523732ecf665d7f511f..36aacd7e2f4dbe9a8d6ee9d73b01c32db968a385 100644 --- a/services/TS29222_CAPIF_Events_API/capif_events/app.py +++ b/services/TS29222_CAPIF_Events_API/capif_events/app.py @@ -17,6 +17,7 @@ from multiprocessing import Process from threading import Thread from flask_executor import Executor from flask_apscheduler import APScheduler +from datetime import datetime from logging.handlers import RotatingFileHandler from config import Config import os @@ -144,18 +145,24 @@ if monitoring_value == "true": config = Config() executor = Executor(app.app) subscriber = Subscriber() -# scheduler = APScheduler() -# scheduler.init_app(app.app) +scheduler = APScheduler() +scheduler.init_app(app.app) +scheduler.start() # @app.app.before_first_request # def create_listener_message(): # executor.submit(subscriber.listen) -first = True +# first = True -@app.app.before_request -def create_listener_message(): - global first - if first: - executor.submit(subscriber.listen) - first = False +@scheduler.task('date', id='listener', next_run_time=datetime.now()) +def up_listener(): + with scheduler.app.app_context(): + executor.submit(subscriber.listen()) + +# @app.app.before_request +# def create_listener_message(): +# global first +# if first: +# executor.submit(subscriber.listen) +# first = False 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 ef7c2ceaa199b4b6151ea1129fa42bdb9454bf48..a8c078071b4c567438f0092b4203dea05b2d262a 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.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"}] - ) + # 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 @@ -132,12 +132,12 @@ 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"}] - ) + # 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"}] + # ) result = self.__check_subscriber_id(subscriber_id) 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 27a7f3e075ceab3500ba51ec3428e200f1e8eb4d..353f85e50e6ccb6d77956a5234c6a7ba9d0bc424 100644 --- a/services/TS29222_CAPIF_Events_API/capif_events/core/notifications.py +++ b/services/TS29222_CAPIF_Events_API/capif_events/core/notifications.py @@ -33,25 +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={} + # 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)["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"] + 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)["serviceAPIDescription"] + 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)["apiInvokerIds"] + 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)["accCtrlPolList"] + 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)["invocationLogs"] + 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)["apiTopoHide"] + 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))