class Kitchen::Transport::Dokken

@author Sean OMeara <sean@sean.io>
transfer files.
A Transport which uses Docker tricks to execute commands and

def connection(state, &block)

(see Base#connection)
def connection(state, &block)
  options = connection_options(config.to_hash.merge(state))
  if @connection && @connection_options == options
    reuse_connection(&block)
  else
    create_new_connection(options, &block)
  end
end

def connection_options(data)

Other tags:
    Api: - private

Returns:
  • (Hash) - hash of connection options

Parameters:
  • data (Hash) -- merged configuration and mutable state data
def connection_options(data)
  opts = {}
  opts[:logger] = logger
  opts[:host_ip_override] = config[:host_ip_override]
  opts[:docker_host_url] = config[:docker_host_url]
  opts[:docker_host_options] = ::Docker.options
  opts[:data_container] = data[:data_container]
  opts[:instance_name] = data[:instance_name]
  opts[:timeout] = data[:write_timeout]
  opts[:login_command] = data[:login_command]
  opts
end

def create_new_connection(options, &block)

Other tags:
    Api: - private

Returns:
  • (Ssh::Connection) - an SSH Connection instance

Parameters:
  • options (Hash) -- connection options
def create_new_connection(options, &block)
  if @connection
    logger.debug("[Dokken] shutting previous connection #{@connection}")
    @connection.close
  end
  @connection = Kitchen::Transport::Dokken::Connection.new(options, &block)
end

def docker_for_mac_or_win?

Returns:
  • (TrueClass, FalseClass) -
def docker_for_mac_or_win?
  ::Docker.info(::Docker::Connection.new(config[:docker_host_url], {}))["Name"] == "docker-desktop"
rescue
  false
end

def reuse_connection

Other tags:
    Api: - private

Returns:
  • (Dokken::Connection) - an Dokken Connection instance
def reuse_connection
  logger.debug("[Dokken] reusing existing connection #{@connection}")
  yield @connection if block_given?
  @connection
end