diff --git a/lib/mongolly/extensions/mongo/mongo_client.rb b/lib/mongolly/extensions/mongo/mongo_client.rb index 35d2c2b..96ca68c 100644 --- a/lib/mongolly/extensions/mongo/mongo_client.rb +++ b/lib/mongolly/extensions/mongo/mongo_client.rb @@ -60,6 +60,7 @@ def backup_instance(address, options, lock = true) snapshot = volume.create_snapshot("#{options[:backup_key]} #{Time.now} mongolly #{host}") snapshot.add_tag('created_at', value: Time.now) snapshot.add_tag('backup_key', value: options[:backup_key]) + snapshot.add_tag(options[:custom_tag_key], value: options[:custom_tag_value] || 1) if options[:custom_tag_key] end end end diff --git a/lib/mongolly/shepherd.rb b/lib/mongolly/shepherd.rb index 109849a..a728913 100644 --- a/lib/mongolly/shepherd.rb +++ b/lib/mongolly/shepherd.rb @@ -37,9 +37,11 @@ def cleanup(age) @logger.debug "deleting snapshots older than #{age}}" ec2.snapshots.with_owner(:self).each do |snapshot| unless snapshot.tags[:created_at].nil? || snapshot.tags[:backup_key].nil? - if Time.parse(snapshot.tags[:created_at]) < age - @logger.debug "deleting snapshot #{snapshot.id} tagged #{snapshot.tags[:backup_key]} created at #{snapshot.tags[:created_at]}, earlier than #{age}" - snapshot.delete unless @dry_run + if @options[:custom_tag_key].nil? || @options[:custom_tag_key] && snapshot.tags[@options[:custom_tag_key]] == (@options[:custom_tag_value] || 1) + if Time.parse(snapshot.tags[:created_at]) < age + @logger.debug "deleting snapshot #{snapshot.id} tagged #{snapshot.tags[:backup_key]} created at #{snapshot.tags[:created_at]}, earlier than #{age}" + snapshot.delete unless @dry_run + end end end end