Class: DCell::Registry::ZkAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/dcell/registries/zk_adapter.rb

Defined Under Namespace

Classes: Registry

Constant Summary collapse

PREFIX =
"/dcell"
DEFAULT_PORT =
2181

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ ZkAdapter

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


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
41
# 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

Instance Method Details

#clear_all_nodesObject



114
# File 'lib/dcell/registries/zk_adapter.rb', line 114

def clear_all_nodes;         @node_registry.clear_all end

#clear_globalsObject



119
# File 'lib/dcell/registries/zk_adapter.rb', line 119

def clear_globals;          @global_registry.clear_all end

#get_global(key) ⇒ Object



116
# File 'lib/dcell/registries/zk_adapter.rb', line 116

def get_global(key);        @global_registry.get(key) end

#get_node(node_id) ⇒ Object



110
# File 'lib/dcell/registries/zk_adapter.rb', line 110

def get_node(node_id);       @node_registry.get(node_id) end

#global_keysObject



118
# File 'lib/dcell/registries/zk_adapter.rb', line 118

def global_keys;            @global_registry.all end

#nodesObject



112
# File 'lib/dcell/registries/zk_adapter.rb', line 112

def nodes;                   @node_registry.all end

#remove_node(node_id) ⇒ Object



113
# File 'lib/dcell/registries/zk_adapter.rb', line 113

def remove_node(node_id);    @node_registry.clear(node_id) end

#set_global(key, value) ⇒ Object



117
# 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) ⇒ Object



111
# File 'lib/dcell/registries/zk_adapter.rb', line 111

def set_node(node_id, addr); @node_registry.set(node_id, addr) end