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_globalsObject



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

def clear_globals;          @global_registry.clear end

#clear_nodesObject



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

def clear_nodes;             @node_registry.clear end

#get_global(key) ⇒ Object



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

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

#get_node(node_id) ⇒ Object



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

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

#global_keysObject



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

def global_keys;            @global_registry.all end

#nodesObject



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

def nodes;                   @node_registry.all end

#set_global(key, value) ⇒ Object



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

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

#set_node(node_id, addr) ⇒ Object



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

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