bbc-cosmos-tools 0.4.3 → 0.4.4

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: 85c052e70bf55d6b859d9c3b6f7aec1573828fb0
4
- data.tar.gz: 58cdf9bb265c6f1544b7a60bddfa6a090e13d4c6
3
+ metadata.gz: c9f73c62ff74b961229432dd533a9ebd0bf8b025
4
+ data.tar.gz: 3d456c48f0f1455b0f0ec8112ae2f3507203f4d0
5
5
  SHA512:
6
- metadata.gz: 93b2ed6fe6c2155e022e9b17bfc4626d651f5e491b04ebb3cb6fd4e659d507c6adbb27c5229a95727596c7f50dcc47860ff48e78cab7bd3248df67d9969719a1
7
- data.tar.gz: d62438d8c0a3f2639dbdd41bd3c162749a98323551c5fb8b212bfa5b3756ba2075f1d0d662438fcf483848141b84683f430d912b80e46b9320770cd1d39c6775
6
+ metadata.gz: 7da7d791f4eb7318141eb379f20d6cf6ac7a4da67a7744df2b90c583b0bbd1c90460e22c65a3dad726b4c24f58fca7596deb69e087f0cadf4dec5ff0e8b6d7dc
7
+ data.tar.gz: f027c41e34a4eb9c50a0382c81cfe1b4d9d6ccdc60fc044f204eb71321dd83620c7d1b1f93cf5e4f76dc795daf5eca911374b0854e92d11fb18eb91ee560fa63
@@ -125,6 +125,13 @@ module BBC
125
125
  @l.(d, id, options[:env])
126
126
  end
127
127
 
128
+ stack_meta = stack_data(component, stack_name, options[:env])
129
+
130
+ data['Parameters'] = deep_merge(
131
+ stack_parameters(stack_meta['parameters']),
132
+ data['Parameters']
133
+ )
134
+
128
135
  params = Tools::Cloudformation::Generator.parameters(data, false)
129
136
 
130
137
  post_data = {
@@ -201,14 +208,34 @@ module BBC
201
208
 
202
209
  private
203
210
 
211
+ def stack_parameters(stack_data)
212
+ stack_data.reduce({}) do |accum, (key, value)|
213
+ accum.tap do |a|
214
+ a[key] = {
215
+ "Default" => value["value"]
216
+ }
217
+ end
218
+ end
219
+ end
220
+
221
+ def stack_data(component, stack_name, env = 'int')
222
+ response = api.get sprintf(config.app['stack_details'], env, component, stack_name)
223
+ JSON.parse(response.body)
224
+ end
225
+
204
226
  def latest_ami_for(component, env = 'int')
205
227
  response = api.get sprintf(config.app['deployments'], component, env)
206
228
  api_error response unless response.success?
207
229
  JSON.parse(response.body).first['image']['ami_id']
208
230
  end
231
+
232
+ def deep_merge(merger, mergee)
233
+ merge_proc = Proc.new { |key, v1, v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &merge_proc) : v2 }
234
+ merger.merge(mergee, &merge_proc)
235
+ end
236
+
209
237
  end
210
238
  end
211
239
  end
212
240
  end
213
241
  end
214
-
@@ -11,8 +11,7 @@ module BBC
11
11
  @config = config
12
12
  end
13
13
 
14
- def generate_data
15
- to_json = false
14
+ def generate_data(to_json = false)
16
15
 
17
16
  # Because the block is evaluated in the context of another class
18
17
  # i.e. instance_eval &block
@@ -1,7 +1,7 @@
1
1
  module BBC
2
2
  module Cosmos
3
3
  module Tools
4
- VERSION = "0.4.3"
4
+ VERSION = "0.4.4"
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bbc-cosmos-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Jack
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-02 00:00:00.000000000 Z
11
+ date: 2014-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler