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