/** * Sends as many emails as there are unique combinations of: * * [mail creator] x [failure email address list] * * Executions with the same combo are grouped into a single message. */ @Override public void alertOnFailedUpdate(final Executor executor, List<ExecutableFlow> flows, final ExecutorManagerException updateException) { flows = flows.stream() .filter(flow -> flow.getExecutionOptions() != null) .filter(flow -> CollectionUtils.isNotEmpty(flow.getExecutionOptions().getFailureEmails())) .collect(Collectors.toList()); // group by mail creator in case some flows use different creators final ImmutableListMultimap<String, ExecutableFlow> creatorsToFlows = Multimaps .index(flows, flow -> flow.getExecutionOptions().getMailCreator()); for (final String mailCreatorName : creatorsToFlows.keySet()) { final ImmutableList<ExecutableFlow> creatorFlows = creatorsToFlows.get(mailCreatorName); final MailCreator mailCreator = getMailCreator(mailCreatorName); // group by recipients in case some flows have different failure email addresses final ImmutableListMultimap<List<String>, ExecutableFlow> emailsToFlows = Multimaps .index(creatorFlows, flow -> flow.getExecutionOptions().getFailureEmails()); for (final List<String> emailList : emailsToFlows.keySet()) { sendFailedUpdateEmail(executor, updateException, mailCreator, emailsToFlows.get(emailList)); } } }
if (flowOptions.getFailureEmails() != null) { final List<String> emails = flowOptions.getFailureEmails(); if (emails.size() > 0) { ret.put("slaEmails", emails);
ret.put("failureEmails", options.getFailureEmails()); ret.put("flowParam", options.getFlowParameters());
final Alerter mailAlerter = alerterHolder.get("email"); if (flow.getStatus() != Status.SUCCEEDED) { if (options.getFailureEmails() != null && !options.getFailureEmails().isEmpty()) { try { mailAlerter.alertOnError(flow, extraReasons);
.alertOnFailedUpdate(eq(this.executor1), eq(Arrays.asList(this.flow1)), any(ExecutorManagerException.class)); assertThat(this.flow1.getExecutionOptions().getFailureEmails()).isEqualTo (Arrays.asList(AZ_ADMIN_ALERT_EMAIL.split(",")));
final List<String> emailList = option.getFailureEmails();
final List<String> emailList = option.getFailureEmails(); final int execId = flow.getExecutionId();
final List<String> emailList = option.getFailureEmails(); final int execId = flow.getExecutionId();
private static void testEquals(final ExecutionOptions optionsA, final ExecutionOptions optionsB) { Assert.assertEquals(optionsA.getConcurrentOption(), optionsB.getConcurrentOption()); Assert.assertEquals(optionsA.getNotifyOnFirstFailure(), optionsB.getNotifyOnFirstFailure()); Assert.assertEquals(optionsA.getNotifyOnLastFailure(), optionsB.getNotifyOnLastFailure()); Assert.assertEquals(optionsA.getFailureAction(), optionsB.getFailureAction()); Assert.assertEquals(optionsA.getPipelineExecutionId(), optionsB.getPipelineExecutionId()); Assert.assertEquals(optionsA.getPipelineLevel(), optionsB.getPipelineLevel()); Assert.assertEquals(optionsA.isFailureEmailsOverridden(), optionsB.isFailureEmailsOverridden()); Assert.assertEquals(optionsA.isSuccessEmailsOverridden(), optionsB.isSuccessEmailsOverridden()); testDisabledEquals(optionsA.getDisabledJobs(), optionsB.getDisabledJobs()); testEquals(optionsA.getSuccessEmails(), optionsB.getSuccessEmails()); testEquals(optionsA.getFailureEmails(), optionsB.getFailureEmails()); testEquals(optionsA.getFlowParameters(), optionsB.getFlowParameters()); }
/** * Sends as many emails as there are unique combinations of: * * [mail creator] x [failure email address list] * * Executions with the same combo are grouped into a single message. */ @Override public void alertOnFailedUpdate(final Executor executor, List<ExecutableFlow> flows, final ExecutorManagerException updateException) { flows = flows.stream() .filter(flow -> flow.getExecutionOptions() != null) .filter(flow -> CollectionUtils.isNotEmpty(flow.getExecutionOptions().getFailureEmails())) .collect(Collectors.toList()); // group by mail creator in case some flows use different creators final ImmutableListMultimap<String, ExecutableFlow> creatorsToFlows = Multimaps .index(flows, flow -> flow.getExecutionOptions().getMailCreator()); for (final String mailCreatorName : creatorsToFlows.keySet()) { final ImmutableList<ExecutableFlow> creatorFlows = creatorsToFlows.get(mailCreatorName); final MailCreator mailCreator = getMailCreator(mailCreatorName); // group by recipients in case some flows have different failure email addresses final ImmutableListMultimap<List<String>, ExecutableFlow> emailsToFlows = Multimaps .index(creatorFlows, flow -> flow.getExecutionOptions().getFailureEmails()); for (final List<String> emailList : emailsToFlows.keySet()) { sendFailedUpdateEmail(executor, updateException, mailCreator, emailsToFlows.get(emailList)); } } }
if(flowOptions.getFailureEmails() != null) { List<String> emails = flowOptions.getFailureEmails(); if(emails.size() > 0) { ret.put("slaEmails", emails);
ret.put("failureEmails", options.getFailureEmails()); ret.put("flowParam", options.getFlowParameters());
if(flow.getStatus() == Status.FAILED || flow.getStatus() == Status.KILLED) if(options.getFailureEmails() != null && !options.getFailureEmails().isEmpty())
if (options.getFailureEmails() != null && !options.getFailureEmails().isEmpty()) { try { mailAlerter.alertOnError(flow);
final List<String> emailList = option.getFailureEmails();
List<String> emailList = option.getFailureEmails(); int execId = flow.getExecutionId();
final List<String> emailList = option.getFailureEmails(); final int execId = flow.getExecutionId();
List<String> emailList = option.getFailureEmails(); int execId = flow.getExecutionId();
final List<String> emailList = option.getFailureEmails(); final int execId = flow.getExecutionId();