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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 706a76719c8af3e934f0f141d79ca04513456fa6
4
- data.tar.gz: 7f4912bacb3d49ba8015d71130db779ef1e912ed
3
+ metadata.gz: 817938d5e697cd44c2c346438043111c7d323538
4
+ data.tar.gz: 68b387fdfbfc3c191c6b7270fd241112f39cec92
5
5
  SHA512:
6
- metadata.gz: 9fd5749505b66b86c639aef84e862a3b83360ee66528d34930131282754cec3d018f7dbad38bc0d6c9887bfc5b8d9b8aa850b50fa1535fa2949511c2b49cabb2
7
- data.tar.gz: f2d265eaf095ad3e387cef1ce435405875645873f74ce938bd1b0f547e11a1042f0fc0138c4a7b88c4b55602ff9c6923cccb98130532a72f8211c35166cd4a8a
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 :show_all_events, desc: 'Show all stack events during update. (Default: errors only)'
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
@@ -86,6 +86,7 @@ module Moonshot
86
86
  ilog: @config.interactive_logger) do |config|
87
87
  config.parent_stacks = @config.parent_stacks
88
88
  config.show_all_events = @config.show_all_stack_events
89
+ config.parameter_strategy = @config.parameter_strategy
89
90
  end
90
91
  end
91
92
 
@@ -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
@@ -260,7 +260,7 @@ module Moonshot
260
260
  stack_name: @name,
261
261
  template_body: template.body,
262
262
  capabilities: ['CAPABILITY_IAM'],
263
- parameters: stack_parameter_overrides
263
+ parameters: @config.parameter_strategy.parameters(parameters, overrides)
264
264
  )
265
265
  true
266
266
  rescue Aws::CloudFormation::Errors::ValidationError => e
@@ -3,6 +3,7 @@ module Moonshot
3
3
  class StackConfig
4
4
  attr_accessor :parent_stacks
5
5
  attr_accessor :show_all_events
6
+ attr_accessor :parameter_strategy
6
7
 
7
8
  def initialize
8
9
  @parent_stacks = []
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.1
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-12 00:00:00.000000000 Z
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