cf 0.6.1.rc8 → 0.6.1.rc9
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/cf/cli.rb +5 -18
- data/lib/cf/cli/app/start.rb +17 -12
- data/lib/cf/version.rb +1 -1
- data/spec/cf/cli/app/start_spec.rb +13 -0
- data/spec/cf/cli/start/target_spec.rb +2 -2
- data/spec/cf/cli_spec.rb +1 -13
- data/spec/features/login_spec.rb +2 -1
- data/spec/features/push_flow_spec.rb +13 -13
- data/spec/support/features_helper.rb +3 -1
- metadata +7 -7
data/lib/cf/cli.rb
CHANGED
@@ -379,23 +379,10 @@ module CF
|
|
379
379
|
info = target_info(target)
|
380
380
|
token = info[:token] && CFoundry::AuthToken.from_hash(info)
|
381
381
|
|
382
|
-
|
383
|
-
|
384
|
-
when 2
|
385
|
-
fail "User switching not implemented." if input[:proxy]
|
386
|
-
CFoundry::V2::Client.new(target, token)
|
387
|
-
when 1
|
388
|
-
CFoundry::V1::Client.new(target, token)
|
389
|
-
else
|
390
|
-
CFoundry::Client.new(target, token)
|
391
|
-
end
|
392
|
-
|
393
|
-
unless @@client.is_a?(CFoundry::V2::Client)
|
394
|
-
# TODO
|
395
|
-
fail "V1 targets are no longer supported."
|
396
|
-
end
|
382
|
+
fail "V1 targets are no longer supported." if info[:version] == 1
|
383
|
+
fail "User switching not implemented." if input[:proxy]
|
397
384
|
|
398
|
-
@@client
|
385
|
+
@@client = CFoundry::V2::Client.new(target, token)
|
399
386
|
@@client.trace = input[:trace]
|
400
387
|
|
401
388
|
uri = URI.parse(target)
|
@@ -406,11 +393,11 @@ module CF
|
|
406
393
|
save_target_info(info, target)
|
407
394
|
end
|
408
395
|
|
409
|
-
if org = info[:organization]
|
396
|
+
if (org = info[:organization])
|
410
397
|
@@client.current_organization = @@client.organization(org)
|
411
398
|
end
|
412
399
|
|
413
|
-
if space = info[:space]
|
400
|
+
if (space = info[:space])
|
414
401
|
@@client.current_space = @@client.space(space)
|
415
402
|
end
|
416
403
|
|
data/lib/cf/cli/app/start.rb
CHANGED
@@ -94,21 +94,26 @@ module CF::App
|
|
94
94
|
line "Checking #{c(app.name, :name)}..."
|
95
95
|
|
96
96
|
seconds = 0
|
97
|
-
while instances = app.instances
|
98
|
-
indented { print_instances_summary(instances) }
|
99
97
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
end
|
98
|
+
begin
|
99
|
+
while instances = app.instances
|
100
|
+
indented { print_instances_summary(instances) }
|
104
101
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
102
|
+
if all_instances_running?(instances)
|
103
|
+
line "#{c("OK", :good)}"
|
104
|
+
return
|
105
|
+
end
|
109
106
|
|
110
|
-
|
111
|
-
|
107
|
+
if any_instance_flapping?(instances) || seconds == APP_CHECK_LIMIT
|
108
|
+
err "Application failed to start."
|
109
|
+
return
|
110
|
+
end
|
111
|
+
|
112
|
+
sleep 1
|
113
|
+
seconds += 1
|
114
|
+
end
|
115
|
+
rescue CFoundry::StagingError
|
116
|
+
err "Application failed to stage"
|
112
117
|
end
|
113
118
|
end
|
114
119
|
|
data/lib/cf/version.rb
CHANGED
@@ -84,6 +84,19 @@ describe CF::App::Start do
|
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
87
|
+
context "staging fails" do
|
88
|
+
before do
|
89
|
+
stub(app).instances { raise CFoundry::StagingError.new("Failed to stage", 170001, nil, nil) }
|
90
|
+
end
|
91
|
+
|
92
|
+
it "says the app failed to stage" do
|
93
|
+
subject
|
94
|
+
expect(output).to say("Checking #{app.name}...")
|
95
|
+
expect(error_output).to say("Application failed to stage")
|
96
|
+
expect(output).to_not say(/\d (running|down|flapping)/)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
87
100
|
context "when any instance becomes flapping" do
|
88
101
|
let(:final_instances) do
|
89
102
|
[ CFoundry::V2::App::Instance.new(nil, nil, nil, :state => "FLAPPING"),
|
@@ -68,7 +68,7 @@ describe CF::Start::Target do
|
|
68
68
|
|
69
69
|
context "when the target is valid but the connection is refused" do
|
70
70
|
it "shows a pretty error message" do
|
71
|
-
any_instance_of(CFoundry::Client) do |cli|
|
71
|
+
any_instance_of(CFoundry::V2::Client) do |cli|
|
72
72
|
stub(cli).info { raise CFoundry::TargetRefused, "foo" }
|
73
73
|
end
|
74
74
|
|
@@ -79,7 +79,7 @@ describe CF::Start::Target do
|
|
79
79
|
|
80
80
|
context "when the uri is malformed" do
|
81
81
|
it "shows a pretty error message" do
|
82
|
-
any_instance_of(CFoundry::Client) do |cli|
|
82
|
+
any_instance_of(CFoundry::V2::Client) do |cli|
|
83
83
|
stub(cli).info { raise CFoundry::InvalidTarget.new(target) }
|
84
84
|
end
|
85
85
|
|
data/spec/cf/cli_spec.rb
CHANGED
@@ -405,19 +405,7 @@ describe CF::CLI do
|
|
405
405
|
end
|
406
406
|
end
|
407
407
|
|
408
|
-
context "with a
|
409
|
-
before do
|
410
|
-
stub(context).target_info { { :version => 1 } }
|
411
|
-
end
|
412
|
-
|
413
|
-
it "fails" do
|
414
|
-
expect {
|
415
|
-
context.client
|
416
|
-
}.to raise_error(CF::UserError, /no longer supported/)
|
417
|
-
end
|
418
|
-
end
|
419
|
-
|
420
|
-
context "with a v2 cloud controller" do
|
408
|
+
context "with a cloud controller" do
|
421
409
|
before do
|
422
410
|
stub(context).target_info { { :version => 2} }
|
423
411
|
end
|
data/spec/features/login_spec.rb
CHANGED
@@ -6,6 +6,7 @@ if ENV['CF_V2_RUN_INTEGRATION']
|
|
6
6
|
let(:target) { ENV['CF_V2_TEST_TARGET'] }
|
7
7
|
let(:username) { ENV['CF_V2_TEST_USER'] }
|
8
8
|
let(:password) { ENV['CF_V2_TEST_PASSWORD'] }
|
9
|
+
let(:organization) { ENV['CF_V2_TEST_ORGANIZATION'] }
|
9
10
|
|
10
11
|
let(:second_username) { ENV['CF_V2_OTHER_TEST_USER'] }
|
11
12
|
let(:second_organization) { ENV['CF_V2_OTHER_TEST_ORGANIZATION'] }
|
@@ -36,7 +37,7 @@ if ENV['CF_V2_RUN_INTEGRATION']
|
|
36
37
|
|
37
38
|
expect(runner).to say(
|
38
39
|
"Organization>" => proc {
|
39
|
-
runner.send_keys
|
40
|
+
runner.send_keys organization
|
40
41
|
expect(runner).to say /Switching to organization .*\.\.\. OK/
|
41
42
|
},
|
42
43
|
"Switching to organization" => proc {}
|
@@ -10,10 +10,9 @@ if ENV['CF_V2_RUN_INTEGRATION']
|
|
10
10
|
let(:password) { ENV['CF_V2_TEST_PASSWORD'] }
|
11
11
|
let(:organization) { ENV['CF_V2_TEST_ORGANIZATION_TWO'] }
|
12
12
|
|
13
|
-
let(:
|
14
|
-
|
15
|
-
|
16
|
-
end
|
13
|
+
let(:run_id) { TRAVIS_BUILD_ID.to_s + Time.new.to_f.to_s.gsub(".", "_") }
|
14
|
+
let(:app) { "hello-sinatra-#{run_id}" }
|
15
|
+
let(:service_name) { "mysql-#{run_id}" }
|
17
16
|
|
18
17
|
before do
|
19
18
|
FileUtils.rm_rf File.expand_path(CF::CONFIG_DIR)
|
@@ -23,7 +22,8 @@ if ENV['CF_V2_RUN_INTEGRATION']
|
|
23
22
|
end
|
24
23
|
|
25
24
|
after do
|
26
|
-
`#{cf_bin}
|
25
|
+
`#{cf_bin} unbind-service -f --no-script #{service_name} #{app}`
|
26
|
+
`#{cf_bin} delete #{app} -f --routes --no-script`
|
27
27
|
logout
|
28
28
|
Interact::Progress::Dots.stop!
|
29
29
|
end
|
@@ -67,23 +67,23 @@ if ENV['CF_V2_RUN_INTEGRATION']
|
|
67
67
|
runner.send_keys "mysql"
|
68
68
|
|
69
69
|
expect(runner).to say "Name?>"
|
70
|
-
runner.send_keys
|
70
|
+
runner.send_keys service_name
|
71
71
|
|
72
72
|
expect(runner).to say "Which plan?>"
|
73
73
|
runner.send_keys "200"
|
74
74
|
|
75
|
-
expect(runner).to say /Creating service
|
75
|
+
expect(runner).to say /Creating service #{service_name}.*OK/
|
76
76
|
expect(runner).to say /Binding .+ to .+ OK/
|
77
77
|
|
78
78
|
expect(runner).to say "Create another service?> n"
|
79
79
|
runner.send_keys ""
|
80
80
|
|
81
81
|
# skip this
|
82
|
-
if runner.expect "Bind other services to application?> n",
|
82
|
+
if runner.expect "Bind other services to application?> n", 15
|
83
83
|
runner.send_keys ""
|
84
84
|
end
|
85
85
|
|
86
|
-
expect(runner).to say "Save configuration?> n",
|
86
|
+
expect(runner).to say "Save configuration?> n", 20
|
87
87
|
runner.send_keys ""
|
88
88
|
|
89
89
|
expect(runner).to say "Uploading #{app}... OK", 180
|
@@ -105,14 +105,14 @@ if ENV['CF_V2_RUN_INTEGRATION']
|
|
105
105
|
/x
|
106
106
|
end
|
107
107
|
|
108
|
+
BlueShell::Runner.run("#{cf_bin} unbind-service #{service_name} #{app}") do |runner|
|
109
|
+
runner.wait_for_exit(20)
|
110
|
+
end
|
111
|
+
|
108
112
|
BlueShell::Runner.run("#{cf_bin} delete #{app}") do |runner|
|
109
113
|
expect(runner).to say "Really delete #{app}?>"
|
110
114
|
runner.send_keys "y"
|
111
115
|
expect(runner).to say "Deleting #{app}... OK"
|
112
|
-
|
113
|
-
expect(runner).to say "Delete orphaned service"
|
114
|
-
runner.send_keys "y"
|
115
|
-
expect(runner).to say /Deleting .* OK/
|
116
116
|
end
|
117
117
|
end
|
118
118
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.1.
|
4
|
+
version: 0.6.1.rc9
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-04-
|
13
|
+
date: 2013-04-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: json_pure
|
@@ -67,10 +67,10 @@ dependencies:
|
|
67
67
|
requirements:
|
68
68
|
- - ! '>='
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: 0.
|
70
|
+
version: 0.7.0.rc3
|
71
71
|
- - <
|
72
72
|
- !ruby/object:Gem::Version
|
73
|
-
version: '0.
|
73
|
+
version: '0.8'
|
74
74
|
type: :runtime
|
75
75
|
prerelease: false
|
76
76
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -78,10 +78,10 @@ dependencies:
|
|
78
78
|
requirements:
|
79
79
|
- - ! '>='
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: 0.
|
81
|
+
version: 0.7.0.rc3
|
82
82
|
- - <
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: '0.
|
84
|
+
version: '0.8'
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: mothership
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
@@ -377,7 +377,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
377
377
|
version: '0'
|
378
378
|
segments:
|
379
379
|
- 0
|
380
|
-
hash:
|
380
|
+
hash: 3627403370497925760
|
381
381
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
382
382
|
none: false
|
383
383
|
requirements:
|