moonshot 0.7.2 → 0.7.3

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: 817938d5e697cd44c2c346438043111c7d323538
4
- data.tar.gz: 68b387fdfbfc3c191c6b7270fd241112f39cec92
3
+ metadata.gz: 4efa7393335490c5e80a03e6f3c733727c75acdf
4
+ data.tar.gz: 185c228d9dcec000b92fafca815cf9ac9b36ebf4
5
5
  SHA512:
6
- metadata.gz: b6e66c46e218e4e1763b11bed6043a7b9225b6962a7de5cf8ffd59519666d4e38ccb72c4e783a3f40ca0b3454faa9f51c00e8f5efcf683bd5c8663fa34b7efd3
7
- data.tar.gz: f675f519b87322a2802d5198b399ce78a16e616bf2b573466e685c36460ddbbc2ffc78e55630b255179aa26db26829f032b14087d98596227a83195df901284a
6
+ metadata.gz: 17624a530e39bbe1179a776c082d9f1b4e5d2b8ea68dd0c0fc811d3767b5a4b014721b6b41d7253ba973d33772ee1cfb2b4b7c9345bfeef5625dcbeb9e045646
7
+ data.tar.gz: ca1d90df3feba59452c6d0a5c6bf63467c73d7fc009c2fda144cfce826a31e7f6184c1042b6bfbf99256baaab37ae9a4cabcb8cd5de03e162c2fd5f21d0cd63f
@@ -12,8 +12,9 @@ class Moonshot::ArtifactRepository::S3Bucket
12
12
 
13
13
  attr_reader :bucket_name
14
14
 
15
- def initialize(bucket_name)
15
+ def initialize(bucket_name, prefix: '')
16
16
  @bucket_name = bucket_name
17
+ @prefix = prefix
17
18
  end
18
19
 
19
20
  def store_hook(build_mechanism, version_name)
@@ -32,7 +33,7 @@ class Moonshot::ArtifactRepository::S3Bucket
32
33
  end
33
34
 
34
35
  def filename_for_version(version_name)
35
- "#{version_name}.tar.gz"
36
+ "#{@prefix}#{version_name}.tar.gz"
36
37
  end
37
38
 
38
39
  private
@@ -121,10 +121,19 @@ module Moonshot
121
121
  desc: "Parent stack to import parameters from. (Default: #{default_parent_stack || 'None'})")
122
122
  option :deploy, default: true, type: :boolean, aliases: '-d',
123
123
  desc: 'Choose if code should be deployed after stack is created'
124
+ option :version, default: nil, type: :string,
125
+ desc: 'Version to deploy. Only valid if deploy flag is set.'
124
126
  option :show_all_events, desc: 'Show all stack events during update. (Default: errors only)'
125
127
  def create
126
128
  controller.create
127
- controller.deploy_code if options[:deploy]
129
+
130
+ if options[:deploy]
131
+ if options[:version].nil?
132
+ controller.deploy_code
133
+ else
134
+ controller.deploy_version(options[:version])
135
+ end
136
+ end
128
137
  end
129
138
 
130
139
  desc :update, 'Update the CloudFormation stack within an environment.'
@@ -32,9 +32,10 @@ module Moonshot
32
32
  end
33
33
 
34
34
  def status
35
- run_plugins(:status)
35
+ run_plugins(:pre_status)
36
36
  run_hook(:deploy, :status)
37
37
  stack.status
38
+ run_plugins(:post_status)
38
39
  end
39
40
 
40
41
  def deploy_code
@@ -1,13 +1,12 @@
1
1
  module Moonshot
2
2
  module ParameterStrategy
3
- # Default strategy: grabbing every parameter
4
- # from the parameter file.
3
+ # Default strategy: use parameter defined in the parameter file
5
4
  class DefaultStrategy
6
- def parameters(_, overrides)
7
- overrides.map do |key, _|
5
+ def parameters(params, _, _)
6
+ params.map do |key, _|
8
7
  {
9
8
  parameter_key: key,
10
- parameter_value: overrides[key],
9
+ parameter_value: params[key],
11
10
  use_previous_value: false
12
11
  }
13
12
  end
@@ -3,16 +3,19 @@ require_relative 'unicode_table'
3
3
 
4
4
  module Moonshot
5
5
  module ParameterStrategy
6
- # Merge strategy: merging parameter values
7
- # declared in the parameter file, otherwise
8
- # using previous value.
6
+ # Merge strategy: prefer parameter values defined in the parameter file,
7
+ # otherwise use the previously set value on the existing stack.
9
8
  class MergeStrategy
10
- def parameters(current, overrides)
11
- current.map do |key, _|
12
- if overrides[key]
9
+ def parameters(params, stack_params, template)
10
+ stack_keys = stack_params.keys.select do |k|
11
+ template.parameters.any? { |p| p.name == k }
12
+ end
13
+
14
+ (params.keys + stack_keys).uniq.map do |key|
15
+ if params[key]
13
16
  {
14
17
  parameter_key: key,
15
- parameter_value: overrides[key],
18
+ parameter_value: params[key],
16
19
  use_previous_value: false
17
20
  }
18
21
  else
@@ -138,7 +138,7 @@ module Moonshot
138
138
  # update.
139
139
  def overrides
140
140
  if File.exist?(parameters_file)
141
- YAML.load_file(parameters_file)
141
+ YAML.load_file(parameters_file) || {}
142
142
  else
143
143
  {}
144
144
  end
@@ -260,7 +260,11 @@ module Moonshot
260
260
  stack_name: @name,
261
261
  template_body: template.body,
262
262
  capabilities: ['CAPABILITY_IAM'],
263
- parameters: @config.parameter_strategy.parameters(parameters, overrides)
263
+ parameters: @config.parameter_strategy.parameters(
264
+ overrides,
265
+ parameters,
266
+ template
267
+ )
264
268
  )
265
269
  true
266
270
  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.2
4
+ version: 0.7.3
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-26 00:00:00.000000000 Z
11
+ date: 2016-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk