Class: Bosh::Cloudfoundry::Validations::DnsIpMappingValidation

Inherits:
Object
  • Object
show all
Includes:
Bosh::Cli::Validation, BoshExtensions
Defined in:
lib/bosh/cloudfoundry/validations/dns_ip_mapping_validation.rb

Overview

Validates that domain is an A record that resolves to expected_ip_addresses and no other IP addresses.

Usage:

dns_mapping = Bosh::Cloudfoundry::Validations::DnsIpMappingValidation.new("foobar.mycloud.com", "1.2.3.4")
if dns_mapping.valid?
  puts "`#{dns_mapping.domain}' maps to #{dns_mapping.ip_address}"
else
  puts "Validation errors:"
  dns_mapping.errors.each do |error|
    puts "- %s" % [error]
  end
  puts "`#{dns_mapping.domain}' does not map to #{dns_mapping.ip_address}"
end

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(domain, ip_address) ⇒ DnsIpMappingValidation

Returns a new instance of DnsIpMappingValidation.



27
28
29
30
# File 'lib/bosh/cloudfoundry/validations/dns_ip_mapping_validation.rb', line 27

def initialize(domain, ip_address)
  @domain = domain
  @ip_address = ip_address
end

Instance Attribute Details

#domainObject (readonly)

Returns the value of attribute domain.



24
25
26
# File 'lib/bosh/cloudfoundry/validations/dns_ip_mapping_validation.rb', line 24

def domain
  @domain
end

#ip_addressObject (readonly)

Returns the value of attribute ip_address.



25
26
27
# File 'lib/bosh/cloudfoundry/validations/dns_ip_mapping_validation.rb', line 25

def ip_address
  @ip_address
end

Instance Method Details

#perform_validation(options = {}) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/bosh/cloudfoundry/validations/dns_ip_mapping_validation.rb', line 32

def perform_validation(options={})
  resolved_a_records = nil
  step("Resolve DNS",
       "Cannot resolve DNS '#{domain}' to an IP address", :fatal) do
     any_resolved_records, resolved_a_records = resolve_dns(domain)
     any_resolved_records
  end

  step("Resolve DNS '#{domain}' to IP '#{ip_address}'",
        "DNS '#{domain}' resolves to: #{resolved_a_records.join(', ')}") do
    resolved_a_records == [ip_address]
  end
end