beanstalkify 0.0.5 → 0.0.6

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.
data/Gemfile.lock CHANGED
@@ -1,13 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- beanstalkify (0.0.5)
4
+ beanstalkify (0.0.6)
5
5
  aws-sdk
6
6
 
7
7
  GEM
8
8
  remote: http://rubygems.org/
9
9
  specs:
10
- aws-sdk (1.14.1)
10
+ aws-sdk (1.15.0)
11
11
  json (~> 1.4)
12
12
  nokogiri (< 1.6.0)
13
13
  uuidtools (~> 2.1)
data/bin/beanstalkify CHANGED
@@ -20,7 +20,7 @@ OptionParser.new do |opts|
20
20
  opts.on("-s", "--stack [stack]", "Stack to provision (e.g. '64bit Amazon Linux running Node.js')") do |v|
21
21
  options[:stack] = v
22
22
  end
23
- opts.on("-n", "--cname [cname]", "CNAME prefix (e.g. my-awesome-app)") do |v|
23
+ opts.on("-n", "--cname [cname]", "CNAME prefixes to try (e.g. my-awesome-app,my-awesome-app-2)") do |v|
24
24
  options[:cname] = v
25
25
  end
26
26
  opts.on("-c", "--config [file]", "Configuration overrides for the environment (optional)") do |v|
@@ -33,13 +33,13 @@ end.parse!
33
33
 
34
34
  required_params = [:credentials, :archive, :environment, :stack]
35
35
  unless (required_params - options.keys).empty?
36
- puts "Example usage: beanstalkify -k credentials.yml -a AppName-version.zip -e Test -s '64bit Amazon Linux running Node.js' [-c config.yml] [-n my-awesome-app] [-o info.yml]"
36
+ puts "Example usage: beanstalkify -k credentials.yml -a AppName-version.zip -e Test -s '64bit Amazon Linux running Node.js' [-c config.yml] [-n my-awesome-app,my-awesome-app-1] [-o info.yml]"
37
37
  exit
38
38
  end
39
39
 
40
40
  Beanstalkify::Beanstalk.configure! options[:credentials]
41
41
 
42
- app = Beanstalkify::Application.new(options[:stack], options[:cname], options[:config] || [])
42
+ app = Beanstalkify::Application.new(options[:stack], options[:cname] || '', options[:config] || [])
43
43
  archive = Beanstalkify::Archive.new(options[:archive])
44
44
  environment = Beanstalkify::Environment.new(archive, options[:environment])
45
45
 
@@ -4,9 +4,9 @@ module Beanstalkify
4
4
 
5
5
  # config is an array of hashes:
6
6
  # :namespace, :option_name, :value
7
- def initialize(stack, cname, config)
7
+ def initialize(stack, cnames, config)
8
8
  @stack = stack
9
- @cname = cname
9
+ @cnames = cnames.split(',')
10
10
  @config = config.map { |c| Hash[c.map { |k, v| [k.to_sym,v]}] }
11
11
  end
12
12
 
@@ -17,7 +17,7 @@ module Beanstalkify
17
17
 
18
18
  if env.status.empty?
19
19
  puts "Creating stack '#{@stack}' for #{archive.app_name}-#{archive.version}..."
20
- env.create!(archive, @stack, @cname, @config)
20
+ env.create!(archive, @stack, @cnames, @config)
21
21
  env.wait!("Launching")
22
22
  else
23
23
  puts "Deploying #{archive.version} to #{env.name}..."
@@ -22,7 +22,8 @@ module Beanstalkify
22
22
 
23
23
  # Assuming the archive has already been uploaded,
24
24
  # create a new environment with the app deployed onto the provided stack.
25
- def create!(archive, stack, cname, settings=[])
25
+ # Attempts to use the first available cname in the cnames array.
26
+ def create!(archive, stack, cnames, settings=[])
26
27
  params = {
27
28
  :application_name => archive.app_name,
28
29
  :version_label => archive.version,
@@ -30,11 +31,12 @@ module Beanstalkify
30
31
  :solution_stack_name => stack,
31
32
  :option_settings => settings
32
33
  }
33
- if cname
34
- if dns_available(cname)
35
- params[:cname_prefix] = cname
34
+ cnames.each do |c|
35
+ if dns_available(c)
36
+ params[:cname_prefix] = c
37
+ break
36
38
  else
37
- puts "CNAME #{cname} is unavailable."
39
+ puts "CNAME #{c} is unavailable."
38
40
  end
39
41
  end
40
42
  @beanstalk.create_environment(params)
@@ -1,3 +1,3 @@
1
1
  module Beanstalkify
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -17,7 +17,7 @@ describe Beanstalkify::Environment do
17
17
  :solution_stack_name => 'mastack',
18
18
  :option_settings => masettings
19
19
  ).and_return nil
20
- @env.create! @archive, 'mastack', nil, masettings
20
+ @env.create! @archive, 'mastack', [], masettings
21
21
  end
22
22
 
23
23
  it 'creates a new environment with a cname, if available' do
@@ -27,13 +27,13 @@ describe Beanstalkify::Environment do
27
27
  :version_label => 'version',
28
28
  :environment_name => 'app-name-Test',
29
29
  :solution_stack_name => 'mastack',
30
- :cname_prefix => 'ma-cname',
30
+ :cname_prefix => 'ma-cname-1',
31
31
  :option_settings => masettings
32
32
  ).and_return nil
33
33
  expect(@beanstalk_api).to receive(:check_dns_availability).and_return(
34
34
  :available => true
35
35
  )
36
- @env.create! @archive, 'mastack', 'ma-cname', masettings
36
+ @env.create! @archive, 'mastack', ['ma-cname-1'], masettings
37
37
  end
38
38
 
39
39
  it 'creates an environment without the cname, if the cname was unavailable' do
@@ -48,7 +48,7 @@ describe Beanstalkify::Environment do
48
48
  expect(@beanstalk_api).to receive(:check_dns_availability).and_return(
49
49
  :available => false
50
50
  )
51
- @env.create! @archive, 'mastack', 'ma-cname', masettings
51
+ @env.create! @archive, 'mastack', ['ma-cname-1'], masettings
52
52
  end
53
53
 
54
54
  it 'prepends the application name because environment names must be unique within an AWS account' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beanstalkify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -83,7 +83,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
83
83
  version: '0'
84
84
  segments:
85
85
  - 0
86
- hash: -3858020732862147076
86
+ hash: -637330145255751151
87
87
  required_rubygems_version: !ruby/object:Gem::Requirement
88
88
  none: false
89
89
  requirements:
@@ -92,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
92
  version: '0'
93
93
  segments:
94
94
  - 0
95
- hash: -3858020732862147076
95
+ hash: -637330145255751151
96
96
  requirements: []
97
97
  rubyforge_project:
98
98
  rubygems_version: 1.8.24