engineyard 1.4.14 → 1.4.15

Sign up to get free protection for your applications and to get access to all the features.
@@ -82,7 +82,7 @@ module EY
82
82
  rescue RestClient::ResourceNotFound
83
83
  raise ResourceNotFound, "The requested resource could not be found"
84
84
  rescue RestClient::BadGateway
85
- raise RequestFailed, "AppCloud API is temporarily unavailable. Please try again soon."
85
+ raise RequestFailed, "EY Cloud API is temporarily unavailable. Please try again soon."
86
86
  rescue RestClient::RequestFailed => e
87
87
  raise RequestFailed, "#{e.message} #{e.response}"
88
88
  rescue OpenSSL::SSL::SSLError
@@ -30,8 +30,9 @@ module EY
30
30
  command can be specified via --migrate "ruby do_migrations.rb". Migrations
31
31
  can also be skipped entirely by using --no-migrate.
32
32
  DESC
33
- method_option :ignore_default_branch, :type => :boolean,
34
- :desc => "Force a deploy of the specified branch even if a default is set"
33
+ method_option :force_ref, :type => :string, :aliases => %w(--ignore-default-branch -R),
34
+ :lazy_default => true,
35
+ :desc => "Force a deploy of the specified git ref even if a default is set in ey.yml."
35
36
  method_option :ignore_bad_master, :type => :boolean,
36
37
  :desc => "Force a deploy even if the master is in a bad state"
37
38
  method_option :migrate, :type => :string, :aliases => %w(-m),
@@ -40,7 +41,7 @@ module EY
40
41
  method_option :environment, :type => :string, :aliases => %w(-e),
41
42
  :desc => "Environment in which to deploy this application"
42
43
  method_option :ref, :type => :string, :aliases => %w(-r --branch --tag),
43
- :desc => "Git ref to deploy. May be a branch, a tag, or a SHA."
44
+ :desc => "Git ref to deploy. May be a branch, a tag, or a SHA. Use -R to deploy a different ref if a default is set."
44
45
  method_option :app, :type => :string, :aliases => %w(-a),
45
46
  :desc => "Name of the application to deploy"
46
47
  method_option :account, :type => :string, :aliases => %w(-c),
@@ -55,10 +56,10 @@ module EY
55
56
  app, environment = fetch_app_and_environment(options[:app], options[:environment], options[:account])
56
57
  environment.ignore_bad_master = options[:ignore_bad_master]
57
58
  deploy_ref = if options[:app]
58
- environment.resolve_branch(options[:ref], options[:ignore_default_branch]) ||
59
+ environment.resolve_branch(options[:ref], options[:force_ref]) ||
59
60
  raise(EY::Error, "When specifying the application, you must also specify the ref to deploy\nUsage: ey deploy --app <app name> --ref <branch|tag|ref>")
60
61
  else
61
- environment.resolve_branch(options[:ref], options[:ignore_default_branch]) ||
62
+ environment.resolve_branch(options[:ref], options[:force_ref]) ||
62
63
  repo.current_branch ||
63
64
  raise(DeployArgumentError)
64
65
  end
@@ -124,7 +125,7 @@ module EY
124
125
  apps = api.apps_for_repo(repo)
125
126
 
126
127
  if apps.size > 1
127
- message = "This git repo matches multiple Applications in AppCloud:\n"
128
+ message = "This git repo matches multiple Applications in EY Cloud:\n"
128
129
  apps.each { |app| message << "\t#{app.name}\n" }
129
130
  message << "The following environments contain those applications:\n\n"
130
131
  EY.ui.warn(message)
@@ -342,7 +343,7 @@ module EY
342
343
 
343
344
  desc "launch [--environment ENVIRONMENT] [--account ACCOUNT]", "Open application in browser."
344
345
  method_option :environment, :type => :string, :aliases => %w(-e),
345
- :desc => "Environment with the interesting logs"
346
+ :desc => "Name of the environment"
346
347
  method_option :account, :type => :string, :aliases => %w(-c),
347
348
  :desc => "Name of the account in which the environment can be found"
348
349
  def launch
@@ -7,6 +7,9 @@ module EY
7
7
 
8
8
  def initialize(token = nil)
9
9
  @token = token
10
+ if ENV['ENGINEYARD_API_TOKEN']
11
+ @token = ENV['ENGINEYARD_API_TOKEN']
12
+ end
10
13
  @token ||= EY::EYRC.load.api_token
11
14
  @token ||= self.class.fetch_token
12
15
  raise EY::Error, "Sorry, we couldn't get your API token." unless @token
@@ -24,7 +24,7 @@ module EY
24
24
  "Upload custom chef recipes to specified environment so they can be applied."
25
25
  long_desc <<-DESC
26
26
  Make an archive of the "cookbooks/" subdirectory in your current working
27
- directory and upload it to AppCloud's recipe storage.
27
+ directory and upload it to EY Cloud's recipe storage.
28
28
 
29
29
  Alternatively, specify a .tgz of a cookbooks/ directory yourself as follows:
30
30
 
@@ -115,11 +115,19 @@ module EY
115
115
  })
116
116
  end
117
117
 
118
- def resolve_branch(branch, allow_non_default_branch=false)
119
- if !allow_non_default_branch && branch && default_branch && (branch != default_branch)
120
- raise BranchMismatchError.new(default_branch, branch)
118
+ # If force_ref is a string, use it as the ref, otherwise use it as a boolean.
119
+ def resolve_branch(ref, force_ref=false)
120
+ if String === force_ref
121
+ ref, force_ref = force_ref, true
122
+ end
123
+
124
+ if !ref
125
+ default_branch
126
+ elsif force_ref || !default_branch || ref == default_branch
127
+ ref
128
+ else
129
+ raise BranchMismatchError.new(default_branch, ref)
121
130
  end
122
- branch || default_branch
123
131
  end
124
132
 
125
133
  def configuration
@@ -41,7 +41,7 @@ module EY
41
41
  ensure
42
42
  if deployment
43
43
  deployment.finished(successful, output)
44
- EY.ui.info "#{successful ? 'Successful' : 'Failed'} deployment recorded in AppCloud"
44
+ EY.ui.info "#{successful ? 'Successful' : 'Failed'} deployment recorded in EY Cloud"
45
45
  end
46
46
  end
47
47
 
@@ -1,3 +1,3 @@
1
1
  module EY
2
- VERSION = '1.4.14'
2
+ VERSION = '1.4.15'
3
3
  end
@@ -34,6 +34,6 @@ describe EY::API do
34
34
 
35
35
  lambda {
36
36
  EY::API.fetch_token("a@b.com", "foo")
37
- }.should raise_error(EY::API::RequestFailed, /AppCloud API is temporarily unavailable/)
37
+ }.should raise_error(EY::API::RequestFailed, /API is temporarily unavailable/)
38
38
  end
39
39
  end
@@ -15,6 +15,12 @@ describe EY::CLI::API do
15
15
  EY::CLI::API.new.should == EY::CLI::API.new("asdf")
16
16
  end
17
17
 
18
+ it "uses the token from $ENGINEYARD_API_TOKEN if set" do
19
+ ENV['ENGINEYARD_API_TOKEN'] = 'envtoken'
20
+ EY::CLI::API.new.token.should == 'envtoken'
21
+ ENV.delete('ENGINEYARD_API_TOKEN')
22
+ end
23
+
18
24
  context "without saved api token" do
19
25
  before(:each) do
20
26
  FakeWeb.register_uri(:post, "https://cloud.engineyard.com/api/v2/authenticate", :body => %|{"api_token": "asdf"}|, :content_type => 'application/json')
@@ -37,7 +37,7 @@ describe "ey deploy" do
37
37
 
38
38
  def verify_ran(scenario)
39
39
  @out.should match(/Beginning deploy of ref '[^']+' for '#{scenario[:application]}' in '#{scenario[:environment]}'/)
40
- @out.should match(/deployment recorded in AppCloud/i)
40
+ @out.should match(/deployment recorded/i)
41
41
  @ssh_commands.should have_command_like(/engineyard-serverside.*deploy.*--app #{scenario[:application]}/)
42
42
  end
43
43
 
@@ -264,7 +264,7 @@ describe "ey deploy" do
264
264
  @ssh_commands.last.should =~ /--ref resolved-master/
265
265
  end
266
266
 
267
- it "complains about a non-default branch without --ignore-default_branch" do
267
+ it "complains about a non-default branch without --ignore-default-branch" do
268
268
  fast_failing_ey %w[deploy -r current-branch]
269
269
  @err.should =~ /deploy branch is set to "master"/
270
270
  end
@@ -273,6 +273,11 @@ describe "ey deploy" do
273
273
  fast_ey %w[deploy -r current-branch --ignore-default-branch]
274
274
  @ssh_commands.last.should =~ /--ref resolved-current-branch/
275
275
  end
276
+
277
+ it "deploys a non-default branch with --R ref" do
278
+ fast_ey %w[deploy -R current-branch]
279
+ @ssh_commands.last.should =~ /--ref resolved-current-branch/
280
+ end
276
281
  end
277
282
  end
278
283
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: engineyard
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 4
9
- - 14
10
- version: 1.4.14
9
+ - 15
10
+ version: 1.4.15
11
11
  platform: ruby
12
12
  authors:
13
13
  - EY Cloud Team
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-12-14 00:00:00 Z
18
+ date: 2011-12-15 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  version_requirements: &id001 !ruby/object:Gem::Requirement