moonshot 0.7.1 → 0.7.2
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 +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
|