lib/percheron/actions/purge.rb in percheron-0.7.16 vs lib/percheron/actions/purge.rb in percheron-0.8.0

- old
+ new

@@ -1,21 +1,20 @@ module Percheron module Actions class Purge - include Base def initialize(unit, force: false) @unit = unit @force = force end def execute! results = [] results << stop! - results << delete_unit! - results << delete_image! + results << delete_unit! if delete_unit? + results << delete_image! if delete_image? results.compact.empty? ? nil : unit end private @@ -23,28 +22,34 @@ def stop! Stop.new(unit).execute! end + def delete_unit? + unit.exists? + end + def delete_image? unit.image_exists? && unit.buildable? end + def opts + { force: force } + end + def delete_unit! - return nil unless unit.exists? - $logger.info "Deleting '#{unit.display_name}' unit" - unit.container.remove(force: force) - rescue Docker::Error::ConflictError => e - $logger.error "Unable to delete '%s' unit - %s" % [ unit.name, e.inspect ] + delete!('unit', unit.display_name) { unit.container.remove(opts) } end def delete_image! - return nil unless delete_image? - $logger.info "Deleting '#{unit.image_name}' image" - unit.image.remove(force: force) - rescue Docker::Error::ConflictError => e - $logger.error "Unable to delete '%s' image - %s" % [ unit.image_name, e.inspect ] + delete!('image', unit.image_name) { unit.image.remove(opts) } end + def delete!(type, value) + $logger.info("Deleting '%s' %s" % [ value, type ]) + yield + rescue Docker::Error::ConflictError => e + $logger.error("Unable to delete '%s' %s - %s" % [ value, type, e.inspect ]) + end end end end