Sha256: 5cbd85729d446d20ec502b7b732a66003765f194f4920a05a5843c01f8b58054

Contents?: true

Size: 1.14 KB

Versions: 1

Compression:

Stored size: 1.14 KB

Contents

module Percheron
  class DockerConnection

    def initialize(config)
      @config = config
    end

    def setup!
      set_url!
      set_options!
    end

    private

      attr_reader :config

      def cert_path
        @cert_path ||= ENV['DOCKER_CERT_PATH'] ? File.expand_path(ENV['DOCKER_CERT_PATH']) : nil
      end

      def set_url!
        Docker.url = config.docker.host
      end

      def set_options!
        Excon.defaults[:ssl_verify_peer] = config.docker.fetch('ssl_verify_peer', true)
        Docker.options = docker_options
      end

      def docker_options
        base_docker_options.merge(extra_docker_opts)
      end

      def base_docker_options
        {
          connect_timeout: config.docker.connect_timeout || 5,
          read_timeout:    config.docker.read_timeout || 300
        }
      end

      def extra_docker_opts
        return {} unless cert_path
        {
          client_cert:  cert_path_for('cert.pem'),
          client_key:   cert_path_for('key.pem'),
          ssl_ca_file:  cert_path_for('ca.pem')
        }
      end

      def cert_path_for(file)
        File.join(cert_path, file)
      end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
percheron-0.7.6 lib/percheron/docker_connection.rb