Class: DCell::Registry::ZkAdapter

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

Defined Under Namespace

Classes: GlobalRegistry, NodeRegistry

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 = NodeRegistry.new(@zk, @base_path)
  @global_registry = GlobalRegistry.new(@zk, @base_path)
end

Instance Method Details

#clear_globalsObject



47
48
49
# File 'lib/dcell/registries/zk_adapter.rb', line 47

def clear_globals
  @global_registry.clear
end

#clear_nodesObject



43
44
45
# File 'lib/dcell/registries/zk_adapter.rb', line 43

def clear_nodes
  @node_registry.clear
end

#get_global(key) ⇒ Object



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

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

#get_node(node_id) ⇒ Object



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

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

#global_keysObject



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

def global_keys;            @global_registry.global_keys end

#nodesObject



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

def nodes;                   @node_registry.nodes end

#set_global(key, value) ⇒ Object



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

def set_global(key, value); @global_registry.set(key, value) end

#set_node(node_id, addr) ⇒ Object



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

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