def collect_triggers_and_put(self, fetch_id=None, host_ids=None): query = self.__socket.services.columns("plugin_output", "description", "last_state_change", "host_alias", "host_name", "state") if host_ids is not None: filter_condition = "host_name ~ " for host_id in enumerate(host_ids): if host_id[0] == 0: filter_condition += host_id[1] else: filter_condition += "|" + host_id[1] query = query.filter(filter_condition) all_triggers_should_send = lambda: fetch_id is None update_type = "ALL" if all_triggers_should_send(): if self.__trigger_last_info is None: self.__trigger_last_info = self.get_last_info("trigger") if len(self.__trigger_last_info): unix_timestamp = Utils.translate_hatohol_time_to_unix_time(self.__trigger_last_info) query = query.filter("last_state_change >= %s" % unix_timestamp) update_type = "UPDATED" result = query.call() triggers = [] for service in result: hapi_status, hapi_severity = \ self.__parse_status_and_severity(service["state"]) last_state_change = datetime.datetime.fromtimestamp(service["last_state_change"]) hapi_time = Utils.conv_to_hapi_time(last_state_change, self.__time_offset) triggers.append({ "triggerId": service["description"], "status": hapi_status, "severity": hapi_severity, "lastChangeTime": hapi_time, "hostId": service["host_name"], "hostName": service["host_alias"], "brief": service["plugin_output"], "extendedInfo": "" }) self.__trigger_last_info = \ Utils.get_biggest_num_of_dict_array(triggers, "lastChangeTime") self.put_triggers(triggers, update_type=update_type, last_info=self.__trigger_last_info, fetch_id=fetch_id)
def update_triggers(self, host_ids=None, fetch_id=None): if self.__trigger_last_info is None: self.__trigger_last_info = self.get_last_info("trigger") triggers = self.__api.get_triggers(self.__trigger_last_info, host_ids) if not len(triggers): return self.__trigger_last_info = \ Utils.get_biggest_num_of_dict_array(triggers, "lastChangeTime") update_type = "ALL" if fetch_id is not None else "UPDATED" self.put_triggers(triggers, update_type=update_type, last_info=self.__trigger_last_info, fetch_id=fetch_id)