def run_alarms()

in elkserver/docker/redelk-base/redelkinstalldata/scripts/daemon.py [0:0]


def run_alarms(alarm_dict):
    """Run the different alarm scripts that are enabled and return the results"""
    logger.info("Running alarm modules")
    # this means we've loaded the modules and will now loop over those one by one
    for alarm_module in alarm_dict:
        if module_should_run(alarm_module, "redelk_alarm"):
            try:
                logger.debug("[a] initiating class Module() in %s", alarm_module)
                module_class = alarm_dict[alarm_module]["m"].Module()
                logger.debug(
                    "[a] Running Run() from the Module class in %s", alarm_module
                )
                alarm_dict[alarm_module]["result"] = copy.deepcopy(module_class.run())
                hits = len(alarm_dict[alarm_module]["result"]["hits"]["hits"])
                module_did_run(
                    alarm_module,
                    "alarm",
                    "success",
                    f"Found {hits} documents to alarm",
                    hits,
                )
                alarm_dict[alarm_module]["status"] = "success"
            # pylint: disable=broad-except
            except Exception as error:
                stack_trace = traceback.format_exc()
                msg = f"Error running alarm {alarm_module}: {error} | StackTrace: {stack_trace}"
                logger.error(msg)
                logger.exception(error)
                module_did_run(alarm_module, "alarm", "error", msg)
                alarm_dict[alarm_module]["status"] = "error"
        else:
            alarm_dict[alarm_module]["status"] = "did_not_run"
    return alarm_dict