class Provisioner::HostIP

Public Class Methods

ip_for(host) click to toggle source
# File lib/provisioner/host_ip.rb, line 5
def self.ip_for(host)
  Provisioner::Exit.with_message("Unable to find IP for host: #{host}\nMake sure 'knife joyent server list' runs successfully\n\n") unless ips[host]
  ips[host]
end

Private Class Methods

ips() click to toggle source
# File lib/provisioner/host_ip.rb, line 12
def self.ips
  @ips = {}
  server_list.each do |server|
    # example line
    # c1cdc4a3-366d-690a-a56f-8c0968a5fb23  twemproxy305.prod  running  smartmachine g4-highcpu-4G  10.100.18.240 4.00 GB 100 GB

    # 4330e738-2bca-ee10-f9a6-e9a1b3fcfdec  vpn001.prod running  virtualmachine  sdc:jpc:ubuntu-12.04:2.4.  g3-highcpu-1.75-kvm  9.12.42.172,10.100.114.217  1.75 GB  75 GB
    zone, hostname, status, type, flavor, ips = server.split(/\s+/).compact
    next if ips.nil?
    @ips[hostname] = (ips.split(',') || []).first
  end
  @ips
end
server_list() click to toggle source
# File lib/provisioner/host_ip.rb, line 26
def self.server_list
  @server_list ||= `knife joyent server list | tail -n +2 | grep -v "Total  "`.split("\n")
end