hiera-classifier 0.0.1

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.
@@ -0,0 +1,58 @@
1
+ require 'sequel'
2
+
3
+ class Hiera
4
+ module Backend
5
+ class Classifier_backend
6
+ def initialize
7
+ Hiera.debug("Hiera Classifier backend starting")
8
+ @conf = Config[:classifier]
9
+ end
10
+
11
+ def lookup(key, scope, order_override, resolution_type)
12
+ answer = Backend.empty_answer(resolution_type)
13
+
14
+ Hiera.debug("Looking up #{key} in Classifier backend")
15
+
16
+ Backend.datasources(scope, order_override) do |source|
17
+ Hiera.debug("Looking up #{key} in Classifier backend source: #{source}")
18
+
19
+ if key == 'classes'
20
+ connect
21
+ data = @db[:sources_classes].filter(:source_name => source).map(:class_name)
22
+ else
23
+ next
24
+ end
25
+
26
+ next if ! data
27
+ next if data.nil?
28
+ new_answer = Backend.parse_answer(data, scope)
29
+
30
+ case resolution_type
31
+ when :array
32
+ unless new_answer.kind_of? Array or new_answer.kind_of? String
33
+ raise Exception, "Hiera type mismatch: expected Array and got #{new_answer.class}"
34
+ end
35
+ answer << new_answer
36
+ else
37
+ answer = new_answer
38
+ break
39
+ end
40
+ end
41
+
42
+ return answer
43
+ end
44
+
45
+ def connect
46
+ unless connected?
47
+ @db = Sequel.connect(@conf[:database])
48
+ @connected = true
49
+ end
50
+ end
51
+
52
+ def connected?
53
+ @connected || false
54
+ end
55
+ end
56
+ end
57
+ end
58
+
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hiera-classifier
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - Kelsey Hightower
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-06-02 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: hiera
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ! '>='
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ none: false
22
+ requirement: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ none: false
28
+ prerelease: false
29
+ type: :runtime
30
+ - !ruby/object:Gem::Dependency
31
+ name: sequel
32
+ version_requirements: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ! '>='
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ none: false
38
+ requirement: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ! '>='
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ none: false
44
+ prerelease: false
45
+ type: :runtime
46
+ description: Query Hiera data from Puppet Classifier
47
+ email: kelsey@puppetlabs.com
48
+ executables: []
49
+ extensions: []
50
+ extra_rdoc_files: []
51
+ files:
52
+ - lib/hiera/backend/classifier_backend.rb
53
+ homepage: https://github.com/kelseyhightower/hiera-classifier
54
+ licenses: []
55
+ post_install_message:
56
+ rdoc_options: []
57
+ require_paths:
58
+ - lib
59
+ required_ruby_version: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ none: false
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ none: false
71
+ requirements: []
72
+ rubyforge_project:
73
+ rubygems_version: 1.8.24
74
+ signing_key:
75
+ specification_version: 3
76
+ summary: Puppet Classifier backend for Hiera
77
+ test_files: []
78
+ ...