diff --git a/ArgusCore/src/main/java/com/salesforce/dva/argus/service/alert/notifier/AuditNotifier.java b/ArgusCore/src/main/java/com/salesforce/dva/argus/service/alert/notifier/AuditNotifier.java index cdf397a95..e10519dfb 100644 --- a/ArgusCore/src/main/java/com/salesforce/dva/argus/service/alert/notifier/AuditNotifier.java +++ b/ArgusCore/src/main/java/com/salesforce/dva/argus/service/alert/notifier/AuditNotifier.java @@ -160,7 +160,7 @@ protected String getAuditBody(NotificationContext context, NotificationStatus no if(!trigger.getType().equals(TriggerType.NO_DATA)){ sb.append(MessageFormat.format("Triggered on Metric: {0}
", context.getTriggeredMetric().getIdentifier())); } - sb.append(MessageFormat.format("Trigger details: {0}
", getTriggerDetails(trigger))); + sb.append(MessageFormat.format("Trigger details: {0}
", getTriggerDetails(trigger, context))); if(!trigger.getType().equals(TriggerType.NO_DATA)){ sb.append(MessageFormat.format("Triggering event value: {0}
", context.getTriggerEventValue())); } @@ -180,9 +180,10 @@ protected String getAuditBody(NotificationContext context, NotificationStatus no * * @return The trigger detail information. */ - protected String getTriggerDetails(Trigger trigger) { + protected String getTriggerDetails(Trigger trigger, NotificationContext context) { if (trigger != null) { String triggerString = trigger.toString(); + triggerString = replaceTemplatesInTriggerName(triggerString, context.getTriggeredMetric().getScope(), context.getTriggeredMetric().getMetric(), context.getTriggeredMetric().getTags()); return triggerString.substring(triggerString.indexOf("{") + 1, triggerString.indexOf("}")); } else { diff --git a/ArgusCore/src/main/java/com/salesforce/dva/argus/service/alert/notifier/DefaultNotifier.java b/ArgusCore/src/main/java/com/salesforce/dva/argus/service/alert/notifier/DefaultNotifier.java index 959077ab7..85b2b5718 100644 --- a/ArgusCore/src/main/java/com/salesforce/dva/argus/service/alert/notifier/DefaultNotifier.java +++ b/ArgusCore/src/main/java/com/salesforce/dva/argus/service/alert/notifier/DefaultNotifier.java @@ -112,24 +112,30 @@ private Map getLowerCaseTagMap(final Map tags) return lowerCaseTagMap; } - /* - * Finds all the templates like ${scope}, ${metric} and replaces it with the required fields. - * If no matches are found, nothing is done. Should be a protected function, making public for unit testing. - * */ - public String getDisplayTriggerName(NotificationContext context) { - String newTriggerName = context.getTrigger().getName(); - Metric triggeredMetric = context.getTriggeredMetric(); - newTriggerName = newTriggerName.replaceAll("(?i)\\$\\{scope\\}", triggeredMetric.getScope()); - newTriggerName = newTriggerName.replaceAll("(?i)\\$\\{metric\\}", triggeredMetric.getMetric()); - Map tags = triggeredMetric.getTags(); + public String replaceTemplatesInTriggerName(String triggerName, String scope, String metric, Map tags) { + triggerName = triggerName.replaceAll("(?i)\\$\\{scope\\}", scope); + triggerName = triggerName.replaceAll("(?i)\\$\\{metric\\}", metric); Map lowerCaseTagMap = getLowerCaseTagMap(tags); - Matcher m = Pattern.compile("(?i)\\$\\{.*?\\}").matcher(newTriggerName); + Matcher m = Pattern.compile("(?i)\\$\\{.*?\\}").matcher(triggerName); while (m.find()) { String currentRegex = m.group(), currentTagKey = currentRegex.substring(2, currentRegex.length()-1).toLowerCase(); if (lowerCaseTagMap.containsKey(currentTagKey)) - newTriggerName = newTriggerName.replace(currentRegex, lowerCaseTagMap.get(currentTagKey)); + triggerName = triggerName.replace(currentRegex, lowerCaseTagMap.get(currentTagKey)); } - return newTriggerName; + return triggerName; + + } + + /* + * Finds all the templates like ${scope}, ${metric} and replaces it with the required fields. + * If no matches are found, nothing is done. Should be a protected function, making public for unit testing. + * */ + protected String getDisplayTriggerName(NotificationContext context) { + String triggerName = context.getTrigger().getName(); + Metric triggeredMetric = context.getTriggeredMetric(); + String scope = triggeredMetric.getScope(), metric = triggeredMetric.getMetric(); + Map tags = triggeredMetric.getTags(); + return replaceTemplatesInTriggerName(triggerName, scope, metric, tags); } private void _createAnnotation(NotificationContext notificationContext, Map additionalFields) { diff --git a/ArgusCore/src/main/java/com/salesforce/dva/argus/service/alert/notifier/EmailNotifier.java b/ArgusCore/src/main/java/com/salesforce/dva/argus/service/alert/notifier/EmailNotifier.java index 5914141fa..9056d6127 100644 --- a/ArgusCore/src/main/java/com/salesforce/dva/argus/service/alert/notifier/EmailNotifier.java +++ b/ArgusCore/src/main/java/com/salesforce/dva/argus/service/alert/notifier/EmailNotifier.java @@ -176,7 +176,7 @@ protected String getEmailBody(NotificationContext context, NotificationStatus no if(!trigger.getType().equals(TriggerType.NO_DATA)){ sb.append(MessageFormat.format("Triggered on Metric: {0}
", context.getTriggeredMetric().getIdentifier())); } - sb.append(MessageFormat.format("Trigger details: {0}
", getTriggerDetails(trigger))); + sb.append(MessageFormat.format("Trigger details: {0}
", getTriggerDetails(trigger, context))); if(!trigger.getType().equals(TriggerType.NO_DATA)){ sb.append(MessageFormat.format("Triggering event value: {0}
", context.getTriggerEventValue())); } diff --git a/ArgusCore/src/main/java/com/salesforce/dva/argus/service/alert/notifier/GOCNotifier.java b/ArgusCore/src/main/java/com/salesforce/dva/argus/service/alert/notifier/GOCNotifier.java index bb729041c..ae0ce64e0 100644 --- a/ArgusCore/src/main/java/com/salesforce/dva/argus/service/alert/notifier/GOCNotifier.java +++ b/ArgusCore/src/main/java/com/salesforce/dva/argus/service/alert/notifier/GOCNotifier.java @@ -279,7 +279,7 @@ protected String getGOCMessageBody(Notification notification, Trigger trigger, N if(!trigger.getType().equals(TriggerType.NO_DATA)){ sb.append(MessageFormat.format("Triggered on Metric: {0}\n", context.getTriggeredMetric().getIdentifier())); } - sb.append(MessageFormat.format("Trigger details: {0}\n", getTriggerDetails(trigger))); + sb.append(MessageFormat.format("Trigger details: {0}\n", getTriggerDetails(trigger, context))); if(!trigger.getType().equals(TriggerType.NO_DATA)){ sb.append(MessageFormat.format("Triggering event value: {0}\n", context.getTriggerEventValue())); } diff --git a/ArgusCore/src/main/java/com/salesforce/dva/argus/service/alert/notifier/GusNotifier.java b/ArgusCore/src/main/java/com/salesforce/dva/argus/service/alert/notifier/GusNotifier.java index f4cec7107..cdd5f1ae0 100644 --- a/ArgusCore/src/main/java/com/salesforce/dva/argus/service/alert/notifier/GusNotifier.java +++ b/ArgusCore/src/main/java/com/salesforce/dva/argus/service/alert/notifier/GusNotifier.java @@ -156,7 +156,7 @@ private String generateGusFeed(Notification notification, Trigger trigger, Notif String triggerName = getDisplayTriggerName(context); String notificationCooldownExpiraton = DATE_FORMATTER.get().format(new Date(context.getCoolDownExpiration())); String metricExpression = context.getAlert().getExpression(); - String triggerDetails = getTriggerDetails(trigger); + String triggerDetails = getTriggerDetails(trigger, context); double triggerEventValue = context.getTriggerEventValue(); if(context.getNotification().getCustomText() != null && context.getNotification().getCustomText().length()>0){ sb.append(context.getNotification().getCustomText()).append("\n>"); diff --git a/ArgusCore/src/test/java/com/salesforce/dva/argus/service/NotifierTest.java b/ArgusCore/src/test/java/com/salesforce/dva/argus/service/NotifierTest.java index 96764af86..b95091c64 100644 --- a/ArgusCore/src/test/java/com/salesforce/dva/argus/service/NotifierTest.java +++ b/ArgusCore/src/test/java/com/salesforce/dva/argus/service/NotifierTest.java @@ -103,7 +103,7 @@ public void testUpdatingTriggerName() { Notifier notifier = system.getServiceFactory().getAlertService().getNotifier(SupportedNotifier.GOC); notifier.sendNotification(context); assertEquals("${sCopE}-trigger_name-${MEtriC}-trigger_metric-${tag1}-trigger_tag1-${tag2}-trigger_tag2-${tag3}-${tAg2}", context.getTrigger().getName()); - assertEquals("scope-trigger_name-metric-trigger_metric-val1-trigger_tag1-val2-trigger_tag2-${tag3}-val2", system.getNotifierFactory().getGOCNotifier().getDisplayTriggerName(context)); + assertEquals("scope-trigger_name-metric-trigger_metric-val1-trigger_tag1-val2-trigger_tag2-${tag3}-val2", system.getNotifierFactory().getGOCNotifier().replaceTemplatesInTriggerName(context.getTrigger().getName(), "scope", "metric", tags)); }