class AwsLogCleaner::LogGroupCleaner
Constants
- API_GATEWAY_LOG_PREFIX
Public Class Methods
new( cloud_watch_logs, api_retriever, log_group_filterer, like, clean_orphans )
click to toggle source
# File lib/aws_log_cleaner/log_group_cleaner.rb, line 7 def initialize( cloud_watch_logs, api_retriever, log_group_filterer, like, clean_orphans ) @cloud_watch_logs = cloud_watch_logs @api_retriever = api_retriever @log_group_filterer = log_group_filterer @like = like.downcase unless like.nil? @clean_orphans = clean_orphans end
Public Instance Methods
delete()
click to toggle source
# File lib/aws_log_cleaner/log_group_cleaner.rb, line 25 def delete log_groups = log_groups_to_delete @cloud_watch_logs.delete_log_groups(log_groups) result(log_groups) end
plan()
click to toggle source
# File lib/aws_log_cleaner/log_group_cleaner.rb, line 21 def plan result(log_groups_to_delete) end
Private Instance Methods
extract_api_id(log_group_name)
click to toggle source
# File lib/aws_log_cleaner/log_group_cleaner.rb, line 67 def extract_api_id(log_group_name) match = log_group_name.match(%r{#{API_GATEWAY_LOG_PREFIX}(\w+)/\w+}) match.captures[0] unless match.nil? end
log_group_names_containing(text)
click to toggle source
# File lib/aws_log_cleaner/log_group_cleaner.rb, line 40 def log_group_names_containing(text) log_groups = @log_group_filterer.filter_by_name_includes(text) apis = @api_retriever.retrieve(text) apis.each do |api| log_groups.concat( @log_group_filterer.filter_by_name_includes( "#{API_GATEWAY_LOG_PREFIX}#{api.id}" ) ) end log_groups.map(&:log_group_name) end
log_group_names_orphan()
click to toggle source
# File lib/aws_log_cleaner/log_group_cleaner.rb, line 55 def log_group_names_orphan groups = @cloud_watch_logs.list_all_log_groups groups = groups.select { |log_group| orphan?(log_group) } groups.map(&:log_group_name) end
log_groups_to_delete()
click to toggle source
# File lib/aws_log_cleaner/log_group_cleaner.rb, line 33 def log_groups_to_delete log_groups = [] log_groups.concat(log_group_names_containing(@like)) if @like log_groups.concat(log_group_names_orphan) if @clean_orphans log_groups.uniq end
orphan?(log_group)
click to toggle source
# File lib/aws_log_cleaner/log_group_cleaner.rb, line 61 def orphan?(log_group) apis = @api_retriever.retrieve_all api_id = extract_api_id(log_group.log_group_name) api_id.nil? ? false : apis.none? { |api| api.id == api_id } end
result(log_groups)
click to toggle source
# File lib/aws_log_cleaner/log_group_cleaner.rb, line 72 def result(log_groups) to_delete = [] log_groups.each do |name| to_delete.push("(-) #{name}") end to_delete end