moonshot 0.7.1 → 0.7.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/moonshot/cli.rb +30 -1
- data/lib/moonshot/controller.rb +1 -0
- data/lib/moonshot/controller_config.rb +4 -0
- data/lib/moonshot/default_strategy.rb +17 -0
- data/lib/moonshot/merge_strategy.rb +28 -0
- data/lib/moonshot/stack.rb +1 -1
- data/lib/moonshot/stack_config.rb +1 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 817938d5e697cd44c2c346438043111c7d323538
|
4
|
+
data.tar.gz: 68b387fdfbfc3c191c6b7270fd241112f39cec92
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b6e66c46e218e4e1763b11bed6043a7b9225b6962a7de5cf8ffd59519666d4e38ccb72c4e783a3f40ca0b3454faa9f51c00e8f5efcf683bd5c8663fa34b7efd3
|
7
|
+
data.tar.gz: f675f519b87322a2802d5198b399ce78a16e616bf2b573466e685c36460ddbbc2ffc78e55630b255179aa26db26829f032b14087d98596227a83195df901284a
|
data/lib/moonshot/cli.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
require 'interactive-logger'
|
2
|
+
require_relative 'default_strategy'
|
3
|
+
require_relative 'merge_strategy'
|
2
4
|
|
3
5
|
# Base class for Moonshot-powered project tooling.
|
4
6
|
module Moonshot
|
@@ -16,6 +18,7 @@ module Moonshot
|
|
16
18
|
attr_accessor :build_mechanism
|
17
19
|
attr_accessor :deployment_mechanism
|
18
20
|
attr_accessor :default_parent_stack
|
21
|
+
attr_accessor :default_parameter_strategy
|
19
22
|
attr_reader :plugins
|
20
23
|
|
21
24
|
def plugin(plugin)
|
@@ -27,6 +30,10 @@ module Moonshot
|
|
27
30
|
@default_parent_stack = value
|
28
31
|
end
|
29
32
|
|
33
|
+
def parameter_strategy(strategy)
|
34
|
+
@default_parameter_strategy = strategy
|
35
|
+
end
|
36
|
+
|
30
37
|
def check_class_configuration
|
31
38
|
raise Thor::Error, 'No application_name is set!' unless application_name
|
32
39
|
end
|
@@ -80,10 +87,25 @@ module Moonshot
|
|
80
87
|
elsif self.class.default_parent_stack
|
81
88
|
config.parent_stacks << self.class.default_parent_stack
|
82
89
|
end
|
90
|
+
|
91
|
+
parameter_strategy = options[:parameter_strategy] || self.class.default_parameter_strategy
|
92
|
+
config.parameter_strategy = parameter_strategy_factory(parameter_strategy) \
|
93
|
+
unless parameter_strategy.nil?
|
83
94
|
end
|
84
95
|
rescue => e
|
85
96
|
raise Thor::Error, e.message
|
86
97
|
end
|
98
|
+
|
99
|
+
def parameter_strategy_factory(value)
|
100
|
+
case value.to_sym
|
101
|
+
when :default
|
102
|
+
Moonshot::ParameterStrategy::DefaultStrategy.new
|
103
|
+
when :merge
|
104
|
+
Moonshot::ParameterStrategy::MergeStrategy.new
|
105
|
+
else
|
106
|
+
raise Thor::Error, "Unknown parameter strategy: #{value}"
|
107
|
+
end
|
108
|
+
end
|
87
109
|
end
|
88
110
|
|
89
111
|
desc :list, 'List stacks for this application.'
|
@@ -106,7 +128,14 @@ module Moonshot
|
|
106
128
|
end
|
107
129
|
|
108
130
|
desc :update, 'Update the CloudFormation stack within an environment.'
|
109
|
-
option
|
131
|
+
option(
|
132
|
+
:parameter_strategy,
|
133
|
+
type: :string,
|
134
|
+
desc: 'Override default parameter strategy.')
|
135
|
+
option(
|
136
|
+
:show_all_events,
|
137
|
+
type: :boolean,
|
138
|
+
desc: 'Show all stack events during update. (Default: errors only)')
|
110
139
|
def update
|
111
140
|
controller.update
|
112
141
|
end
|
data/lib/moonshot/controller.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require_relative 'default_strategy'
|
2
|
+
|
1
3
|
module Moonshot
|
2
4
|
# Holds configuration for Moonshot::Controller
|
3
5
|
class ControllerConfig
|
@@ -12,6 +14,7 @@ module Moonshot
|
|
12
14
|
attr_accessor :parent_stacks
|
13
15
|
attr_accessor :plugins
|
14
16
|
attr_accessor :show_all_stack_events
|
17
|
+
attr_accessor :parameter_strategy
|
15
18
|
|
16
19
|
def initialize
|
17
20
|
@auto_prefix_stack = true
|
@@ -20,6 +23,7 @@ module Moonshot
|
|
20
23
|
@parent_stacks = []
|
21
24
|
@plugins = []
|
22
25
|
@show_all_stack_events = false
|
26
|
+
@parameter_strategy = Moonshot::ParameterStrategy::DefaultStrategy.new
|
23
27
|
end
|
24
28
|
end
|
25
29
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Moonshot
|
2
|
+
module ParameterStrategy
|
3
|
+
# Default strategy: grabbing every parameter
|
4
|
+
# from the parameter file.
|
5
|
+
class DefaultStrategy
|
6
|
+
def parameters(_, overrides)
|
7
|
+
overrides.map do |key, _|
|
8
|
+
{
|
9
|
+
parameter_key: key,
|
10
|
+
parameter_value: overrides[key],
|
11
|
+
use_previous_value: false
|
12
|
+
}
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'highline/import'
|
2
|
+
require_relative 'unicode_table'
|
3
|
+
|
4
|
+
module Moonshot
|
5
|
+
module ParameterStrategy
|
6
|
+
# Merge strategy: merging parameter values
|
7
|
+
# declared in the parameter file, otherwise
|
8
|
+
# using previous value.
|
9
|
+
class MergeStrategy
|
10
|
+
def parameters(current, overrides)
|
11
|
+
current.map do |key, _|
|
12
|
+
if overrides[key]
|
13
|
+
{
|
14
|
+
parameter_key: key,
|
15
|
+
parameter_value: overrides[key],
|
16
|
+
use_previous_value: false
|
17
|
+
}
|
18
|
+
else
|
19
|
+
{
|
20
|
+
parameter_key: key,
|
21
|
+
use_previous_value: true
|
22
|
+
}
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/moonshot/stack.rb
CHANGED
@@ -260,7 +260,7 @@ module Moonshot
|
|
260
260
|
stack_name: @name,
|
261
261
|
template_body: template.body,
|
262
262
|
capabilities: ['CAPABILITY_IAM'],
|
263
|
-
parameters:
|
263
|
+
parameters: @config.parameter_strategy.parameters(parameters, overrides)
|
264
264
|
)
|
265
265
|
true
|
266
266
|
rescue Aws::CloudFormation::Errors::ValidationError => e
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: moonshot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cloud Engineering <engineering@acquia.com>
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
@@ -195,10 +195,12 @@ files:
|
|
195
195
|
- lib/moonshot/controller.rb
|
196
196
|
- lib/moonshot/controller_config.rb
|
197
197
|
- lib/moonshot/creds_helper.rb
|
198
|
+
- lib/moonshot/default_strategy.rb
|
198
199
|
- lib/moonshot/deployment_mechanism/code_deploy.rb
|
199
200
|
- lib/moonshot/doctor_helper.rb
|
200
201
|
- lib/moonshot/environment_parser.rb
|
201
202
|
- lib/moonshot/interactive_logger_proxy.rb
|
203
|
+
- lib/moonshot/merge_strategy.rb
|
202
204
|
- lib/moonshot/resources.rb
|
203
205
|
- lib/moonshot/resources_helper.rb
|
204
206
|
- lib/moonshot/shell.rb
|