hiera-aws 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f5b0d54142dbe9c5ab4ae5bca2c50a48dafc0a65
4
+ data.tar.gz: b4a17bbc96478779d2b819faf36d9078bc9ec3d8
5
+ SHA512:
6
+ metadata.gz: 382da2fccca8a46b53acd289663a4d54c538c4c8b30de6b0ad7e9216d1a3fa0d3666ef2c948bc85714fc6c29e324c64e57c9c56d82bda186bf99a499e3b21e88
7
+ data.tar.gz: 8b7995e6b0b4af55a45f80165a9b6bdbffb25f6a4436848956840d3a20601416f65641026715c87313c4cef0de4c16aaab2d5a41787f4204c90556069ab34ab8
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  AllCops:
2
- Includes:
2
+ Include:
3
3
  - Gemfile
4
4
  - Rakefile
5
5
 
data/README.md CHANGED
@@ -68,7 +68,6 @@ The backend currently supports the following keys that you can pass to the
68
68
 
69
69
  Returns an array of all Redis cluster nodes for the CloudFormation stack of an
70
70
  EC2 instance. The instance is identified by the Puppet fact `$ec2_instance_id`.
71
- The returned array has the format `["host1", "host2"]`.
72
71
 
73
72
  Usage:
74
73
 
@@ -76,6 +75,14 @@ Usage:
76
75
  cluster_nodes = hiera("redis_cluster_nodes_for_cfn_stack")
77
76
  ```
78
77
 
78
+ For each Redis cluster node in the array the following hash is returned:
79
+
80
+ ```json
81
+ {
82
+ "endpoint" => { "address" => "some.redis.endpoint", "port" => 6379 },
83
+ }
84
+ ```
85
+
79
86
  ### redis_cluster_replica_groups_for_cfn_stack
80
87
 
81
88
  Returns an array of the Redis Replication Groups of all Redis cluster nodes for
data/hiera-aws.gemspec CHANGED
@@ -23,5 +23,5 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "bundler"
24
24
  spec.add_development_dependency "rake"
25
25
  spec.add_development_dependency "rspec"
26
- spec.add_development_dependency "rubocop"
26
+ spec.add_development_dependency "rubocop", "~> 0.21.0"
27
27
  end
@@ -5,9 +5,24 @@ class Hiera
5
5
  module Aws
6
6
  # Implementation of Hiera keys for aws/elasticache
7
7
  class ElastiCache < Base
8
- #
9
- # XXX: Lots of spiked code ahead that MUST be refactored.
10
- #
8
+ def redis_cluster_replica_groups_for_cfn_stack
9
+ cluster_replica_groups_for_cfn_stack(:redis)
10
+ end
11
+
12
+ def redis_cluster_nodes_for_cfn_stack
13
+ cluster_nodes_for_cfn_stack(:redis).map do |node|
14
+ { "endpoint" => stringify_keys(node.fetch(:endpoint)) }
15
+ end
16
+ end
17
+
18
+ def memcached_cluster_nodes_for_cfn_stack
19
+ cluster_nodes_for_cfn_stack(:memcached).map do |node|
20
+ node.fetch(:endpoint)[:address]
21
+ end
22
+ end
23
+
24
+ private
25
+
11
26
  def cfn_stack_name(instance_id)
12
27
  client = AWS::EC2.new
13
28
  instances = client.instances[instance_id]
@@ -47,13 +62,8 @@ class Hiera
47
62
  raise MissingFactError, "ec2_instance_id not found" unless ec2_instance_id
48
63
 
49
64
  stack_name = cfn_stack_name(ec2_instance_id)
50
- endpoints = []
51
65
  clusters = cache_clusters_in_cfn_stack(stack_name, cluster_engine)
52
- clusters.each do |cluster|
53
- nodes = cluster.fetch(:cache_nodes)
54
- endpoints += nodes.map { |node| node[:endpoint][:address] }
55
- end
56
- endpoints
66
+ clusters.reduce([]) { |a, e| a + e.fetch(:cache_nodes) }
57
67
  end
58
68
 
59
69
  def cluster_replica_groups_for_cfn_stack(cluster_engine = nil)
@@ -85,18 +95,6 @@ class Hiera
85
95
  }
86
96
  end
87
97
  end
88
-
89
- def redis_cluster_replica_groups_for_cfn_stack
90
- cluster_replica_groups_for_cfn_stack(:redis)
91
- end
92
-
93
- def redis_cluster_nodes_for_cfn_stack
94
- cluster_nodes_for_cfn_stack(:redis)
95
- end
96
-
97
- def memcached_cluster_nodes_for_cfn_stack
98
- cluster_nodes_for_cfn_stack(:memcached)
99
- end
100
98
  end
101
99
  end
102
100
  end
@@ -39,7 +39,7 @@ class Hiera
39
39
  def db_instances_with_tags(tags)
40
40
  db_instances.select do |i|
41
41
  all_tags = db_instance_tags(i.fetch(:db_instance_identifier))
42
- tags.all? { |k, v| tags[k] == all_tags[k] }
42
+ tags.all? { |k, _| tags[k] == all_tags[k] }
43
43
  end
44
44
  end
45
45
 
@@ -1,7 +1,7 @@
1
1
  class Hiera
2
2
  module Backend
3
3
  module Aws # rubocop:disable Documentation
4
- VERSION = "0.3.0"
4
+ VERSION = "0.4.0"
5
5
  end
6
6
  end
7
7
  end
@@ -18,7 +18,7 @@ class Hiera
18
18
  Hiera.debug("AWS backend initialized")
19
19
  end
20
20
 
21
- def lookup(key, scope, order_override, resolution_type)
21
+ def lookup(key, scope, order_override, resolution_type) # rubocop:disable UnusedMethodArgument
22
22
  answer = nil
23
23
 
24
24
  Hiera.debug("Looking up '#{key}' in AWS backend")
@@ -65,7 +65,10 @@ class Hiera
65
65
  allow(client).to receive(:describe_cache_clusters).and_return(cache_clusters)
66
66
  AWS::ElastiCache::Client.stub(:new => client)
67
67
 
68
- expect(elasticache.redis_cluster_nodes_for_cfn_stack).to eq ["1.1.1.1", "2.2.2.2"]
68
+ expect(elasticache.redis_cluster_nodes_for_cfn_stack).to eq [
69
+ { "endpoint" => { "address" => "1.1.1.1", "port" => 1234 } },
70
+ { "endpoint" => { "address" => "2.2.2.2", "port" => 1234 } },
71
+ ]
69
72
  end
70
73
  end
71
74
 
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hiera-aws
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
5
- prerelease:
4
+ version: 0.4.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Mathias Lafeldt
@@ -11,88 +10,78 @@ authors:
11
10
  autorequire:
12
11
  bindir: bin
13
12
  cert_chain: []
14
- date: 2014-03-24 00:00:00.000000000 Z
13
+ date: 2014-05-08 00:00:00.000000000 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: aws-sdk
18
17
  requirement: !ruby/object:Gem::Requirement
19
- none: false
20
18
  requirements:
21
- - - ! '>='
19
+ - - '>='
22
20
  - !ruby/object:Gem::Version
23
21
  version: '0'
24
22
  type: :runtime
25
23
  prerelease: false
26
24
  version_requirements: !ruby/object:Gem::Requirement
27
- none: false
28
25
  requirements:
29
- - - ! '>='
26
+ - - '>='
30
27
  - !ruby/object:Gem::Version
31
28
  version: '0'
32
29
  - !ruby/object:Gem::Dependency
33
30
  name: bundler
34
31
  requirement: !ruby/object:Gem::Requirement
35
- none: false
36
32
  requirements:
37
- - - ! '>='
33
+ - - '>='
38
34
  - !ruby/object:Gem::Version
39
35
  version: '0'
40
36
  type: :development
41
37
  prerelease: false
42
38
  version_requirements: !ruby/object:Gem::Requirement
43
- none: false
44
39
  requirements:
45
- - - ! '>='
40
+ - - '>='
46
41
  - !ruby/object:Gem::Version
47
42
  version: '0'
48
43
  - !ruby/object:Gem::Dependency
49
44
  name: rake
50
45
  requirement: !ruby/object:Gem::Requirement
51
- none: false
52
46
  requirements:
53
- - - ! '>='
47
+ - - '>='
54
48
  - !ruby/object:Gem::Version
55
49
  version: '0'
56
50
  type: :development
57
51
  prerelease: false
58
52
  version_requirements: !ruby/object:Gem::Requirement
59
- none: false
60
53
  requirements:
61
- - - ! '>='
54
+ - - '>='
62
55
  - !ruby/object:Gem::Version
63
56
  version: '0'
64
57
  - !ruby/object:Gem::Dependency
65
58
  name: rspec
66
59
  requirement: !ruby/object:Gem::Requirement
67
- none: false
68
60
  requirements:
69
- - - ! '>='
61
+ - - '>='
70
62
  - !ruby/object:Gem::Version
71
63
  version: '0'
72
64
  type: :development
73
65
  prerelease: false
74
66
  version_requirements: !ruby/object:Gem::Requirement
75
- none: false
76
67
  requirements:
77
- - - ! '>='
68
+ - - '>='
78
69
  - !ruby/object:Gem::Version
79
70
  version: '0'
80
71
  - !ruby/object:Gem::Dependency
81
72
  name: rubocop
82
73
  requirement: !ruby/object:Gem::Requirement
83
- none: false
84
74
  requirements:
85
- - - ! '>='
75
+ - - ~>
86
76
  - !ruby/object:Gem::Version
87
- version: '0'
77
+ version: 0.21.0
88
78
  type: :development
89
79
  prerelease: false
90
80
  version_requirements: !ruby/object:Gem::Requirement
91
- none: false
92
81
  requirements:
93
- - - ! '>='
82
+ - - ~>
94
83
  - !ruby/object:Gem::Version
95
- version: '0'
84
+ version: 0.21.0
96
85
  description: Hiera AWS Backend
97
86
  email:
98
87
  - mathias.lafeldt@jimdo.com
@@ -122,27 +111,26 @@ files:
122
111
  homepage: https://github.com/Jimdo/hiera-aws
123
112
  licenses:
124
113
  - Apache 2.0
114
+ metadata: {}
125
115
  post_install_message:
126
116
  rdoc_options: []
127
117
  require_paths:
128
118
  - lib
129
119
  required_ruby_version: !ruby/object:Gem::Requirement
130
- none: false
131
120
  requirements:
132
- - - ! '>='
121
+ - - '>='
133
122
  - !ruby/object:Gem::Version
134
123
  version: '0'
135
124
  required_rubygems_version: !ruby/object:Gem::Requirement
136
- none: false
137
125
  requirements:
138
- - - ! '>='
126
+ - - '>='
139
127
  - !ruby/object:Gem::Version
140
128
  version: '0'
141
129
  requirements: []
142
130
  rubyforge_project:
143
- rubygems_version: 1.8.23
131
+ rubygems_version: 2.1.11
144
132
  signing_key:
145
- specification_version: 3
133
+ specification_version: 4
146
134
  summary: Hiera AWS Backend
147
135
  test_files:
148
136
  - spec/aws_backend_spec.rb