class WinRM::ConnectionOpts

WinRM connection options, provides defaults and validation.

Constants

DEFAULT_LOCALE
DEFAULT_MAX_ENV_SIZE
DEFAULT_OPERATION_TIMEOUT
DEFAULT_RECEIVE_TIMEOUT
DEFAULT_RETRY_DELAY
DEFAULT_RETRY_LIMIT
DEFAULT_USER_AGENT

Public Class Methods

create_with_defaults(overrides) click to toggle source
# File lib/winrm/connection_opts.rb, line 29
def create_with_defaults(overrides)
  config = default.merge(overrides)
  config = ensure_receive_timeout_is_greater_than_operation_timeout(config)
  config.validate
  config
end

Private Class Methods

default() click to toggle source
# File lib/winrm/connection_opts.rb, line 45
def default
  config = ConnectionOpts.new
  config[:session_id] = SecureRandom.uuid.to_s.upcase
  config[:transport] = :negotiate
  config[:locale] = DEFAULT_LOCALE
  config[:max_envelope_size] = DEFAULT_MAX_ENV_SIZE
  config[:operation_timeout] = DEFAULT_OPERATION_TIMEOUT
  config[:receive_timeout] = DEFAULT_RECEIVE_TIMEOUT
  config[:retry_delay] = DEFAULT_RETRY_DELAY
  config[:retry_limit] = DEFAULT_RETRY_LIMIT
  config[:user_agent] = DEFAULT_USER_AGENT
  config
end
ensure_receive_timeout_is_greater_than_operation_timeout(config) click to toggle source
# File lib/winrm/connection_opts.rb, line 38
def ensure_receive_timeout_is_greater_than_operation_timeout(config)
  if config[:receive_timeout] < config[:operation_timeout]
    config[:receive_timeout] = config[:operation_timeout] + 10
  end
  config
end

Public Instance Methods

validate() click to toggle source
# File lib/winrm/connection_opts.rb, line 60
def validate
  validate_required_fields
  validate_data_types
end

Private Instance Methods

validate_data_types() click to toggle source
# File lib/winrm/connection_opts.rb, line 78
def validate_data_types
  validate_integer(:retry_limit)
  validate_integer(:retry_delay)
  validate_integer(:max_envelope_size)
  validate_integer(:operation_timeout)
  validate_integer(:receive_timeout, self[:operation_timeout])
end
validate_integer(key, min = 0) click to toggle source
# File lib/winrm/connection_opts.rb, line 86
def validate_integer(key, min = 0)
  value = self[key]
  raise "#{key} must be a Integer" unless value && value.is_a?(Integer)
  raise "#{key} must be greater than #{min}" unless value > min
end
validate_required_fields() click to toggle source
# File lib/winrm/connection_opts.rb, line 67
def validate_required_fields
  raise 'endpoint is a required option' unless self[:endpoint]

  if self[:client_cert]
    raise 'path to client key is required' unless self[:client_key]
  else
    raise 'user is a required option' unless self[:user]
    raise 'password is a required option' unless self[:password]
  end
end