Class: TrainPlugins::WinRM::Connection

Inherits:
Train::Plugins::Transport::BaseConnection
  • Object
show all
Defined in:
lib/train-winrm/connection.rb

Overview

Author:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Connection

Returns a new instance of Connection.



44
45
46
47
48
49
50
51
52
# File 'lib/train-winrm/connection.rb', line 44

def initialize(options)
  super(options)
  @hostname               = @options.delete(:hostname)
  @rdp_port               = @options.delete(:rdp_port)
  @connection_retries     = @options.delete(:connection_retries)
  @connection_retry_sleep = @options.delete(:connection_retry_sleep)
  @max_wait_until_ready   = @options.delete(:max_wait_until_ready)
  @operation_timeout      = @options.delete(:operation_timeout)
end

Instance Attribute Details

#hostnameObject (readonly)

rubocop:disable Metrics/ClassLength



43
44
45
# File 'lib/train-winrm/connection.rb', line 43

def hostname
  @hostname
end

Instance Method Details

#closeObject



55
56
57
58
59
60
61
# File 'lib/train-winrm/connection.rb', line 55

def close
  return if @session.nil?

  session.close
ensure
  @session = nil
end

#download(remotes, local) ⇒ Object



84
85
86
87
88
# File 'lib/train-winrm/connection.rb', line 84

def download(remotes, local)
  Array(remotes).each do |remote|
    file_manager.download(remote, local)
  end
end

#login_commandObject



64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/train-winrm/connection.rb', line 64

def 
  case RbConfig::CONFIG["host_os"]
  when /darwin/
    
  when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
    
  when /linux/
    
  else
    raise ActionFailed,
      "Remote login not supported in #{self.class} " \
      "from host OS '#{RbConfig::CONFIG["host_os"]}'."
  end
end

#upload(locals, remote) ⇒ Object



80
81
82
# File 'lib/train-winrm/connection.rb', line 80

def upload(locals, remote)
  file_manager.upload(locals, remote)
end

#uriObject



100
101
102
# File 'lib/train-winrm/connection.rb', line 100

def uri
  "winrm://#{options[:user]}@#{options[:endpoint]}:#{@rdp_port}"
end

#wait_until_readyObject



91
92
93
94
95
96
97
98
# File 'lib/train-winrm/connection.rb', line 91

def wait_until_ready
  delay = 3
  session(
    retry_limit: @max_wait_until_ready / delay,
    retry_delay: delay
  )
  run_command_via_connection(PING_COMMAND.dup)
end