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.
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
-