4848import com .netflix .simianarmy .aws .janitor .rule .asg .DummyASGInstanceValidator ;
4949import com .netflix .simianarmy .aws .janitor .rule .asg .OldEmptyASGRule ;
5050import com .netflix .simianarmy .aws .janitor .rule .asg .SuspendedASGRule ;
51+ import com .netflix .simianarmy .aws .janitor .rule .generic .UntaggedRule ;
5152import com .netflix .simianarmy .aws .janitor .rule .instance .OrphanedInstanceRule ;
5253import com .netflix .simianarmy .aws .janitor .rule .launchconfig .OldUnusedLaunchConfigRule ;
5354import com .netflix .simianarmy .aws .janitor .rule .snapshot .NoGeneratedAMIRule ;
@@ -192,6 +193,15 @@ private ASGJanitor getASGJanitor() {
192193 instanceValidator
193194 ));
194195 }
196+ if (configuration ().getBoolOrElse ("simianarmy.janitor.rule.untaggedRule.enabled" , false )) {
197+ ruleEngine .addRule (new UntaggedRule (monkeyCalendar , getPropertySet ("simianarmy.janitor.rule.untaggedRule.requiredTags" ),
198+ (int ) configuration ().getNumOrElse (
199+ "simianarmy.janitor.rule.untaggedRule.retentionDaysWithOwner" , 3 ),
200+ (int ) configuration ().getNumOrElse (
201+ "simianarmy.janitor.rule.untaggedRule.retentionDaysWithoutOwner" ,
202+ 8 )));
203+ }
204+
195205 JanitorCrawler crawler ;
196206 if (configuration ().getBoolOrElse ("simianarmy.janitor.edda.enabled" , false )) {
197207 crawler = new EddaASGJanitorCrawler (createEddaClient (), awsClient ().region ());
@@ -219,6 +229,15 @@ private InstanceJanitor getInstanceJanitor() {
219229 "simianarmy.janitor.rule.orphanedInstanceRule.opsworks.parentage" ,
220230 false )));
221231 }
232+ if (configuration ().getBoolOrElse ("simianarmy.janitor.rule.untaggedRule.enabled" , false )) {
233+ ruleEngine .addRule (new UntaggedRule (monkeyCalendar , getPropertySet ("simianarmy.janitor.rule.untaggedRule.requiredTags" ),
234+ (int ) configuration ().getNumOrElse (
235+ "simianarmy.janitor.rule.untaggedRule.retentionDaysWithOwner" , 3 ),
236+ (int ) configuration ().getNumOrElse (
237+ "simianarmy.janitor.rule.untaggedRule.retentionDaysWithoutOwner" ,
238+ 8 )));
239+ }
240+
222241 JanitorCrawler instanceCrawler ;
223242 if (configuration ().getBoolOrElse ("simianarmy.janitor.edda.enabled" , false )) {
224243 instanceCrawler = new EddaInstanceJanitorCrawler (createEddaClient (), awsClient ().region ());
@@ -246,6 +265,15 @@ && configuration().getBoolOrElse("simianarmy.janitor.rule.deleteOnTerminationRul
246265 "simianarmy.janitor.rule.deleteOnTerminationRule.retentionDays" , 3 )));
247266 }
248267 }
268+ if (configuration ().getBoolOrElse ("simianarmy.janitor.rule.untaggedRule.enabled" , false )) {
269+ ruleEngine .addRule (new UntaggedRule (monkeyCalendar , getPropertySet ("simianarmy.janitor.rule.untaggedRule.requiredTags" ),
270+ (int ) configuration ().getNumOrElse (
271+ "simianarmy.janitor.rule.untaggedRule.retentionDaysWithOwner" , 3 ),
272+ (int ) configuration ().getNumOrElse (
273+ "simianarmy.janitor.rule.untaggedRule.retentionDaysWithoutOwner" ,
274+ 8 )));
275+ }
276+
249277 JanitorCrawler volumeCrawler ;
250278 if (configuration ().getBoolOrElse ("simianarmy.janitor.edda.enabled" , false )) {
251279 volumeCrawler = new EddaEBSVolumeJanitorCrawler (createEddaClient (), awsClient ().region ());
@@ -267,6 +295,15 @@ private EBSSnapshotJanitor getEBSSnapshotJanitor() {
267295 (int ) configuration ().getNumOrElse (
268296 "simianarmy.janitor.rule.noGeneratedAMIRule.retentionDays" , 7 )));
269297 }
298+ if (configuration ().getBoolOrElse ("simianarmy.janitor.rule.untaggedRule.enabled" , false )) {
299+ ruleEngine .addRule (new UntaggedRule (monkeyCalendar , getPropertySet ("simianarmy.janitor.rule.untaggedRule.requiredTags" ),
300+ (int ) configuration ().getNumOrElse (
301+ "simianarmy.janitor.rule.untaggedRule.retentionDaysWithOwner" , 3 ),
302+ (int ) configuration ().getNumOrElse (
303+ "simianarmy.janitor.rule.untaggedRule.retentionDaysWithoutOwner" ,
304+ 8 )));
305+ }
306+
270307 JanitorCrawler snapshotCrawler ;
271308 if (configuration ().getBoolOrElse ("simianarmy.janitor.edda.enabled" , false )) {
272309 snapshotCrawler = new EddaEBSSnapshotJanitorCrawler (
@@ -290,6 +327,15 @@ private LaunchConfigJanitor getLaunchConfigJanitor() {
290327 (int ) configuration ().getNumOrElse (
291328 "simianarmy.janitor.rule.oldUnusedLaunchConfigRule.retentionDays" , 3 )));
292329 }
330+ if (configuration ().getBoolOrElse ("simianarmy.janitor.rule.untaggedRule.enabled" , false )) {
331+ ruleEngine .addRule (new UntaggedRule (monkeyCalendar , getPropertySet ("simianarmy.janitor.rule.untaggedRule.requiredTags" ),
332+ (int ) configuration ().getNumOrElse (
333+ "simianarmy.janitor.rule.untaggedRule.retentionDaysWithOwner" , 3 ),
334+ (int ) configuration ().getNumOrElse (
335+ "simianarmy.janitor.rule.untaggedRule.retentionDaysWithoutOwner" ,
336+ 8 )));
337+ }
338+
293339 JanitorCrawler crawler ;
294340 if (configuration ().getBoolOrElse ("simianarmy.janitor.edda.enabled" , false )) {
295341 crawler = new EddaLaunchConfigJanitorCrawler (
@@ -322,6 +368,14 @@ private ImageJanitor getImageJanitor() {
322368 (int ) configuration ().getNumOrElse (
323369 "simianarmy.janitor.rule.unusedImageRule.lastReferenceDaysThreshold" , 45 )));
324370 }
371+ if (configuration ().getBoolOrElse ("simianarmy.janitor.rule.untaggedRule.enabled" , false )) {
372+ ruleEngine .addRule (new UntaggedRule (monkeyCalendar , getPropertySet ("simianarmy.janitor.rule.untaggedRule.requiredTags" ),
373+ (int ) configuration ().getNumOrElse (
374+ "simianarmy.janitor.rule.untaggedRule.retentionDaysWithOwner" , 3 ),
375+ (int ) configuration ().getNumOrElse (
376+ "simianarmy.janitor.rule.untaggedRule.retentionDaysWithoutOwner" ,
377+ 8 )));
378+ }
325379
326380 BasicJanitorContext janitorCtx = new BasicJanitorContext (
327381 monkeyRegion , ruleEngine , crawler , janitorResourceTracker ,
@@ -347,6 +401,17 @@ private Set<String> getEnabledResourceSet() {
347401 return enabledResourceSet ;
348402 }
349403
404+ private Set <String > getPropertySet (String property ) {
405+ Set <String > propertyValueSet = new HashSet <String >();
406+ String propertyValue = configuration ().getStr (property );
407+ if (StringUtils .isNotBlank (propertyValue )) {
408+ for (String propertyValueItem : propertyValue .split ("," )) {
409+ propertyValueSet .add (propertyValueItem .trim ());
410+ }
411+ }
412+ return propertyValueSet ;
413+ }
414+
350415 public JanitorEmailNotifier .Context getJanitorEmailNotifierContext () {
351416 return new JanitorEmailNotifier .Context () {
352417 @ Override
0 commit comments