hiera_zookeeper 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/hiera/backend/zookeeper_backend.rb +33 -14
- metadata +4 -4
@@ -15,18 +15,41 @@ class Hiera
|
|
15
15
|
def lookup(key, scope, order_override, resolution_type)
|
16
16
|
answer = nil
|
17
17
|
Hiera.debug("Looking up #{key} in ZooKeeper backend")
|
18
|
-
#
|
18
|
+
# Establish server(s) to check
|
19
|
+
servers = []
|
19
20
|
unless Config[:zookeeper].nil? or Config[:zookeeper][:server].nil? then
|
20
|
-
if Config[:zookeeper][:server].
|
21
|
-
|
22
|
-
|
21
|
+
if Config[:zookeeper][:server].kind_of?(Array) then
|
22
|
+
Config[:zookeeper][:server].shuffle!
|
23
|
+
Config[:zookeeper][:server].each do |server|
|
24
|
+
servers.push(Backend.parse_string(server, scope))
|
25
|
+
end
|
23
26
|
else
|
24
|
-
|
27
|
+
servers.push(Backend.parse_string(Config[:zookeeper][:server], scope))
|
25
28
|
end
|
26
29
|
else
|
27
|
-
|
30
|
+
servers.push('localhost:2181')
|
28
31
|
end
|
29
|
-
|
32
|
+
# Establish connection timeout
|
33
|
+
if Config[:zookeeper].nil? or Config[:zookeeper][:timeout].nil? then
|
34
|
+
timeout = 1
|
35
|
+
else
|
36
|
+
timeout = Config[:zookeeper][:timeout]
|
37
|
+
end
|
38
|
+
# Establish connection
|
39
|
+
zk = nil
|
40
|
+
servers.each do |s|
|
41
|
+
begin
|
42
|
+
zk = Zookeeper.new(s, timeout)
|
43
|
+
break if zk.connected?
|
44
|
+
rescue => e
|
45
|
+
Hiera.debug(e.message)
|
46
|
+
next
|
47
|
+
end
|
48
|
+
end
|
49
|
+
# If it did not work, raise that exception!
|
50
|
+
if zk.nil? or not zk.connected? then
|
51
|
+
raise(ZookeeperExceptions::ZookeeperException, "Could not connect to any server in configuration")
|
52
|
+
end
|
30
53
|
|
31
54
|
Backend.datasources(scope, order_override) do |source|
|
32
55
|
Hiera.debug("Looking for data source #{source}")
|
@@ -43,11 +66,11 @@ class Hiera
|
|
43
66
|
end
|
44
67
|
case resolution_type
|
45
68
|
when :array
|
46
|
-
raise
|
69
|
+
raise(Exception, "Hiera type mismatch: expected Array and got #{new_answer.class}") unless new_answer.kind_of?(Array) or new_answer.kind_of?(String)
|
47
70
|
answer ||= []
|
48
71
|
answer << new_answer
|
49
72
|
when :hash
|
50
|
-
raise
|
73
|
+
raise(Exception, "Hiera type mismatch: expected Hash and got #{new_answer.class}") unless new_answer.kind_of?(Hash)
|
51
74
|
answer ||= {}
|
52
75
|
answer = new_answer.merge(answer)
|
53
76
|
else
|
@@ -55,12 +78,8 @@ class Hiera
|
|
55
78
|
break
|
56
79
|
end
|
57
80
|
end
|
58
|
-
zk.close if
|
81
|
+
zk.close if not zk.nil? and zk.connected?
|
59
82
|
return answer
|
60
|
-
|
61
|
-
#rescue ZookeeperExceptions::ZookeeperException, RuntimeError
|
62
|
-
# zk.close if !zk.nil?
|
63
|
-
# return nil
|
64
83
|
end
|
65
84
|
end
|
66
85
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hiera_zookeeper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 2
|
10
|
+
version: 0.2.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- zahna
|
@@ -93,6 +93,6 @@ rubyforge_project:
|
|
93
93
|
rubygems_version: 1.8.24
|
94
94
|
signing_key:
|
95
95
|
specification_version: 3
|
96
|
-
summary:
|
96
|
+
summary: A backend plugin to Hiera to enable it to reference data from Zookeeper.
|
97
97
|
test_files: []
|
98
98
|
|