77 lines
1.9 KiB
Ruby
77 lines
1.9 KiB
Ruby
require "vagrant"
|
|
|
|
require_relative "ssh_connect"
|
|
|
|
module VagrantPlugins
|
|
module Kernel_V2
|
|
class SSHConfig < SSHConnectConfig
|
|
attr_accessor :forward_agent
|
|
attr_accessor :forward_x11
|
|
attr_accessor :guest_port
|
|
attr_accessor :keep_alive
|
|
attr_accessor :max_tries
|
|
attr_accessor :shell
|
|
attr_accessor :timeout
|
|
|
|
attr_reader :default
|
|
|
|
def initialize
|
|
super
|
|
|
|
@forward_agent = UNSET_VALUE
|
|
@forward_x11 = UNSET_VALUE
|
|
@guest_port = UNSET_VALUE
|
|
@keep_alive = UNSET_VALUE
|
|
@max_tries = UNSET_VALUE
|
|
@shell = UNSET_VALUE
|
|
@timeout = UNSET_VALUE
|
|
|
|
@default = SSHConnectConfig.new
|
|
end
|
|
|
|
def merge(other)
|
|
super.tap do |result|
|
|
merged_defaults = @default.merge(other.default)
|
|
result.instance_variable_set(:@default, merged_defaults)
|
|
end
|
|
end
|
|
|
|
def finalize!
|
|
super
|
|
|
|
@forward_agent = false if @forward_agent == UNSET_VALUE
|
|
@forward_x11 = false if @forward_x11 == UNSET_VALUE
|
|
@guest_port = nil if @guest_port == UNSET_VALUE
|
|
@keep_alive = false if @keep_alive == UNSET_VALUE
|
|
@max_tries = nil if @max_tries == UNSET_VALUE
|
|
@shell = nil if @shell == UNSET_VALUE
|
|
@timeout = nil if @timeout == UNSET_VALUE
|
|
|
|
@default.finalize!
|
|
end
|
|
|
|
def to_s
|
|
"SSH"
|
|
end
|
|
|
|
def validate(machine)
|
|
errors = super
|
|
|
|
[:max_tries, :timeout].each do |field|
|
|
value = instance_variable_get("@#{field}".to_sym)
|
|
errors << I18n.t("vagrant.config.common.error_empty", :field => field) if !value
|
|
end
|
|
|
|
# Return the errors
|
|
result = { to_s => errors }
|
|
|
|
# Figure out the errors for the defaults
|
|
default_errors = @default.validate(machine)
|
|
result["SSH Defaults"] = default_errors if !default_errors.empty?
|
|
|
|
result
|
|
end
|
|
end
|
|
end
|
|
end
|