hiera-simpledb 0.0.2

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,71 @@
1
+ # Class Simpledb_backend
2
+ # Description: AWS SimpleDB backend to Hiera.
3
+ # Author: Nathan Butler <nathan.butler@newsweekdailybeast.com>
4
+ #
5
+ class Hiera
6
+ module Backend
7
+ class Simpledb_backend
8
+ def initialize
9
+ begin
10
+ require 'aws-sdk'
11
+ rescue LoadError
12
+ require 'rubygems'
13
+ require 'aws-sdk'
14
+ end
15
+
16
+ @sdb = AWS::SimpleDB.new(Config[:simpledb])
17
+
18
+ Hiera.debug("Hiera SimpleDB backend initialized")
19
+ end
20
+
21
+ def lookup(key, scope, order_override, resolution_type)
22
+ answer = Backend.empty_answer(resolution_type)
23
+ query = Backend.parse_string(Config[:simpledb][:query], scope, { "key" => key })
24
+
25
+ Hiera.debug("Looking up \"#{key}\" in SimpleDB Backend")
26
+ Hiera.debug("Resolution_type: #{resolution_type}")
27
+
28
+ # Search list of domains specified in the hierarchy section in hiera.yaml
29
+ Backend.datasources(scope, order_override) do |source|
30
+ Hiera.debug("Looking for simpledb domain #{source}")
31
+
32
+ begin
33
+ results = @sdb.domains[source].items[key].data.attributes
34
+ rescue AWS::SimpleDB::Errors::NoSuchDomain
35
+ Hiera.warn("Cannot find domain #{source}, skipping")
36
+ next
37
+ end
38
+
39
+ next if ! results
40
+ next if results.empty?
41
+
42
+ Hiera.debug("Found Results: #{results.inspect}")
43
+
44
+ # for array resolution we just append to the array whatever
45
+ # we find, we then go onto the next file and keep adding to
46
+ # the array
47
+ #
48
+ # for priority searches we break after the first found data item
49
+ new_answer = Backend.parse_answer(results, scope)
50
+ case resolution_type
51
+ when :array
52
+ answer << new_answer
53
+ when :hash
54
+ answer = new_answer.merge answer
55
+ else
56
+ answer = new_answer
57
+ break
58
+ end
59
+ end
60
+ # The hiera backend.rb library breaks if the answer is true
61
+ # and empty [] or {} return true, which prevents additional
62
+ # backends from running. We don't want to prevent this so we
63
+ # return nil instead so additional lesser priority backends
64
+ # can run. The reason this works for :priority is that
65
+ # Backend.empty_answer(:priority) returns nil already
66
+ answer = nil if answer == Backend.empty_answer(resolution_type)
67
+ return answer
68
+ end
69
+ end
70
+ end
71
+ end
metadata ADDED
@@ -0,0 +1,89 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hiera-simpledb
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 2
9
+ version: 0.0.2
10
+ platform: ruby
11
+ authors:
12
+ - Nathan Butler
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2012-04-10 00:00:00 -04: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
35
+ name: aws-sdk
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 1
43
+ - 3
44
+ - 9
45
+ version: 1.3.9
46
+ type: :runtime
47
+ version_requirements: *id002
48
+ description: Hiera back end for retrieving configuration values from SimpleDB
49
+ email: nathan.butler@newsweekdailybeast.com
50
+ executables: []
51
+
52
+ extensions: []
53
+
54
+ extra_rdoc_files: []
55
+
56
+ files:
57
+ - lib/hiera/backend/simpledb_backend.rb
58
+ has_rdoc: true
59
+ homepage: http://github.com/butlern/hiera-simpledb
60
+ licenses: []
61
+
62
+ post_install_message:
63
+ rdoc_options: []
64
+
65
+ require_paths:
66
+ - lib
67
+ required_ruby_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ segments:
72
+ - 0
73
+ version: "0"
74
+ required_rubygems_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ segments:
79
+ - 0
80
+ version: "0"
81
+ requirements: []
82
+
83
+ rubyforge_project:
84
+ rubygems_version: 1.3.6
85
+ signing_key:
86
+ specification_version: 3
87
+ summary: Simpledb backend for Hiera
88
+ test_files: []
89
+