hiera-aws 0.0.7 → 0.0.8

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: af1b523a8c88063aabda1368e252f3fe783b4d28
4
- data.tar.gz: 0fff368a79278ffec786e2cae6364ca1748851c5
3
+ metadata.gz: 1562b0fa2d2ba741b2f5b12baff4e13567d72849
4
+ data.tar.gz: f00a5df6b7c0d3c58ff7f9faff00c2e09aaeab49
5
5
  SHA512:
6
- metadata.gz: 02c25dab91f3a9fb0bc7b185ec1d52ac736d51ca64f96cbc4831c35117515e9d91f3926cdaad105a5822067e329f9d4ebfbcb5d3672b9e5de4c6f067abbabfdd
7
- data.tar.gz: db6cf28569c75f75305dae9e78d344f0119e53f6c769be4cfbf165a8d39e6a7128d570e104a890bbe1609a43c12c9015b09070fc4c6a99f39474cef44e805e37
6
+ metadata.gz: 048087837fc6f406e5e8e3a70b1b1685114fdfbe80a79fb367437d31c55fe52f8476badd34e3d0e175886b313134f0689985438a43a1fb768359ad1a08cb27e9
7
+ data.tar.gz: 2af386fad0a859c8b7d133a9a2a4c12bea04c7c38c5c4402243ecdfdeb63cb4db65713e703135da99f257db728172d36f26b77c845b1206ca55fff6b0085f9f1
@@ -1,7 +1,7 @@
1
1
  class Hiera
2
2
  module Backend
3
3
  module Aws # rubocop:disable Documentation
4
- VERSION = "0.0.7"
4
+ VERSION = "0.0.8"
5
5
  end
6
6
  end
7
7
  end
@@ -18,6 +18,28 @@ class Hiera
18
18
  Hiera.debug("AWS backend initialized")
19
19
  end
20
20
 
21
+ def lookup(key, scope, order_override, resolution_type)
22
+ answer = nil
23
+
24
+ Hiera.debug("Looking up #{key} in AWS backend")
25
+
26
+ Backend.datasources(scope, order_override) do |source|
27
+ Hiera.debug("Looking for data source #{source}")
28
+
29
+ service_class = find_service_class(source)
30
+ next unless service_class
31
+
32
+ value = service_class.lookup(key, scope)
33
+ next if value.nil? || value.empty?
34
+
35
+ answer = Backend.parse_answer(value, scope)
36
+ break if answer
37
+ end
38
+ answer
39
+ end
40
+
41
+ private
42
+
21
43
  def setup_aws_credentials
22
44
  if Config[:aws] && Config[:aws][:access_key_id] && Config[:aws][:secret_access_key]
23
45
  Hiera.debug("Using AWS credentials from backend configuration")
@@ -31,30 +53,18 @@ class Hiera
31
53
  end
32
54
  end
33
55
 
34
- def lookup(key, scope, order_override, resolution_type) # rubocop:disable CyclomaticComplexity
35
- Backend.datasources(scope, order_override) do |elem|
36
- elements = elem.split "/"
37
- next unless elements[0] == "aws"
38
-
39
- service = elements[1]
40
-
41
- service_class = case service
42
- when "elasticache"
43
- Hiera::Backend::Aws::ElastiCache.new
44
- when "rds"
45
- Hiera::Backend::Aws::RDS.new
46
- end
47
- next if service_class.nil?
56
+ def find_service_class(source)
57
+ elements = source.split "/"
58
+ return nil unless elements[0] == "aws"
48
59
 
49
- value = service_class.lookup(key, scope)
50
- next if value.nil?
51
-
52
- # this only supports resolution_type => :priority at the moment.
53
- # TODO: implement :array and :hash merging
54
- value = Backend.parse_answer(value, scope)
55
- return value unless value.nil?
60
+ case elements[1]
61
+ when "elasticache"
62
+ Hiera::Backend::Aws::ElastiCache.new
63
+ when "rds"
64
+ Hiera::Backend::Aws::RDS.new
65
+ else
66
+ nil
56
67
  end
57
- nil
58
68
  end
59
69
  end
60
70
  end
@@ -57,6 +57,14 @@ class Hiera
57
57
  expect_any_instance_of(Aws::RDS).to receive(:lookup).with(key, scope)
58
58
  backend.lookup(*params)
59
59
  end
60
+
61
+ it "returns nil if service returns empty result" do
62
+ empty_result = []
63
+ Backend.stub(:datasources).and_yield "aws/rds"
64
+ Backend.stub(:parse_answer).and_return(empty_result)
65
+ Aws::RDS.stub(:new).and_return(double(:lookup => empty_result))
66
+ expect(backend.lookup(*params)).to be_nil
67
+ end
60
68
  end
61
69
  end
62
70
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hiera-aws
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mathias Lafeldt
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-02-20 00:00:00.000000000 Z
12
+ date: 2014-02-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: aws-sdk