Module: TrainPlugins::Juniper::Validation

Included in:
Connection
Defined in:
lib/train-juniper/connection/validation.rb

Overview

Validation methods for connection options

Instance Method Summary collapse

Instance Method Details

#validate_bastion_port!Object

Validate bastion port is in valid range



39
40
41
# File 'lib/train-juniper/connection/validation.rb', line 39

def validate_bastion_port!
  validate_port_value!(:bastion_port)
end

#validate_connection_options!Object

Validate all connection options



8
9
10
11
12
# File 'lib/train-juniper/connection/validation.rb', line 8

def validate_connection_options!
  validate_required_options!
  validate_option_types!
  validate_proxy_options!
end

#validate_option_types!Object

Validate option types and ranges



21
22
23
24
25
# File 'lib/train-juniper/connection/validation.rb', line 21

def validate_option_types!
  validate_port! if @options[:port]
  validate_timeout! if @options[:timeout]
  validate_bastion_port! if @options[:bastion_port]
end

#validate_port!Object

Validate port is in valid range



28
29
30
# File 'lib/train-juniper/connection/validation.rb', line 28

def validate_port!
  validate_port_value!(:port)
end

#validate_port_value!(port_key, port_name = nil) ⇒ Object (private)

DRY method for validating port values

Parameters:

  • port_key (Symbol)

    The options key containing the port value

  • port_name (String) (defaults to: nil)

    The name to use in error messages (defaults to port_key)

Raises:

  • (Train::ClientError)


48
49
50
51
52
# File 'lib/train-juniper/connection/validation.rb', line 48

def validate_port_value!(port_key, port_name = nil)
  port_name ||= port_key.to_s.tr('_', ' ')
  port = @options[port_key].to_i
  raise Train::ClientError, "Invalid #{port_name}: #{@options[port_key]} (must be 1-65535)" unless port.between?(1, 65_535)
end

#validate_proxy_options!Object (private)

Validate proxy configuration options (Train standard)



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

def validate_proxy_options!
  # Cannot use both bastion_host and proxy_command simultaneously
  if @options[:bastion_host] && @options[:proxy_command]
    raise Train::ClientError, 'Cannot specify both bastion_host and proxy_command'
  end
end

#validate_required_options!Object

Validate required options are present

Raises:

  • (Train::ClientError)


15
16
17
18
# File 'lib/train-juniper/connection/validation.rb', line 15

def validate_required_options!
  raise Train::ClientError, 'Host is required' unless @options[:host]
  raise Train::ClientError, 'User is required' unless @options[:user]
end

#validate_timeout!Object

Validate timeout is positive number

Raises:

  • (Train::ClientError)


33
34
35
36
# File 'lib/train-juniper/connection/validation.rb', line 33

def validate_timeout!
  timeout = @options[:timeout]
  raise Train::ClientError, "Invalid timeout: #{timeout} (must be positive number)" unless timeout.is_a?(Numeric) && timeout.positive?
end