Sha256: e3ab00e0a48891c68f23091286b5e7777cc1d2f30d2825084e72d324e8fa9424

Contents?: true

Size: 1.18 KB

Versions: 7

Compression:

Stored size: 1.18 KB

Contents

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.compact.empty? ? nil : unit
      end

      private

        attr_reader :unit, :force

        def stop!
          Stop.new(unit).execute!
        end

        def delete_image?
          unit.image_exists? && unit.buildable?
        end

        def delete_unit!
          return nil unless unit.exists?
          $logger.info "Deleting '#{unit.name}' unit"
          unit.container.remove(force: force)
        rescue Docker::Error::ConflictError => e
          $logger.error "Unable to delete '%s' unit - %s" % [ unit.name, e.inspect ]
        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 ]
        end

    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
percheron-0.7.13 lib/percheron/actions/purge.rb
percheron-0.7.12 lib/percheron/actions/purge.rb
percheron-0.7.11 lib/percheron/actions/purge.rb
percheron-0.7.10 lib/percheron/actions/purge.rb
percheron-0.7.9 lib/percheron/actions/purge.rb
percheron-0.7.8 lib/percheron/actions/purge.rb
percheron-0.7.7 lib/percheron/actions/purge.rb