Class: RSUtils

Inherits:
Object
  • Object
show all
Defined in:
lib/cap-rightscale/utils/rs_utils.rb

Class Method Summary collapse

Class Method Details

.mk_rs_cache_dir(prefix = nil) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
# File 'lib/cap-rightscale/utils/rs_utils.rb', line 7

def mk_rs_cache_dir(prefix=nil)
  tmpdir = Dir.tmpdir
  _prefix = prefix || "cap-rightscale"
  begin
    path = "#{tmpdir}/#{_prefix}-#{ENV['USER']}-#{rand(0x100000000).to_s(36)}"
    Dir.mkdir(path, 0700)
  rescue Errno::EEXIST
    STEDERR.puts(e)
    exit(1)
  end
end

.valid_echo(servers, logger) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/cap-rightscale/utils/rs_utils.rb', line 38

def valid_echo(servers, logger)
  hosts = servers
  threads = []

  hosts.each do |host|
    threads << Thread.new(host) {|h| Ping.pingecho(h) }
  end
  threads.each_with_index do |t,i|
    unless t.value
      logger.debug("Server dead or Network problem: #{hosts[i]}")
      hosts[i] = nil
    else
      logger.debug("Server alive: #{hosts[i]}")
    end
  end
  hosts.delete(nil)
  threads.clear

  hosts || []
end

.valid_resolv(servers, logger) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/cap-rightscale/utils/rs_utils.rb', line 19

def valid_resolv(servers, logger)
  hosts = servers
  @dns ||= Resolv::DNS.new

  hosts = hosts.map do |host|
    result = @dns.getaddress(host) rescue nil
    if result.nil?
      logger.debug("ResolvError: No address for #{host}")
      host = nil
    else
      logger.debug("Resolved server: #{host} => #{result}")
    end
    host
  end
  hosts.delete(nil)

  hosts || []
end