hiera-simpledb 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
+