Class: DoubleDutch::SpaceCadet::NodeIP

Inherits:
Object
  • Object
show all
Defined in:
lib/dd_spacecadet/node_ip.rb

Overview

NodeIP is a class of helper methods to find a node based on its name or IP address

Constant Summary collapse

@@nodes_by_name =

internal data structures

{}
@@nodes_by_ip =
{}

Class Method Summary collapse

Class Method Details

.clear(env) ⇒ Object

clear flushes all cached data



53
54
55
56
# File 'lib/dd_spacecadet/node_ip.rb', line 53

def clear(env)
  @@nodes_by_name.delete(env)
  @@nodes_by_ip.delete(env)
end

.get_ip_for(env, name) ⇒ Object

get the IP address for a node based on its label (name)

Raises:



30
31
32
33
34
35
36
37
38
# File 'lib/dd_spacecadet/node_ip.rb', line 30

def get_ip_for(env, name)
  refresh_nodes(env)

  ip = @@nodes_by_name.dig(env, name)

  raise ServerNotFound, "unable to locate #{name} in #{env} data" if ip.nil?

  ip
end

.get_name_for(env, ip) ⇒ Object

get the label (name) for a node based on its IP address

Raises:



42
43
44
45
46
47
48
49
50
# File 'lib/dd_spacecadet/node_ip.rb', line 42

def get_name_for(env, ip)
  refresh_nodes(env)

  name = @@nodes_by_ip.dig(env, ip)

  raise ServerNotFound, "unable to locate #{ip} in #{env} data" if name.nil?

  name
end