Class: LinodeCluster::NodeGroup

Inherits:
Struct
  • Object
show all
Defined in:
lib/linode_cluster/node_group.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#clusterObject

Returns the value of attribute cluster

Returns:

  • (Object)

    the current value of cluster



4
5
6
# File 'lib/linode_cluster/node_group.rb', line 4

def cluster
  @cluster
end

#countObject

Returns the value of attribute count

Returns:

  • (Object)

    the current value of count



4
5
6
# File 'lib/linode_cluster/node_group.rb', line 4

def count
  @count
end

#group_name_prefixObject

Returns the value of attribute group_name_prefix

Returns:

  • (Object)

    the current value of group_name_prefix



4
5
6
# File 'lib/linode_cluster/node_group.rb', line 4

def group_name_prefix
  @group_name_prefix
end

#nameObject

Returns the value of attribute name

Returns:

  • (Object)

    the current value of name



4
5
6
# File 'lib/linode_cluster/node_group.rb', line 4

def name
  @name
end

#optionsObject

Returns the value of attribute options

Returns:

  • (Object)

    the current value of options



4
5
6
# File 'lib/linode_cluster/node_group.rb', line 4

def options
  @options
end

#regionObject

Returns the value of attribute region

Returns:

  • (Object)

    the current value of region



4
5
6
# File 'lib/linode_cluster/node_group.rb', line 4

def region
  @region
end

#sizeObject

Returns the value of attribute size

Returns:

  • (Object)

    the current value of size



4
5
6
# File 'lib/linode_cluster/node_group.rb', line 4

def size
  @size
end

Instance Method Details

#as_ansible_inventoryObject



39
40
41
42
43
44
45
46
47
48
# File 'lib/linode_cluster/node_group.rb', line 39

def as_ansible_inventory
  result = +"[#{name}]\n"
  nodes.each do |node|
    string_options = template_options(node).map { |k, v| "#{k}=#{v}" }.join(' ')

    result << "#{node.name} #{string_options}".strip
    result << "\n"
  end
  result << "\n"
end

#create!Object



17
18
19
20
21
22
23
24
25
26
# File 'lib/linode_cluster/node_group.rb', line 17

def create!
  names.each do |name|
    node = cluster.client.find_node_by_name(name)
    if node
      check_node_specs(node)
    else
      create_node(name)
    end
  end
end

#group_nameObject



13
14
15
# File 'lib/linode_cluster/node_group.rb', line 13

def group_name
  "#{group_name_prefix}#{name}"
end

#name_prefixObject



9
10
11
# File 'lib/linode_cluster/node_group.rb', line 9

def name_prefix
  "#{group_name}-"
end

#namesObject



5
6
7
# File 'lib/linode_cluster/node_group.rb', line 5

def names
  Array.new(count) { |i| "#{name_prefix}#{i}" }
end

#nodesObject



28
29
30
# File 'lib/linode_cluster/node_group.rb', line 28

def nodes
  names.map { |n| cluster.client.find_node_by_name(n) }.compact
end

#template_options(node) ⇒ Object



32
33
34
35
36
37
# File 'lib/linode_cluster/node_group.rb', line 32

def template_options(node)
  Hash[options.map do |k, v|
         v = node.ip_address if v == '{{ ip_address }}'
         [k, v]
       end]
end