Class: SshShort::NodeMapper

Inherits:
Object
  • Object
show all
Defined in:
lib/ssh_short/nodemapper.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeNodeMapper

Returns a new instance of NodeMapper.



5
6
7
8
# File 'lib/ssh_short/nodemapper.rb', line 5

def initialize
  @node_map_file = SshShort::NODEMAP_FILE
  @node_map = NodeMapper.read_node_map(@node_map_file)
end

Class Method Details

.read_node_map(node_map_file) ⇒ Object



46
47
48
# File 'lib/ssh_short/nodemapper.rb', line 46

def read_node_map(node_map_file)
  File.exist?(node_map_file) ? YAML.load_file(node_map_file) : []
end

.save_node_map(node_map_file, node_map) ⇒ Object



50
51
52
# File 'lib/ssh_short/nodemapper.rb', line 50

def save_node_map(node_map_file, node_map)
  File.open(node_map_file, 'w') { |fo| fo.puts node_map.to_yaml }
end

Instance Method Details

#get_aliasesObject



41
42
43
# File 'lib/ssh_short/nodemapper.rb', line 41

def get_aliases
  @node_map.collect { |node| node[:alias] }.compact
end

#get_node(host_or_alias) ⇒ Object

returns nil if no matching node is found



16
17
18
19
20
21
22
# File 'lib/ssh_short/nodemapper.rb', line 16

def get_node(host_or_alias)
  if is_alias? host_or_alias
    get_node_by_alias host_or_alias
  else
    get_node_by_host host_or_alias
  end
end

#is_alias?(input) ⇒ Boolean

Returns:

  • (Boolean)


10
11
12
13
# File 'lib/ssh_short/nodemapper.rb', line 10

def is_alias?(input)
  aliases = get_aliases
  aliases.include? input
end

#update_node(node) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/ssh_short/nodemapper.rb', line 24

def update_node(node)
  alias_changed = alias_changed? node
  if alias_changed
    existing_node_with_alias = get_node_by_alias(node[:alias])
    if existing_node_with_alias
      puts "Moving alias #{node[:alias]} from #{existing_node_with_alias[:host]} to #{node[:host]}"
      existing_node_with_alias.delete :alias
      upsert_node existing_node_with_alias
    end
  end

  upsert_node node

  NodeMapper.save_node_map(@node_map_file, @node_map)
  @node_map
end