class DCell::Registry::ZkAdapter

Constants

DEFAULT_PORT
PREFIX

Public Class Methods

new(options) click to toggle source

Create a new connection to Zookeeper

servers: a list of Zookeeper servers to connect to. Each server in the

list has a host/port configuration
# File lib/dcell/registries/zk_adapter.rb, line 13
def initialize(options)
  # Stringify keys :/
  options = options.inject({}) { |h,(k,v)| h[k.to_s] = v; h }

  @env = options['env'] || 'production'
  @base_path = "#{PREFIX}/#{@env}"

  # Let them specify a single server instead of many
  server = options['server']
  if server
    servers = [server]
  else
    servers = options['servers']
    raise "no Zookeeper servers given" unless servers
  end

  # Add the default Zookeeper port unless specified
  servers.map! do |server|
    if server[/:\d+$/]
      server
    else
      "#{server}:#{DEFAULT_PORT}"
    end
  end

  @zk = ZK.new(*servers)
  @node_registry = Registry.new(@zk, @base_path, :nodes, true)
  @global_registry = Registry.new(@zk, @base_path, :globals, false)
end

Public Instance Methods

clear_all_nodes() click to toggle source
# File lib/dcell/registries/zk_adapter.rb, line 114
def clear_all_nodes;         @node_registry.clear_all end
clear_globals() click to toggle source
# File lib/dcell/registries/zk_adapter.rb, line 119
def clear_globals;          @global_registry.clear_all end
get_global(key) click to toggle source
# File lib/dcell/registries/zk_adapter.rb, line 116
def get_global(key);        @global_registry.get(key) end
get_node(node_id) click to toggle source
# File lib/dcell/registries/zk_adapter.rb, line 110
def get_node(node_id);       @node_registry.get(node_id) end
global_keys() click to toggle source
# File lib/dcell/registries/zk_adapter.rb, line 118
def global_keys;            @global_registry.all end
nodes() click to toggle source
# File lib/dcell/registries/zk_adapter.rb, line 112
def nodes;                   @node_registry.all end
remove_node(node_id) click to toggle source
# File lib/dcell/registries/zk_adapter.rb, line 113
def remove_node(node_id);    @node_registry.clear(node_id) end
set_global(key, value) click to toggle source
# File lib/dcell/registries/zk_adapter.rb, line 117
def set_global(key, value); @global_registry.set(key, value) end
set_node(node_id, addr) click to toggle source
# File lib/dcell/registries/zk_adapter.rb, line 111
def set_node(node_id, addr); @node_registry.set(node_id, addr) end