class Ufo::Ecr::Cleaner
Public Class Methods
new(docker_image_name, options={})
click to toggle source
# File lib/ufo/ecr/cleaner.rb, line 11 def initialize(docker_image_name, options={}) # docker_image_name does not containg the tag # Example: 123456789.dkr.ecr.us-east-1.amazonaws.com/image @docker_image_name = docker_image_name @options = options @keep = options[:ecr_keep] || settings[:ecr_keep] @tag_prefix = options[:tag_prefix] || "ufo" end
Public Instance Methods
cleanup()
click to toggle source
# File lib/ufo/ecr/cleaner.rb, line 20 def cleanup return false unless ecr_image? return false unless @keep update_auth_token image_tags = fetch_image_tags delete_tags = image_tags[@keep..-1] # ordered by most recent images first delete_images(delete_tags) end
delete_images(tags)
click to toggle source
# File lib/ufo/ecr/cleaner.rb, line 37 def delete_images(tags) return if tags.nil? || tags.empty? unless @options[:mute] puts "Keeping #{@keep} most recent ECR images." puts "Deleting these ECR images:" tag_list = tags.map { |t| " #{repo_name}:#{t}" } puts tag_list end image_ids = tags.map { |tag| {image_tag: tag} } ecr.batch_delete_image( repository_name: repo_name, image_ids: image_ids) unless @options[:noop] end
ecr_image?()
click to toggle source
# File lib/ufo/ecr/cleaner.rb, line 62 def ecr_image? @docker_image_name =~ /\.amazonaws\.com/ end
repo_name()
click to toggle source
# File lib/ufo/ecr/cleaner.rb, line 57 def repo_name # @docker_image_name example: 123456789.dkr.ecr.us-east-1.amazonaws.com/image @docker_image_name.split('/').last end
update_auth_token()
click to toggle source
# File lib/ufo/ecr/cleaner.rb, line 51 def update_auth_token repo_domain = "#{@docker_image_name.split('/').first}" auth = Ecr::Auth.new(repo_domain) auth.update end