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)
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)
- Api: - private
Returns:
-
(Hash)- hash of connection options
Parameters:
-
data(Hash) -- merged configuration and mutable state data
def connection_options(data) opts = {} 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 end
def create_new_connection(options, &block)
- Api: - private
Returns:
-
(Ssh::Connection)- an SSH Connection instance
Parameters:
-
options(Hash) -- conneciton 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?
-
(TrueClass, FalseClass)-
def docker_for_mac_or_win? ::Docker.info(::Docker::Connection.new(config[:docker_host_url], {}))['Name'] == 'moby' rescue false end
def reuse_connection
- 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