Commit a78904e8 authored by Pelayo Torres's avatar Pelayo Torres
Browse files

fix events redis

parent 9b544ad2
Loading
Loading
Loading
Loading
Loading
+16 −9
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@ from multiprocessing import Process
from threading import Thread
from threading import Thread
from flask_executor import Executor
from flask_executor import Executor
from flask_apscheduler import APScheduler
from flask_apscheduler import APScheduler
from datetime import datetime
from logging.handlers import RotatingFileHandler
from logging.handlers import RotatingFileHandler
from config import Config
from config import Config
import os
import os
@@ -144,18 +145,24 @@ if monitoring_value == "true":
config = Config()
config = Config()
executor = Executor(app.app)
executor = Executor(app.app)
subscriber = Subscriber()
subscriber = Subscriber()
# scheduler = APScheduler()
scheduler = APScheduler()
# scheduler.init_app(app.app)
scheduler.init_app(app.app)
scheduler.start()


# @app.app.before_first_request
# @app.app.before_first_request
# def create_listener_message():
# def create_listener_message():
#     executor.submit(subscriber.listen)
#     executor.submit(subscriber.listen)


first = True
# first = True


@app.app.before_request
@scheduler.task('date', id='listener', next_run_time=datetime.now())
def create_listener_message():
def up_listener():
    global first
    with scheduler.app.app_context():
    if first:
        executor.submit(subscriber.listen())
        executor.submit(subscriber.listen)

        first = False
# @app.app.before_request
# def create_listener_message():
#     global first
#     if first:
#         executor.submit(subscriber.listen)
#         first = False
+12 −12
Original line number Original line Diff line number Diff line
@@ -54,12 +54,12 @@ class EventSubscriptionsOperations(Resource):
                current_app.logger.error("Bad url format")
                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"}])
                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:
            # if event_subscription.supported_features is None:
                return bad_request_error(
            #     return bad_request_error(
                    detail="supportedFeatures must be present in this request",
            #         detail="supportedFeatures must be present in this request",
                    cause="supportedFeatures missed",
            #         cause="supportedFeatures missed",
                    invalid_params=[{"param": "supportedFeatures", "reason": "not defined"}]
            #         invalid_params=[{"param": "supportedFeatures", "reason": "not defined"}]
                )
            #     )


            ## Verify that this subscriberID exist in publishers or invokers
            ## Verify that this subscriberID exist in publishers or invokers


@@ -132,12 +132,12 @@ class EventSubscriptionsOperations(Resource):


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


            result = self.__check_subscriber_id(subscriber_id)
            result = self.__check_subscriber_id(subscriber_id)


+14 −12
Original line number Original line Diff line number Diff line
@@ -33,22 +33,24 @@ class Notifications():
                current_app.logger.debug(url)
                current_app.logger.debug(url)
                data = EventNotification(sub["subscription_id"], events=redis_event.get('event'))
                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 redis_event.get('key', None) != None and redis_event.get('information', None) != None:
                    if EventSubscription.return_supp_feat_dict(sub["supported_features"])["EnhancedEventReport"]:
                    # if EventSubscription.return_supp_feat_dict(sub["supported_features"])["EnhancedEventReport"]:
                    event_detail={}
                    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"]:
                        if redis_event.get('event', None) in ["SERVICE_API_AVAILABLE", "SERVICE_API_UNAVAILABLE"]:
                            event_detail["apiIds"]=redis_event.get('information', None)["apiIds"]
                            event_detail["apiIds"]=[redis_event.get('information', None)[pos]]
                            if EventSubscription.return_supp_feat_dict(sub["supported_features"])["ApiStatusMonitoring"] and  "serviceAPIDescriptions" in redis_event.get('key', None):
                            # if EventSubscription.return_supp_feat_dict(sub["supported_features"])["ApiStatusMonitoring"] and  "serviceAPIDescriptions" in information:
                                event_detail["serviceAPIDescriptions"]=redis_event.get('information', None)["serviceAPIDescription"]
                            #     event_detail["serviceAPIDescriptions"]=information["serviceAPIDescription"]
                        elif redis_event.get('event', None) in ["SERVICE_API_UPDATE"]:
                        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"]:
                        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"]:
                        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"]:
                        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"]:
                        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)
                    current_app.logger.debug(event_detail)
                    data.event_detail=event_detail
                    data.event_detail=event_detail