hiera-mysql 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/hiera/backend/mysql_backend.rb +33 -23
  2. 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
- mysql_query = Backend.parse_string(Config[:mysql][:query], scope, { "key" => key })
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
- answer = Backend.empty_answer(resolution_type)
30
- Hiera.debug("resolution type is #{resolution_type}")
34
+ results = query(mysql_query)
31
35
 
32
- results = query(mysql_query)
33
- unless results.empty?
36
+ unless results.empty?
34
37
  case resolution_type
35
- when :array
36
- results.each do |ritem|
37
- answer << Backend.parse_answer(ritem, scope)
38
- end
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
- end
43
-
44
- return answer
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 arrays so you can do
70
+ # enhancement would be to make this easily support hashes so you can do
68
71
  # select foo,bar from table
69
- res.each do |row|
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
- prerelease: false
5
- segments:
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
- date: 2012-03-07 00:00:00 +00:00
18
- default_executable:
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
- prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- segments:
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
- version_requirements: *id002
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
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- segments:
70
- - 0
71
- version: "0"
72
- required_rubygems_version: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- segments:
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.3.6
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
-