class Roast::Host

Constants

HOST_PATTERN
IP_PATTERN

Attributes

alias[RW]
hostname[R]
ip_address[R]
state[R]

Public Class Methods

new(source, hostname) click to toggle source
# File lib/roast/host.rb, line 11
def initialize(source, hostname)
  if source !~ IP_PATTERN
    @alias = source.chomp
    resolve_source
  else
    @ip_address = source.chomp
  end
  @hostname   = hostname.chomp.downcase
  @state      = 'enabled'
  validate!
end

Public Instance Methods

disable!() click to toggle source
# File lib/roast/host.rb, line 33
def disable!
  @state = 'disabled'
end
disabled?() click to toggle source
# File lib/roast/host.rb, line 41
def disabled?
  @state == 'disabled'
end
enable!() click to toggle source
# File lib/roast/host.rb, line 37
def enable!
  @state = 'enabled'
end
enabled?() click to toggle source
# File lib/roast/host.rb, line 45
def enabled?
  @state == 'enabled'
end
resolve_source() click to toggle source
# File lib/roast/host.rb, line 27
def resolve_source
  @ip_address = IPSocket.getaddress(@alias)
rescue SocketError
  raise ArgumentError, "unable to determine the ip address of `#{@alias}'"
end
validate!() click to toggle source
# File lib/roast/host.rb, line 23
def validate!
  raise ArgumentError, "`#{hostname}' is an invalid hostname" unless hostname =~ HOST_PATTERN
end