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 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