humidifier-reservoir 0.2.3 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +15 -3
- data/docs/Humidifier.html +2 -2
- data/docs/Humidifier/Reservoir.html +23 -21
- data/docs/Humidifier/Reservoir/BaseMapper.html +1 -1
- data/docs/Humidifier/Reservoir/CLI.html +5 -5
- data/docs/Humidifier/Reservoir/Config.html +1 -1
- data/docs/Humidifier/Reservoir/Error.html +1 -1
- data/docs/Humidifier/Reservoir/Mapping.html +1 -1
- data/docs/Humidifier/Reservoir/ParameterList.html +197 -0
- data/docs/Humidifier/Reservoir/Stack.html +123 -41
- data/docs/Humidifier/Reservoir/Stack/Export.html +1 -1
- data/docs/_index.html +19 -1
- data/docs/class_list.html +1 -1
- data/docs/file.LICENSE.html +1 -1
- data/docs/file.README.html +25 -9
- data/docs/index.html +25 -9
- data/docs/method_list.html +40 -24
- data/docs/top-level-namespace.html +1 -1
- data/lib/humidifier/reservoir.rb +1 -0
- data/lib/humidifier/reservoir/cli.rb +10 -3
- data/lib/humidifier/reservoir/parameter_list.rb +16 -0
- data/lib/humidifier/reservoir/stack.rb +31 -11
- data/lib/humidifier/reservoir/version.rb +1 -1
- metadata +3 -1
data/docs/method_list.html
CHANGED
@@ -118,16 +118,16 @@
|
|
118
118
|
|
119
119
|
<li class="even ">
|
120
120
|
<div class="item">
|
121
|
-
<span class='object_link'><a href="Humidifier/Reservoir/
|
122
|
-
<small>Humidifier::Reservoir::
|
121
|
+
<span class='object_link'><a href="Humidifier/Reservoir/Stack.html#deploy-instance_method" title="Humidifier::Reservoir::Stack#deploy (method)">#deploy</a></span>
|
122
|
+
<small>Humidifier::Reservoir::Stack</small>
|
123
123
|
</div>
|
124
124
|
</li>
|
125
125
|
|
126
126
|
|
127
127
|
<li class="odd ">
|
128
128
|
<div class="item">
|
129
|
-
<span class='object_link'><a href="Humidifier/Reservoir/
|
130
|
-
<small>Humidifier::Reservoir::
|
129
|
+
<span class='object_link'><a href="Humidifier/Reservoir/CLI.html#deploy-instance_method" title="Humidifier::Reservoir::CLI#deploy (method)">#deploy</a></span>
|
130
|
+
<small>Humidifier::Reservoir::CLI</small>
|
131
131
|
</div>
|
132
132
|
</li>
|
133
133
|
|
@@ -166,29 +166,37 @@
|
|
166
166
|
|
167
167
|
<li class="even ">
|
168
168
|
<div class="item">
|
169
|
-
<span class='object_link'><a href="Humidifier/Reservoir/
|
170
|
-
<small>Humidifier::Reservoir::
|
169
|
+
<span class='object_link'><a href="Humidifier/Reservoir/ParameterList.html#from-class_method" title="Humidifier::Reservoir::ParameterList.from (method)">from</a></span>
|
170
|
+
<small>Humidifier::Reservoir::ParameterList</small>
|
171
171
|
</div>
|
172
172
|
</li>
|
173
173
|
|
174
174
|
|
175
175
|
<li class="odd ">
|
176
176
|
<div class="item">
|
177
|
-
<span class='object_link'><a href="Humidifier/Reservoir/
|
178
|
-
<small>Humidifier::Reservoir::
|
177
|
+
<span class='object_link'><a href="Humidifier/Reservoir/Config.html#initialize-instance_method" title="Humidifier::Reservoir::Config#initialize (method)">#initialize</a></span>
|
178
|
+
<small>Humidifier::Reservoir::Config</small>
|
179
179
|
</div>
|
180
180
|
</li>
|
181
181
|
|
182
182
|
|
183
183
|
<li class="even ">
|
184
184
|
<div class="item">
|
185
|
-
<span class='object_link'><a href="Humidifier/Reservoir/
|
186
|
-
<small>Humidifier::Reservoir::
|
185
|
+
<span class='object_link'><a href="Humidifier/Reservoir/Mapping.html#initialize-instance_method" title="Humidifier::Reservoir::Mapping#initialize (method)">#initialize</a></span>
|
186
|
+
<small>Humidifier::Reservoir::Mapping</small>
|
187
187
|
</div>
|
188
188
|
</li>
|
189
189
|
|
190
190
|
|
191
191
|
<li class="odd ">
|
192
|
+
<div class="item">
|
193
|
+
<span class='object_link'><a href="Humidifier/Reservoir/Stack.html#initialize-instance_method" title="Humidifier::Reservoir::Stack#initialize (method)">#initialize</a></span>
|
194
|
+
<small>Humidifier::Reservoir::Stack</small>
|
195
|
+
</div>
|
196
|
+
</li>
|
197
|
+
|
198
|
+
|
199
|
+
<li class="even ">
|
192
200
|
<div class="item">
|
193
201
|
<span class='object_link'><a href="Humidifier/Reservoir/Config.html#map-instance_method" title="Humidifier::Reservoir::Config#map (method)">#map</a></span>
|
194
202
|
<small>Humidifier::Reservoir::Config</small>
|
@@ -196,7 +204,7 @@
|
|
196
204
|
</li>
|
197
205
|
|
198
206
|
|
199
|
-
<li class="
|
207
|
+
<li class="odd ">
|
200
208
|
<div class="item">
|
201
209
|
<span class='object_link'><a href="Humidifier/Reservoir/Mapping.html#mapper-instance_method" title="Humidifier::Reservoir::Mapping#mapper (method)">#mapper</a></span>
|
202
210
|
<small>Humidifier::Reservoir::Mapping</small>
|
@@ -204,7 +212,7 @@
|
|
204
212
|
</li>
|
205
213
|
|
206
214
|
|
207
|
-
<li class="
|
215
|
+
<li class="even ">
|
208
216
|
<div class="item">
|
209
217
|
<span class='object_link'><a href="Humidifier/Reservoir/Config.html#mapping_for-instance_method" title="Humidifier::Reservoir::Config#mapping_for (method)">#mapping_for</a></span>
|
210
218
|
<small>Humidifier::Reservoir::Config</small>
|
@@ -212,7 +220,7 @@
|
|
212
220
|
</li>
|
213
221
|
|
214
222
|
|
215
|
-
<li class="
|
223
|
+
<li class="odd ">
|
216
224
|
<div class="item">
|
217
225
|
<span class='object_link'><a href="Humidifier/Reservoir.html#mapping_for-class_method" title="Humidifier::Reservoir.mapping_for (method)">mapping_for</a></span>
|
218
226
|
<small>Humidifier::Reservoir</small>
|
@@ -220,7 +228,7 @@
|
|
220
228
|
</li>
|
221
229
|
|
222
230
|
|
223
|
-
<li class="
|
231
|
+
<li class="even ">
|
224
232
|
<div class="item">
|
225
233
|
<span class='object_link'><a href="Humidifier/Reservoir/Config.html#mappings-instance_method" title="Humidifier::Reservoir::Config#mappings (method)">#mappings</a></span>
|
226
234
|
<small>Humidifier::Reservoir::Config</small>
|
@@ -228,6 +236,14 @@
|
|
228
236
|
</li>
|
229
237
|
|
230
238
|
|
239
|
+
<li class="odd ">
|
240
|
+
<div class="item">
|
241
|
+
<span class='object_link'><a href="Humidifier/Reservoir/Stack/Export.html#name-instance_method" title="Humidifier::Reservoir::Stack::Export#name (method)">#name</a></span>
|
242
|
+
<small>Humidifier::Reservoir::Stack::Export</small>
|
243
|
+
</div>
|
244
|
+
</li>
|
245
|
+
|
246
|
+
|
231
247
|
<li class="even ">
|
232
248
|
<div class="item">
|
233
249
|
<span class='object_link'><a href="Humidifier/Reservoir/Stack.html#name-instance_method" title="Humidifier::Reservoir::Stack#name (method)">#name</a></span>
|
@@ -238,8 +254,8 @@
|
|
238
254
|
|
239
255
|
<li class="odd ">
|
240
256
|
<div class="item">
|
241
|
-
<span class='object_link'><a href="Humidifier/Reservoir/Stack
|
242
|
-
<small>Humidifier::Reservoir::Stack
|
257
|
+
<span class='object_link'><a href="Humidifier/Reservoir/Stack.html#parameters-instance_method" title="Humidifier::Reservoir::Stack#parameters (method)">#parameters</a></span>
|
258
|
+
<small>Humidifier::Reservoir::Stack</small>
|
243
259
|
</div>
|
244
260
|
</li>
|
245
261
|
|
@@ -262,16 +278,16 @@
|
|
262
278
|
|
263
279
|
<li class="even ">
|
264
280
|
<div class="item">
|
265
|
-
<span class='object_link'><a href="Humidifier/Reservoir/
|
266
|
-
<small>Humidifier::Reservoir::
|
281
|
+
<span class='object_link'><a href="Humidifier/Reservoir/BaseMapper.html#resource_for-instance_method" title="Humidifier::Reservoir::BaseMapper#resource_for (method)">#resource_for</a></span>
|
282
|
+
<small>Humidifier::Reservoir::BaseMapper</small>
|
267
283
|
</div>
|
268
284
|
</li>
|
269
285
|
|
270
286
|
|
271
287
|
<li class="odd ">
|
272
288
|
<div class="item">
|
273
|
-
<span class='object_link'><a href="Humidifier/Reservoir/
|
274
|
-
<small>Humidifier::Reservoir::
|
289
|
+
<span class='object_link'><a href="Humidifier/Reservoir/Mapping.html#resource_for-instance_method" title="Humidifier::Reservoir::Mapping#resource_for (method)">#resource_for</a></span>
|
290
|
+
<small>Humidifier::Reservoir::Mapping</small>
|
275
291
|
</div>
|
276
292
|
</li>
|
277
293
|
|
@@ -342,16 +358,16 @@
|
|
342
358
|
|
343
359
|
<li class="even ">
|
344
360
|
<div class="item">
|
345
|
-
<span class='object_link'><a href="Humidifier/Reservoir/
|
346
|
-
<small>Humidifier::Reservoir::
|
361
|
+
<span class='object_link'><a href="Humidifier/Reservoir/CLI.html#upload-instance_method" title="Humidifier::Reservoir::CLI#upload (method)">#upload</a></span>
|
362
|
+
<small>Humidifier::Reservoir::CLI</small>
|
347
363
|
</div>
|
348
364
|
</li>
|
349
365
|
|
350
366
|
|
351
367
|
<li class="odd ">
|
352
368
|
<div class="item">
|
353
|
-
<span class='object_link'><a href="Humidifier/Reservoir/
|
354
|
-
<small>Humidifier::Reservoir::
|
369
|
+
<span class='object_link'><a href="Humidifier/Reservoir/Stack.html#upload-instance_method" title="Humidifier::Reservoir::Stack#upload (method)">#upload</a></span>
|
370
|
+
<small>Humidifier::Reservoir::Stack</small>
|
355
371
|
</div>
|
356
372
|
</li>
|
357
373
|
|
@@ -100,7 +100,7 @@
|
|
100
100
|
</div>
|
101
101
|
|
102
102
|
<div id="footer">
|
103
|
-
Generated on Tue Dec 5
|
103
|
+
Generated on Tue Dec 5 18:38:21 2017 by
|
104
104
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
105
105
|
0.9.12 (ruby-2.4.2).
|
106
106
|
</div>
|
data/lib/humidifier/reservoir.rb
CHANGED
@@ -9,6 +9,7 @@ require 'humidifier/reservoir/cli'
|
|
9
9
|
require 'humidifier/reservoir/config'
|
10
10
|
require 'humidifier/reservoir/error'
|
11
11
|
require 'humidifier/reservoir/mapping'
|
12
|
+
require 'humidifier/reservoir/parameter_list'
|
12
13
|
require 'humidifier/reservoir/stack'
|
13
14
|
require 'humidifier/reservoir/version'
|
14
15
|
|
@@ -21,18 +21,18 @@ module Humidifier
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
desc 'deploy [?stack]', 'Update one or all stacks'
|
24
|
+
desc 'deploy [?stack] [*parameters]', 'Update one or all stacks'
|
25
25
|
option :wait, desc: 'Wait for the stack to create/update',
|
26
26
|
type: :boolean, default: false
|
27
27
|
option :prefix, desc: 'The prefix to use for the stack'
|
28
|
-
def deploy(name = nil)
|
28
|
+
def deploy(name = nil, *parameters)
|
29
29
|
stack_names = stack_names_from(name)
|
30
30
|
authorize
|
31
31
|
|
32
32
|
stack_names.each do |stack_name|
|
33
33
|
stack = Stack.new(stack_name, prefix: options[:prefix])
|
34
34
|
puts "Deploying #{stack.stack_name}"
|
35
|
-
stack.deploy(options[:wait])
|
35
|
+
stack.deploy(options[:wait], parameters_from(parameters))
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
@@ -76,6 +76,13 @@ module Humidifier
|
|
76
76
|
Aws::SharedCredentials.new(profile_name: options[:aws_profile])
|
77
77
|
end
|
78
78
|
|
79
|
+
def parameters_from(opts)
|
80
|
+
opts.map do |opt|
|
81
|
+
key, value = opt.split('=')
|
82
|
+
{ parameter_key: key, parameter_value: value }
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
79
86
|
def safe_execute
|
80
87
|
yield
|
81
88
|
rescue Error => error
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Humidifier
|
2
|
+
module Reservoir
|
3
|
+
# The list of parameters for a given stack parsed from the given filepath.
|
4
|
+
module ParameterList
|
5
|
+
def self.from(filepath)
|
6
|
+
loaded = YAML.load_file(filepath)
|
7
|
+
return {} unless loaded
|
8
|
+
|
9
|
+
loaded.each_with_object({}) do |(name, opts), params|
|
10
|
+
opts = opts.map { |key, value| [key.to_sym, value] }.to_h
|
11
|
+
params[name] = Parameter.new(opts)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -3,7 +3,7 @@ module Humidifier
|
|
3
3
|
# Represents a CloudFormation stack. This contains all of the logic for
|
4
4
|
# interfacing with humidifier to deploy stacks, validate them, and display
|
5
5
|
# them.
|
6
|
-
class Stack
|
6
|
+
class Stack # rubocop:disable Metrics/ClassLength
|
7
7
|
# Represents an exported resource in a stack for use in cross-stack
|
8
8
|
# references.
|
9
9
|
Export =
|
@@ -27,24 +27,42 @@ module Humidifier
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def create_change_set
|
30
|
-
return
|
31
|
-
valid?
|
30
|
+
return if !ensure_resources('change') || !valid?
|
32
31
|
|
33
32
|
opts = { capabilities: %w[CAPABILITY_IAM CAPABILITY_NAMED_IAM] }
|
34
33
|
humidifier_stack.create_change_set(opts)
|
35
34
|
end
|
36
35
|
|
37
|
-
def deploy(wait = false)
|
38
|
-
return
|
39
|
-
valid?
|
36
|
+
def deploy(wait = false, parameter_values = {})
|
37
|
+
return if !ensure_resources('deploy') || !valid?
|
40
38
|
|
41
|
-
opts = {
|
39
|
+
opts = {
|
40
|
+
capabilities: %w[CAPABILITY_IAM CAPABILITY_NAMED_IAM],
|
41
|
+
parameters: parameter_values
|
42
|
+
}
|
42
43
|
humidifier_stack.public_send(wait ? :deploy_and_wait : :deploy, opts)
|
43
44
|
end
|
44
45
|
|
46
|
+
def parameters
|
47
|
+
@parameters ||=
|
48
|
+
begin
|
49
|
+
parameter_filepath =
|
50
|
+
Reservoir.files_for(name).detect do |filepath|
|
51
|
+
File.basename(filepath, '.yml') == 'parameters'
|
52
|
+
end
|
53
|
+
|
54
|
+
parameter_filepath ? ParameterList.from(parameter_filepath) : {}
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
45
58
|
def resources
|
46
59
|
Reservoir.files_for(name).each_with_object({}) do |filepath, resources|
|
47
|
-
|
60
|
+
basename = File.basename(filepath, '.yml')
|
61
|
+
|
62
|
+
# Explicitly skip past parameters so we can pull them out later
|
63
|
+
next if basename == 'parameters'
|
64
|
+
|
65
|
+
resources.merge!(parse(filepath, basename))
|
48
66
|
end
|
49
67
|
end
|
50
68
|
|
@@ -57,6 +75,7 @@ module Humidifier
|
|
57
75
|
end
|
58
76
|
|
59
77
|
def upload
|
78
|
+
return if !ensure_resources('upload') || !valid?
|
60
79
|
humidifier_stack.upload
|
61
80
|
end
|
62
81
|
|
@@ -72,9 +91,9 @@ module Humidifier
|
|
72
91
|
|
73
92
|
private
|
74
93
|
|
75
|
-
def ensure_resources
|
94
|
+
def ensure_resources(action = 'deploy')
|
76
95
|
return true if humidifier_stack.resources.any?
|
77
|
-
puts "Refusing to
|
96
|
+
puts "Refusing to #{action} stack #{humidifier_stack.name} with no " \
|
78
97
|
'resources'
|
79
98
|
false
|
80
99
|
end
|
@@ -84,7 +103,8 @@ module Humidifier
|
|
84
103
|
name: stack_name,
|
85
104
|
description: "Resources for #{stack_name}",
|
86
105
|
resources: resources,
|
87
|
-
outputs: outputs
|
106
|
+
outputs: outputs,
|
107
|
+
parameters: parameters
|
88
108
|
)
|
89
109
|
end
|
90
110
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: humidifier-reservoir
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Localytics
|
@@ -192,6 +192,7 @@ files:
|
|
192
192
|
- docs/Humidifier/Reservoir/Config.html
|
193
193
|
- docs/Humidifier/Reservoir/Error.html
|
194
194
|
- docs/Humidifier/Reservoir/Mapping.html
|
195
|
+
- docs/Humidifier/Reservoir/ParameterList.html
|
195
196
|
- docs/Humidifier/Reservoir/Stack.html
|
196
197
|
- docs/Humidifier/Reservoir/Stack/Export.html
|
197
198
|
- docs/_index.html
|
@@ -216,6 +217,7 @@ files:
|
|
216
217
|
- lib/humidifier/reservoir/config.rb
|
217
218
|
- lib/humidifier/reservoir/error.rb
|
218
219
|
- lib/humidifier/reservoir/mapping.rb
|
220
|
+
- lib/humidifier/reservoir/parameter_list.rb
|
219
221
|
- lib/humidifier/reservoir/stack.rb
|
220
222
|
- lib/humidifier/reservoir/version.rb
|
221
223
|
homepage: https://github.com/localytics/humidifier-reservoir
|