Sha256: a547a9d3766c59363c482b90034668b42eef7d81e573cad39f736ea0291a93cc

Contents?: true

Size: 1.3 KB

Versions: 3

Compression:

Stored size: 1.3 KB

Contents

module Percheron
  module Actions
    class Purge

      include Base

      def initialize(container, delete_image: true)
        @container = container
        @delete_image = delete_image
      end

      def execute!
        results = []
        results << stop!
        results << delete_container!
        results << delete_image!
        results.compact.empty? ? nil : container
      end

      private

        attr_reader :container, :delete_image

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

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

        def delete_container!
          return nil unless container.exists?
          $logger.info "Deleting '#{container.name}' container"
          container.docker_container.remove
        rescue Docker::Error::ConflictError => e
          $logger.error "Unable to delete '%s' container - %s" % [ container.name, e.inspect ]
        end

        def delete_image!
          return nil unless delete_image?
          $logger.info "Deleting '#{container.image_name}' image"
          container.image.remove
        rescue Docker::Error::ConflictError => e
          $logger.error "Unable to delete '%s' image - %s" % [ container.image_name, e.inspect ]
        end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
percheron-0.7.2 lib/percheron/actions/purge.rb
percheron-0.7.1 lib/percheron/actions/purge.rb
percheron-0.7.0 lib/percheron/actions/purge.rb