Class: ClassifyCluster::Configurator::Configuration

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config_path) ⇒ Configuration

Returns a new instance of Configuration.



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/classify_cluster/configurator/configuration.rb', line 6

def initialize(config_path)
  @clusters = {}
  case File.extname(config_path)
  when ".rb"
    eval File.open(config_path).read
  when ".yml"
    config = YAML.load_file(config_path)
    config.each_pair do |cluster_name, cluster_values|
      cluster(cluster_name) do |cluster|
        cluster_values['klasses'].each do |klass|
          cluster.klass klass
        end
        cluster_values['variables'].each_pair do |variable_name, variable_value|
          cluster.variable variable_name, variable_value
        end
        cluster_values['nodes'].each do |node_values|
          cluster.node(node_values['hostname'], node_values['ip_address']) do |node|
            node_values['roles'].each_pair do |role_name, role_values|
              options={}
              options['primary'] = true if role_values.delete('primary')
              options['backup'] = true if role_values.delete('backup')
              options['master'] = true if role_values.delete('master')
              options['node'] = true if role_values.delete('node')
              node.role(role_name, options) do |role|
                role_values.each_pair do |role_value_name, role_value|
                  role.variable role_value_name, role_value
                end
              end
            end
          end
        end
      end
    end
  end
end

Instance Attribute Details

#clustersObject (readonly)

Returns the value of attribute clusters.



5
6
7
# File 'lib/classify_cluster/configurator/configuration.rb', line 5

def clusters
  @clusters
end

Instance Method Details

#cluster(cluster_name, &block) ⇒ Object



42
43
44
# File 'lib/classify_cluster/configurator/configuration.rb', line 42

def cluster(cluster_name, &block)
  @clusters[cluster_name] = ClassifyCluster::Configurator::Cluster.new(cluster_name, &block)
end