diff --git a/src/main/java/com/netflix/simianarmy/basic/janitor/BasicJanitorMonkey.java b/src/main/java/com/netflix/simianarmy/basic/janitor/BasicJanitorMonkey.java index b59f55df..f74a48c8 100644 --- a/src/main/java/com/netflix/simianarmy/basic/janitor/BasicJanitorMonkey.java +++ b/src/main/java/com/netflix/simianarmy/basic/janitor/BasicJanitorMonkey.java @@ -30,6 +30,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.concurrent.atomic.AtomicLong; @@ -202,23 +203,90 @@ protected void sendJanitorSummaryEmail() { } StringBuilder message = new StringBuilder(); for (AbstractJanitor janitor : janitors) { - ResourceType resourceType = janitor.getResourceType(); - appendSummary(message, "markings", resourceType, janitor.getMarkedResources(), janitor.getRegion()); - appendSummary(message, "unmarkings", resourceType, janitor.getUnmarkedResources(), janitor.getRegion()); - appendSummary(message, "cleanups", resourceType, janitor.getCleanedResources(), janitor.getRegion()); - appendSummary(message, "cleanup failures", resourceType, janitor.getFailedToCleanResources(), - janitor.getRegion()); + + appendSummary(message, "markings", janitor); + appendSummary(message, "unmarkings", janitor); + appendSummary(message, "cleanups", janitor); + appendSummary(message, "cleanup failures", janitor); } String subject = getSummaryEmailSubject(); emailNotifier.sendEmail(summaryEmailTarget, subject, message.toString()); } } - private void appendSummary(StringBuilder message, String summaryName, - ResourceType resourceType, Collection resources, String janitorRegion) { - message.append(String.format("Total %s for %s = %d in region %s
", - summaryName, resourceType.name(), resources.size(), janitorRegion)); - message.append(String.format("List: %s
", printResources(resources))); + private void appendSummary(StringBuilder message, String summaryName, AbstractJanitor janitor) { + ResourceType resourceType = janitor.getResourceType(); + String janitorRegion = janitor.getRegion(); + + int count = 0; + Collection resources = new ArrayList<>(); + switch(summaryName) { + case "markings": + count = janitor.getMarkedResourcesCount(); + resources = janitor.getMarkedResources(); + break; + case "unmarkings": + count = janitor.getUnmarkedResourcesCount(); + resources = janitor.getUnmarkedResources(); + break; + case "cleanups": + count = janitor.getResourcesCleanedCount(); + resources = janitor.getCleanedResources(); + break; + case "cleanup failures": + count = janitor.getFailedToCleanResourcesCount(); + resources = janitor.getFailedToCleanResources(); + break; + default: + break; + } + + message.append(String.format("

Total %s for %s = %d in region %s


", + summaryName, resourceType.name(), count, janitorRegion)); + message.append(""); + if (resources.size() > 0) { + message.append("
\n" + + " \n" + + " \n" + + " \n" + + " "); + for (Resource resource: resources) { + if (resourceType.equals(com.netflix.simianarmy.aws.AWSResourceType.INSTANCE)) { + message.append(String.format("", janitorRegion, resource.getId(), resource.getId(), resource.getTerminationReason())); + + } else if (resourceType.equals(com.netflix.simianarmy.aws.AWSResourceType.EBS_VOLUME)) { + message.append(String.format("", janitorRegion, resource.getId(), resource.getId(), resource.getTerminationReason())); + + } else if (resourceType.equals(com.netflix.simianarmy.aws.AWSResourceType.EBS_SNAPSHOT)) { + message.append(String.format("", janitorRegion, resource.getId(), resource.getId(), resource.getTerminationReason())); + + } else if (resourceType.equals(com.netflix.simianarmy.aws.AWSResourceType.ASG)) { + message.append(String.format("", janitorRegion, resource.getId(), resource.getId(), resource.getId(), resource.getTerminationReason())); + + } else if (resourceType.equals(com.netflix.simianarmy.aws.AWSResourceType.LAUNCH_CONFIG)) { + message.append(String.format("", janitorRegion, resource.getId(), resource.getId(), resource.getId(), resource.getTerminationReason())); + + } else if (resourceType.equals(com.netflix.simianarmy.aws.AWSResourceType.S3_BUCKET)) { + message.append(String.format("", janitorRegion, resource.getId(), resource.getId(), resource.getTerminationReason())); + + } else if (resourceType.equals(com.netflix.simianarmy.aws.AWSResourceType.SECURITY_GROUP)) { + message.append(String.format("", janitorRegion, resource.getId(), resource.getId(), resource.getTerminationReason())); + + } else if (resourceType.equals(com.netflix.simianarmy.aws.AWSResourceType.IMAGE)) { + message.append(String.format("", janitorRegion, resource.getId(), resource.getId(), resource.getTerminationReason())); + + } else if (resourceType.equals(com.netflix.simianarmy.aws.AWSResourceType.ELB)) { + message.append(String.format("", janitorRegion, resource.getId(), resource.getId(), resource.getTerminationReason())); + + } else { + message.append(String.format("", resource.getId(), resource.getTerminationReason())); + + } + } + } else { + message.append(String.format("", printResources(resources))); + } + message.append("
ResourceReason
%s%s
%s%s
%s%s
%s%s
%s%s
%s%s
%s%s
%s%s
%s%s
%s%s
%s
"); } private String printResources(Collection resources) {