diff --git a/src/main/java/com/netflix/simianarmy/basic/janitor/BasicJanitorMonkeyContext.java b/src/main/java/com/netflix/simianarmy/basic/janitor/BasicJanitorMonkeyContext.java index 540ee517..62c63a9f 100644 --- a/src/main/java/com/netflix/simianarmy/basic/janitor/BasicJanitorMonkeyContext.java +++ b/src/main/java/com/netflix/simianarmy/basic/janitor/BasicJanitorMonkeyContext.java @@ -193,7 +193,8 @@ private ASGJanitor getASGJanitor() { instanceValidator )); } - if (configuration().getBoolOrElse("simianarmy.janitor.rule.untaggedRule.enabled", false)) { + if (configuration().getBoolOrElse("simianarmy.janitor.rule.untaggedRule.enabled", false) + && getUntaggedRuleResourceSet().contains("ASG")) { ruleEngine.addRule(new UntaggedRule(monkeyCalendar, getPropertySet("simianarmy.janitor.rule.untaggedRule.requiredTags"), (int) configuration().getNumOrElse( "simianarmy.janitor.rule.untaggedRule.retentionDaysWithOwner", 3), @@ -229,7 +230,8 @@ private InstanceJanitor getInstanceJanitor() { "simianarmy.janitor.rule.orphanedInstanceRule.opsworks.parentage", false))); } - if (configuration().getBoolOrElse("simianarmy.janitor.rule.untaggedRule.enabled", false)) { + if (configuration().getBoolOrElse("simianarmy.janitor.rule.untaggedRule.enabled", false) + && getUntaggedRuleResourceSet().contains("INSTANCE")) { ruleEngine.addRule(new UntaggedRule(monkeyCalendar, getPropertySet("simianarmy.janitor.rule.untaggedRule.requiredTags"), (int) configuration().getNumOrElse( "simianarmy.janitor.rule.untaggedRule.retentionDaysWithOwner", 3), @@ -265,7 +267,8 @@ && configuration().getBoolOrElse("simianarmy.janitor.rule.deleteOnTerminationRul "simianarmy.janitor.rule.deleteOnTerminationRule.retentionDays", 3))); } } - if (configuration().getBoolOrElse("simianarmy.janitor.rule.untaggedRule.enabled", false)) { + if (configuration().getBoolOrElse("simianarmy.janitor.rule.untaggedRule.enabled", false) + && getUntaggedRuleResourceSet().contains("EBS_VOLUME")) { ruleEngine.addRule(new UntaggedRule(monkeyCalendar, getPropertySet("simianarmy.janitor.rule.untaggedRule.requiredTags"), (int) configuration().getNumOrElse( "simianarmy.janitor.rule.untaggedRule.retentionDaysWithOwner", 3), @@ -297,7 +300,8 @@ private EBSSnapshotJanitor getEBSSnapshotJanitor() { configuration().getStrOrElse( "simianarmy.janitor.rule.noGeneratedAMIRule.ownerEmail", null))); } - if (configuration().getBoolOrElse("simianarmy.janitor.rule.untaggedRule.enabled", false)) { + if (configuration().getBoolOrElse("simianarmy.janitor.rule.untaggedRule.enabled", false) + && getUntaggedRuleResourceSet().contains("EBS_SNAPSHOT")) { ruleEngine.addRule(new UntaggedRule(monkeyCalendar, getPropertySet("simianarmy.janitor.rule.untaggedRule.requiredTags"), (int) configuration().getNumOrElse( "simianarmy.janitor.rule.untaggedRule.retentionDaysWithOwner", 3), @@ -329,7 +333,8 @@ private LaunchConfigJanitor getLaunchConfigJanitor() { (int) configuration().getNumOrElse( "simianarmy.janitor.rule.oldUnusedLaunchConfigRule.retentionDays", 3))); } - if (configuration().getBoolOrElse("simianarmy.janitor.rule.untaggedRule.enabled", false)) { + if (configuration().getBoolOrElse("simianarmy.janitor.rule.untaggedRule.enabled", false) + && getUntaggedRuleResourceSet().contains("LAUNCH_CONFIG")) { ruleEngine.addRule(new UntaggedRule(monkeyCalendar, getPropertySet("simianarmy.janitor.rule.untaggedRule.requiredTags"), (int) configuration().getNumOrElse( "simianarmy.janitor.rule.untaggedRule.retentionDaysWithOwner", 3), @@ -370,7 +375,8 @@ private ImageJanitor getImageJanitor() { (int) configuration().getNumOrElse( "simianarmy.janitor.rule.unusedImageRule.lastReferenceDaysThreshold", 45))); } - if (configuration().getBoolOrElse("simianarmy.janitor.rule.untaggedRule.enabled", false)) { + if (configuration().getBoolOrElse("simianarmy.janitor.rule.untaggedRule.enabled", false) + && getUntaggedRuleResourceSet().contains("IMAGE")) { ruleEngine.addRule(new UntaggedRule(monkeyCalendar, getPropertySet("simianarmy.janitor.rule.untaggedRule.requiredTags"), (int) configuration().getNumOrElse( "simianarmy.janitor.rule.untaggedRule.retentionDaysWithOwner", 3), @@ -402,6 +408,19 @@ private Set getEnabledResourceSet() { } return enabledResourceSet; } + + private Set getUntaggedRuleResourceSet() { + Set untaggedRuleResourceSet = new HashSet(); + if (configuration().getBoolOrElse("simianarmy.janitor.rule.untaggedRule.enabled", false)) { + String untaggedRuleResources = configuration().getStr("simianarmy.janitor.rule.untaggedRule.resources"); + if (StringUtils.isNotBlank(untaggedRuleResources)) { + for (String resourceType : untaggedRuleResources.split(",")) { + untaggedRuleResourceSet.add(resourceType.trim().toUpperCase()); + } + } + } + return untaggedRuleResourceSet; + } private Set getPropertySet(String property) { Set propertyValueSet = new HashSet(); diff --git a/src/main/resources/janitor.properties b/src/main/resources/janitor.properties index 28211a41..d235f417 100644 --- a/src/main/resources/janitor.properties +++ b/src/main/resources/janitor.properties @@ -67,6 +67,8 @@ simianarmy.janitor.rule.orphanedInstanceRule.opsworks.parentage = false simianarmy.janitor.rule.untaggedRule.enabled = false # List of tags that are required for each resource simianarmy.janitor.rule.untaggedRule.requiredTags = owner, purpose, project +# List of resource types that require tags +simianarmy.janitor.rule.untaggedRule.resources = Instance, ASG, EBS_Volume, EBS_Snapshot, Launch_Config # The number of business days the resource is kept after a notification is sent for the deletion # when the resource has an owner. simianarmy.janitor.rule.untaggedRule.retentionDaysWithOwner = 2