diff --git a/core/tt/base.py b/core/tt/base.py index 32739a26162dcccf3dd3c3d05c63edec2e1c168c..3462b7fff666f8c1371fcfa273e8b6cf841f5c7b 100644 --- a/core/tt/base.py +++ b/core/tt/base.py @@ -90,7 +90,7 @@ class BaseTTSystem(object): """ raise NotImplementedError() - def close_tt(self, tt_id, subject=None, body=None, reason=None, login=None): + def close_tt(self, tt_id, subject=None, body=None, reason=None, login=None, queue=None): """ Close TT :param tt_id: TT id, as returned by create_tt @@ -98,18 +98,20 @@ class BaseTTSystem(object): :param body: Closing message body :param reason: Final reason :param login: User login + :param queue: ticket queue :returns: Boolean. True, when alarm is closed properly :raises TTError: """ raise NotImplementedError() - def add_comment(self, tt_id, subject=None, body=None, login=None): + def add_comment(self, tt_id, subject=None, body=None, login=None, queue=None): """ Append comment to TT :param tt_id: TT id, as returned by create_tt :param subject: Closing message subject :param body: Closing message body :param login: User login + :param queue: ticket queue :raises TTError: """ raise NotImplementedError() diff --git a/fm/models/activealarm.py b/fm/models/activealarm.py index 3c9b10b647484f6f669ce1cdb3476fa515284acd..25db1e31e97dfcddb981b21d190d311dbe45ec00 100644 --- a/fm/models/activealarm.py +++ b/fm/models/activealarm.py @@ -337,6 +337,8 @@ class ActiveAlarm(Document): if self.clear_notification_group else None, close_tt=self.close_tt, + login="correlator", + queue=a.managed_object.tt_queue, ) # Gather diagnostics AlarmDiagnosticConfig.on_clear(a) diff --git a/services/escalator/escalation.py b/services/escalator/escalation.py index dff9da453290f712c1d298ade03f488d6ffb1fac..63b179fa3f71c1b9d3abb05d010ec8d4774f6936 100644 --- a/services/escalator/escalation.py +++ b/services/escalator/escalation.py @@ -41,7 +41,7 @@ retry_lock = threading.Lock() next_retry = datetime.datetime.now() -def escalate(alarm_id, escalation_id, escalation_delay, *args, **kwargs): +def escalate(alarm_id, escalation_id, escalation_delay, login="correlator", *args, **kwargs): def log(message, *args): msg = message % args logger.info("[%s] %s", alarm_id, msg) @@ -187,7 +187,7 @@ def escalate(alarm_id, escalation_id, escalation_delay, *args, **kwargs): reason=pre_reason, subject=subject, body=body, - login="correlator", + login=login, timestamp=alarm.timestamp, ) except TemporaryTTError as e: @@ -247,7 +247,10 @@ def escalate(alarm_id, escalation_id, escalation_delay, *args, **kwargs): try: log("Appending comment to TT %s", tt_id) tts.add_comment( - c_tt_id, body="Covered by TT %s" % tt_id, login="correlator" + c_tt_id, + body="Covered by TT %s" % tt_id, + login=login, + queue=mo.tt_queue, ) metrics["escalation_tt_comment"] += 1 except NotImplementedError: @@ -294,17 +297,22 @@ def escalate(alarm_id, escalation_id, escalation_delay, *args, **kwargs): if alarm.clear_notification_group else None, close_tt=alarm.close_tt, + login=login, + queue=mo.tt_queue, ) elif nalarm == "A" and not nalarm.escalation_tt and tt_id: logger.error("[%s] Alarm without escalation TT: %s", alarm.id, tt_id) logger.info("[%s] Escalations loop end", alarm_id) -def notify_close(alarm_id, tt_id, subject, body, notification_group_id, close_tt=False): +def notify_close( + alarm_id, tt_id, subject, body, notification_group_id, close_tt=False, login=None, queue=None +): def log(message, *args): msg = message % args logger.info("[%s] %s", alarm_id, msg) + login = login or "correlator" if tt_id: alarm = get_alarm(alarm_id) alarm.set_escalation_close_ctx() @@ -325,7 +333,7 @@ def notify_close(alarm_id, tt_id, subject, body, notification_group_id, close_tt # Close tt try: log("Closing TT %s", tt_id) - tts.close_tt(c_tt_id, subject=subject, body=body, login="correlator") + tts.close_tt(c_tt_id, subject=subject, body=body, login=login, queue=queue) metrics["escalation_tt_close"] += 1 if alarm: alarm.close_escalation() @@ -349,7 +357,9 @@ def notify_close(alarm_id, tt_id, subject, body, notification_group_id, close_tt # Append comment to tt try: log("Appending comment to TT %s", tt_id) - tts.add_comment(c_tt_id, subject=subject, body=body, login="correlator") + tts.add_comment( + c_tt_id, subject=subject, body=body, login=login, queue=queue + ) metrics["escalation_tt_comment"] += 1 except TTError as e: log("Failed to add comment to %s: %s", tt_id, e) diff --git a/services/escalator/tt/stub.py b/services/escalator/tt/stub.py index b5462fcfacdcdd21659663b8a0af2e73539995c6..17634dba01af847a8205dc95becdb20ba3ca2651 100644 --- a/services/escalator/tt/stub.py +++ b/services/escalator/tt/stub.py @@ -41,7 +41,7 @@ class StubTTSystem(BaseTTSystem): ) return str(uuid.uuid4()) - def add_comment(self, tt_id, subject=None, body=None, login=None): + def add_comment(self, tt_id, subject=None, body=None, login=None, queue=None): self.logger.info( "add_comment(tt_id=%s, subject=%s, body=%s, login=%s)", tt_id, subject, body, login ) @@ -63,7 +63,7 @@ class StubTTSystem(BaseTTSystem): """ self.logger.info("Object %s appended to group TT %s", obj, gtt_id) - def close_tt(self, tt_id, subject=None, body=None, reason=None, login=None): + def close_tt(self, tt_id, subject=None, body=None, reason=None, login=None, queue=None): """ Close TT :param tt_id: TT id, as returned by create_tt @@ -71,6 +71,7 @@ class StubTTSystem(BaseTTSystem): :param body: Closing message body :param reason: Final reason :param login: User login + :param queue: ticket queue :returns: Boolean. True, when alarm is closed properly :raises TTError: """