Class: ClassifyCluster::Configurator::Cluster

Inherits:
Object
  • Object
show all
Defined in:
lib/classify_cluster/configurator/cluster.rb

Constant Summary collapse

SSLPEM_FILEPATH =
'/etc/ssl/pem/scmc.pem'
SSLPEM_MODULE =
'loadbalancer'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args, &block) ⇒ Cluster

Returns a new instance of Cluster.



7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/classify_cluster/configurator/cluster.rb', line 7

def initialize(*args, &block)
  @ssl_pem = {}
  @nodes = {}
  @variables = {}
  @resources = []
  @classes = []
  @name = args.first
  @hostnames = {}
  returned = block.call(self)
  add_hostnames
  add_node_roles
  returned
end

Instance Attribute Details

#classesObject (readonly)

Returns the value of attribute classes.



6
7
8
# File 'lib/classify_cluster/configurator/cluster.rb', line 6

def classes
  @classes
end

#hostnamesObject (readonly)

Returns the value of attribute hostnames.



6
7
8
# File 'lib/classify_cluster/configurator/cluster.rb', line 6

def hostnames
  @hostnames
end

#name(value = nil) ⇒ Object (readonly)

Returns the value of attribute name.



6
7
8
# File 'lib/classify_cluster/configurator/cluster.rb', line 6

def name
  @name
end

#nodesObject (readonly)

Returns the value of attribute nodes.



6
7
8
# File 'lib/classify_cluster/configurator/cluster.rb', line 6

def nodes
  @nodes
end

#resourcesObject (readonly)

Returns the value of attribute resources.



6
7
8
# File 'lib/classify_cluster/configurator/cluster.rb', line 6

def resources
  @resources
end

#ssl_pem(file_path = nil, module_name = nil) ⇒ Object (readonly)

Returns the value of attribute ssl_pem.



6
7
8
# File 'lib/classify_cluster/configurator/cluster.rb', line 6

def ssl_pem
  @ssl_pem
end

#variablesObject (readonly)

Returns the value of attribute variables.



6
7
8
# File 'lib/classify_cluster/configurator/cluster.rb', line 6

def variables
  @variables
end

Instance Method Details

#add_hostnamesObject



44
45
46
47
48
49
# File 'lib/classify_cluster/configurator/cluster.rb', line 44

def add_hostnames
  @nodes.each_pair do |fqdn, node|
    @variables['hostnames'] = [] unless @variables['hostnames']
    @variables['hostnames'] << "#{fqdn}/#{node.private_ip}"
  end
end

#add_node_rolesObject



50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/classify_cluster/configurator/cluster.rb', line 50

def add_node_roles
  @nodes.each_pair do |fqdn, node|
    node.resource do |resource|
      resource.type 'etchosts'
      resource.name "hosts"
      resource.options({
        :short_name => fqdn.split('.').first,
        :fqdn => fqdn,
        :hosts => @variables['hostnames']
      })
    end
  end
end

#klass(name) ⇒ Object



41
42
43
# File 'lib/classify_cluster/configurator/cluster.rb', line 41

def klass(name)
  @classes << name
end

#node(node_name, private_ip, &block) ⇒ Object



31
32
33
34
# File 'lib/classify_cluster/configurator/cluster.rb', line 31

def node(node_name, private_ip, &block)
  @hostnames[node_name] = private_ip
  @nodes[node_name] = ClassifyCluster::Configurator::Node.new(node_name, private_ip, self, &block)
end

#resource(&block) ⇒ Object



38
39
40
# File 'lib/classify_cluster/configurator/cluster.rb', line 38

def resource(&block)
  @resources << ClassifyCluster::Configurator::Resource.new(&block)
end

#variable(name, value) ⇒ Object



35
36
37
# File 'lib/classify_cluster/configurator/cluster.rb', line 35

def variable(name, value)
  @variables[name] = value
end