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