class Aggro::ClusterConfig

Public: Stores the current cluster config. Persists to disk after changes.

Attributes

node_name[R]

Public Class Methods

new(path) click to toggle source
# File lib/aggro/cluster_config.rb, line 6
def initialize(path)
  @path = path

  if File.exist? path
    load_config
  else
    initialize_config
    persist_config
  end
end

Public Instance Methods

add_node(name, server) click to toggle source
# File lib/aggro/cluster_config.rb, line 17
def add_node(name, server)
  @nodes = nodes.merge(name => server).freeze
  persist_config
end
nodes() click to toggle source
# File lib/aggro/cluster_config.rb, line 22
def nodes
  @nodes ||= {}.freeze
end
server_node=(value) click to toggle source
# File lib/aggro/cluster_config.rb, line 26
def server_node=(value)
  @is_server_node = value
  persist_config
end
server_node?() click to toggle source
# File lib/aggro/cluster_config.rb, line 31
def server_node?
  @is_server_node == true
end

Private Instance Methods

initialize_config() click to toggle source
# File lib/aggro/cluster_config.rb, line 37
def initialize_config
  @node_name = SecureRandom.uuid
  @is_server_node = false
end
load_config() click to toggle source
# File lib/aggro/cluster_config.rb, line 42
def load_config
  YAML.load_file(@path).each do |key, value|
    instance_variable_set "@#{key}", value.freeze
  end
end
persist_config() click to toggle source
# File lib/aggro/cluster_config.rb, line 48
def persist_config
  File.open @path, 'w' do |file|
    file.write YAML.dump to_h
  end
end
to_h() click to toggle source
# File lib/aggro/cluster_config.rb, line 54
def to_h
  {
    node_name: node_name,
    nodes: nodes,
    is_server_node: server_node?
  }
end