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.
- data/lib/hiera/backend/simpledb_backend.rb +71 -0
- metadata +89 -0
@@ -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
|
+
|