hiera-mysql 0.1.1 → 0.2.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.
- data/lib/hiera/backend/mysql_backend.rb +33 -23
- metadata +36 -62
@@ -1,7 +1,7 @@
|
|
1
1
|
# Class Mysql_backend
|
2
2
|
# Description: MySQL back end to Hiera.
|
3
3
|
# Author: Craig Dunn <craig@craigdunn.org>
|
4
|
-
#
|
4
|
+
#
|
5
5
|
class Hiera
|
6
6
|
module Backend
|
7
7
|
class Mysql_backend
|
@@ -12,42 +12,45 @@ class Hiera
|
|
12
12
|
require 'rubygems'
|
13
13
|
require 'mysql'
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
Hiera.debug("mysql_backend initialized")
|
17
17
|
end
|
18
18
|
def lookup(key, scope, order_override, resolution_type)
|
19
|
+
|
19
20
|
Hiera.debug("mysql_backend invoked lookup")
|
21
|
+
Hiera.debug("resolution type is #{resolution_type}")
|
20
22
|
|
23
|
+
answer = nil
|
21
24
|
|
22
25
|
# Parse the mysql query from the config, we also pass in key
|
23
26
|
# to extra_data so this can be interpreted into the query
|
24
27
|
# string
|
25
28
|
#
|
26
|
-
|
29
|
+
queries = [ Config[:mysql][:query] ].flatten
|
30
|
+
queries.map! { |q| Backend.parse_string(q, scope, {"key" => key}) }
|
27
31
|
|
32
|
+
queries.each do |mysql_query|
|
28
33
|
|
29
|
-
|
30
|
-
Hiera.debug("resolution type is #{resolution_type}")
|
34
|
+
results = query(mysql_query)
|
31
35
|
|
32
|
-
|
33
|
-
unless results.empty?
|
36
|
+
unless results.empty?
|
34
37
|
case resolution_type
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
else
|
40
|
-
answer = Backend.parse_answer(results[0], scope)
|
38
|
+
when :array
|
39
|
+
answer ||= []
|
40
|
+
results.each do |ritem|
|
41
|
+
answer << Backend.parse_answer(ritem, scope)
|
41
42
|
end
|
42
|
-
|
43
|
-
|
44
|
-
|
43
|
+
else
|
44
|
+
answer = Backend.parse_answer(results[0], scope)
|
45
|
+
break
|
46
|
+
end
|
47
|
+
end
|
45
48
|
|
49
|
+
end
|
50
|
+
answer
|
46
51
|
end
|
47
|
-
|
48
|
-
|
49
52
|
|
50
|
-
def query (sql)
|
53
|
+
def query (sql)
|
51
54
|
Hiera.debug("Executing SQL Query: #{sql}")
|
52
55
|
|
53
56
|
data=[]
|
@@ -58,21 +61,28 @@ class Hiera
|
|
58
61
|
|
59
62
|
dbh = Mysql.new(mysql_host, mysql_user, mysql_pass, mysql_database)
|
60
63
|
dbh.reconnect = true
|
61
|
-
|
64
|
+
|
62
65
|
res = dbh.query(sql)
|
63
66
|
Hiera.debug("Mysql Query returned #{res.num_rows} rows")
|
64
67
|
|
65
68
|
|
66
69
|
# Currently we'll just return the first element of each row, a future
|
67
|
-
# enhancement would be to make this easily support
|
70
|
+
# enhancement would be to make this easily support hashes so you can do
|
68
71
|
# select foo,bar from table
|
69
|
-
|
72
|
+
#
|
73
|
+
if res.num_fields < 2
|
74
|
+
res.each do |row|
|
70
75
|
Hiera.debug("Mysql value : #{row[0]}")
|
71
76
|
data << row[0]
|
77
|
+
end
|
78
|
+
|
79
|
+
else
|
80
|
+
res.each_hash do |row|
|
81
|
+
data << row
|
82
|
+
end
|
72
83
|
end
|
73
84
|
|
74
85
|
return data
|
75
|
-
|
76
86
|
end
|
77
87
|
end
|
78
88
|
end
|
metadata
CHANGED
@@ -1,87 +1,61 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: hiera-mysql
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 1
|
8
|
-
- 1
|
9
|
-
version: 0.1.1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Craig Dunn
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
21
|
-
name: hiera
|
22
|
-
prerelease: false
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
-
requirements:
|
25
|
-
- - ">="
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
segments:
|
28
|
-
- 0
|
29
|
-
- 2
|
30
|
-
- 0
|
31
|
-
version: 0.2.0
|
32
|
-
type: :runtime
|
33
|
-
version_requirements: *id001
|
34
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2013-01-16 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
35
15
|
name: mysql
|
36
|
-
|
37
|
-
|
38
|
-
requirements:
|
39
|
-
- -
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
|
42
|
-
- 0
|
43
|
-
version: "0"
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
44
22
|
type: :runtime
|
45
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
46
30
|
description: Hiera back end for retrieving configuration values from MySQL
|
47
31
|
email: craig@craigdunn.org
|
48
32
|
executables: []
|
49
|
-
|
50
33
|
extensions: []
|
51
|
-
|
52
34
|
extra_rdoc_files: []
|
53
|
-
|
54
|
-
files:
|
35
|
+
files:
|
55
36
|
- lib/hiera/backend/mysql_backend.rb
|
56
|
-
has_rdoc: true
|
57
37
|
homepage: http://github.com/crayfishx/hiera-mysql
|
58
38
|
licenses: []
|
59
|
-
|
60
39
|
post_install_message:
|
61
40
|
rdoc_options: []
|
62
|
-
|
63
|
-
require_paths:
|
41
|
+
require_paths:
|
64
42
|
- lib
|
65
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
requirements:
|
74
|
-
- -
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
|
77
|
-
- 0
|
78
|
-
version: "0"
|
43
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
44
|
+
none: false
|
45
|
+
requirements:
|
46
|
+
- - ! '>='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
79
55
|
requirements: []
|
80
|
-
|
81
56
|
rubyforge_project:
|
82
|
-
rubygems_version: 1.
|
57
|
+
rubygems_version: 1.8.24
|
83
58
|
signing_key:
|
84
59
|
specification_version: 3
|
85
60
|
summary: MySQL backend for Hiera
|
86
61
|
test_files: []
|
87
|
-
|