hiera-mysql-json-backend-jruby 1.0.1 → 1.1.0
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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c96d6e30cfeffa3fa425bfe7346b80d22a1f77b
|
4
|
+
data.tar.gz: 88938c126d8489901ee3a5fd883c52840bdd18a1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 81d60c95edcfecca8cec2cb6d90be52cc301ebd6a44a975b98a29924ae42218911699efef5fc8d2d9794db7f9420faf2e7563c9e265f45669a5635991db511d6
|
7
|
+
data.tar.gz: 593f3b3910733414be38f96c2fd3e15812ce3f577c1cf88e6d7a7b9fa61248e1acd1e0c11a53a0352167693fee0aa5b4f31451dbd814afe3182c4f466a38bf18
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |gem|
|
4
4
|
gem.name = "hiera-mysql-json-backend-jruby"
|
5
|
-
gem.version = "1.0
|
5
|
+
gem.version = "1.1.0"
|
6
6
|
gem.authors = ["Hostnet"]
|
7
7
|
gem.email = ["opensource@hostnet.nl"]
|
8
8
|
gem.description = %q{Alternative MySQL backend with json support for hiera}
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |gem|
|
4
4
|
gem.name = "hiera-mysql-json-backend"
|
5
|
-
gem.version = "1.0
|
5
|
+
gem.version = "1.1.0"
|
6
6
|
gem.authors = ["Hostnet"]
|
7
7
|
gem.email = ["opensource@hostnet.nl"]
|
8
8
|
gem.description = %q{Alternative MySQL backend with json support for hiera}
|
@@ -18,7 +18,25 @@ class Hiera
|
|
18
18
|
|
19
19
|
@cache = cache || Filecache.new
|
20
20
|
|
21
|
-
Hiera.debug(
|
21
|
+
Hiera.debug('Hiera mysql_json initialized')
|
22
|
+
end
|
23
|
+
|
24
|
+
def should_lookup?(constraints, scope)
|
25
|
+
return true unless constraints.is_a?(Hash)
|
26
|
+
should_lookup = false
|
27
|
+
constraints.each do |item, matchers|
|
28
|
+
next unless scope.exist?(item.to_s)
|
29
|
+
if scope[item.to_s] =~ compile_regexes(matchers)
|
30
|
+
should_lookup = true
|
31
|
+
break
|
32
|
+
end
|
33
|
+
end
|
34
|
+
should_lookup
|
35
|
+
end
|
36
|
+
|
37
|
+
def compile_regexes(regexes)
|
38
|
+
res = regexes.map { |re| Regexp.compile(re) }
|
39
|
+
Regexp.union(res)
|
22
40
|
end
|
23
41
|
|
24
42
|
def lookup(key, scope, order_override, resolution_type)
|
@@ -28,9 +46,11 @@ class Hiera
|
|
28
46
|
# so hiera('myvalue', 'test1') returns [nil,nil,nil,nil]
|
29
47
|
results = nil
|
30
48
|
|
31
|
-
Hiera.debug("looking up #{key} in
|
49
|
+
Hiera.debug("looking up #{key} in mysql_json Backend")
|
32
50
|
Hiera.debug("resolution type is #{resolution_type}")
|
33
51
|
|
52
|
+
return nil unless should_lookup?(Config[:mysql_json][:only_for], scope)
|
53
|
+
|
34
54
|
Backend.datasources(scope, order_override) do |source|
|
35
55
|
Hiera.debug("Looking for data source #{source}")
|
36
56
|
sqlfile = Backend.datafile(:mysql_json, scope, source, "sql") || next
|
@@ -41,20 +61,20 @@ class Hiera
|
|
41
61
|
end
|
42
62
|
|
43
63
|
mysql_config = data.fetch(:dbconfig, {})
|
44
|
-
mysql_host = mysql_config.fetch(:host, nil) || Config[:
|
45
|
-
mysql_user = mysql_config.fetch(:user, nil) || Config[:
|
46
|
-
mysql_pass = mysql_config.fetch(:pass, nil) || Config[:
|
47
|
-
mysql_port = mysql_config.fetch(:port, nil) || Config[:
|
48
|
-
mysql_database = mysql_config.fetch(:database, nil) || Config[:
|
64
|
+
mysql_host = mysql_config.fetch(:host, nil) || Config[:mysql_json][:host] || 'localhost'
|
65
|
+
mysql_user = mysql_config.fetch(:user, nil) || Config[:mysql_json][:user]
|
66
|
+
mysql_pass = mysql_config.fetch(:pass, nil) || Config[:mysql_json][:pass]
|
67
|
+
mysql_port = mysql_config.fetch(:port, nil) || Config[:mysql_json][:port] || '3306'
|
68
|
+
mysql_database = mysql_config.fetch(:database, nil) || Config[:mysql_json][:database]
|
49
69
|
|
50
70
|
connection_hash = {
|
51
|
-
:
|
52
|
-
:
|
53
|
-
:
|
54
|
-
:
|
55
|
-
:
|
56
|
-
:
|
57
|
-
|
71
|
+
host: mysql_host,
|
72
|
+
username: mysql_user,
|
73
|
+
password: mysql_pass,
|
74
|
+
database: mysql_database,
|
75
|
+
port: mysql_port,
|
76
|
+
reconnect: true
|
77
|
+
}
|
58
78
|
|
59
79
|
Hiera.debug("data #{data.inspect}")
|
60
80
|
next if data.empty?
|
@@ -70,6 +90,7 @@ class Hiera
|
|
70
90
|
begin
|
71
91
|
new_answer = JSON.parse(sql_results[0]['value'])
|
72
92
|
rescue
|
93
|
+
raise Exception, "JSON parse error for key '#{key}'." unless Config[:mysql_json][:ignore_json_parse_errors]
|
73
94
|
Hiera.debug("Miserable failure while looking for #{key}.")
|
74
95
|
next
|
75
96
|
end
|
@@ -88,19 +109,18 @@ class Hiera
|
|
88
109
|
break
|
89
110
|
end
|
90
111
|
end
|
91
|
-
|
112
|
+
results
|
92
113
|
end
|
93
114
|
|
94
|
-
|
95
115
|
def query(connection_hash, query)
|
96
116
|
Hiera.debug("Executing SQL Query: #{query}")
|
97
117
|
|
98
|
-
data=[]
|
99
|
-
mysql_host=connection_hash[:host]
|
100
|
-
mysql_user=connection_hash[:username]
|
101
|
-
mysql_pass=connection_hash[:password]
|
102
|
-
mysql_database=connection_hash[:database]
|
103
|
-
mysql_port=connection_hash[:port]
|
118
|
+
data = []
|
119
|
+
mysql_host = connection_hash[:host]
|
120
|
+
mysql_user = connection_hash[:username]
|
121
|
+
mysql_pass = connection_hash[:password]
|
122
|
+
mysql_database = connection_hash[:database]
|
123
|
+
mysql_port = connection_hash[:port]
|
104
124
|
|
105
125
|
if defined?(JRUBY_VERSION)
|
106
126
|
Jdbc::MySQL.load_driver
|
@@ -109,7 +129,7 @@ class Hiera
|
|
109
129
|
props.set_property :user, mysql_user
|
110
130
|
props.set_property :password, mysql_pass
|
111
131
|
|
112
|
-
conn = com.mysql.jdbc.Driver.new.connect(url,props)
|
132
|
+
conn = com.mysql.jdbc.Driver.new.connect(url, props)
|
113
133
|
stmt = conn.create_statement
|
114
134
|
|
115
135
|
res = stmt.execute_query(query)
|
@@ -118,7 +138,7 @@ class Hiera
|
|
118
138
|
|
119
139
|
Hiera.debug("Mysql Query returned #{numcols} rows")
|
120
140
|
|
121
|
-
while
|
141
|
+
while res.next
|
122
142
|
if numcols < 2
|
123
143
|
Hiera.debug("Mysql value : #{res.getString(1)}")
|
124
144
|
data << res.getString(1)
|
@@ -144,8 +164,7 @@ class Hiera
|
|
144
164
|
end
|
145
165
|
end
|
146
166
|
|
147
|
-
|
148
|
-
|
167
|
+
data
|
149
168
|
end
|
150
169
|
end
|
151
170
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hiera-mysql-json-backend-jruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hostnet
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jdbc-mysql
|