cf 5.2.1.rc8 → 5.2.1.rc9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/bin/cf +2 -0
- data/lib/cf/cli.rb +3 -17
- data/lib/cf/cli/populators/target.rb +3 -2
- data/lib/cf/version.rb +1 -1
- data/lib/tasks/windows_build.rake +14 -0
- data/spec/cf/cli/populators/target_spec.rb +25 -11
- data/spec/cf/cli/start/target_spec.rb +1 -1
- data/spec/cf/cli_spec.rb +5 -65
- metadata +31 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OTJjODEwNDUzYmM5NzU1ZmM0OWZhODFlNzgyY2UwMmMwMDU5NzZjNQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OGYwYWQzZjA1NDBmZGZlZDdjZDdjMGQyOGJkZWMwZmVhYTkwMjljZQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ODg3YTQ4MjY3ZWJkNTY5ZWU0MDZkZWI1ZjQxZDUxYmU0MDYzM2UxNzY3NjM1
|
10
|
+
MWFkOTEyMDJhYjQxMGU2YjcyMDQ4ZmVjMDZlNjQxNTJjNDNlZjgwOGY1N2I0
|
11
|
+
OTVkNmQ2NzBlOGM0NzlhOTA1MTVhOGM0MjI1ZWVhNjQxM2IxMzA=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
Y2IxNTAyNzQxNDUzN2MzMzA3NjllY2IxMzU3OGE5YmIxODAxNWFmYTExNTI2
|
14
|
+
MzYxODYwYmRlNzExZDdiZjc4MTU4ZDZmYzgyNGE3MmI4MzMyYTAyMDZmNDU2
|
15
|
+
NzFhY2E4YzZhNTEzMjg4ZjY4YWQyMmFkZjFlZDA1NTc2ZWM1YjU=
|
data/bin/cf
CHANGED
data/lib/cf/cli.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
require "yaml"
|
2
2
|
require "socket"
|
3
3
|
require "net/http"
|
4
|
+
require "json/ext"
|
4
5
|
require "multi_json"
|
6
|
+
require "multi_json/adapters/json_gem"
|
5
7
|
require "fileutils"
|
6
|
-
|
7
8
|
require "mothership"
|
8
9
|
|
9
10
|
require "cfoundry"
|
@@ -321,11 +322,7 @@ EOS
|
|
321
322
|
end
|
322
323
|
|
323
324
|
def sane_target_url(url)
|
324
|
-
|
325
|
-
prefix = can_connect_on_https?(url) ? "https://" : "http://"
|
326
|
-
url = prefix + url
|
327
|
-
end
|
328
|
-
|
325
|
+
url = "https://#{url}" if url !~ /^http/
|
329
326
|
url.gsub(/\/$/, "")
|
330
327
|
end
|
331
328
|
|
@@ -487,17 +484,6 @@ EOS
|
|
487
484
|
|
488
485
|
private
|
489
486
|
|
490
|
-
def can_connect_on_https?(unqualified_url)
|
491
|
-
begin
|
492
|
-
Timeout.timeout(1) do
|
493
|
-
TCPSocket.new(unqualified_url, Net::HTTP.https_default_port)
|
494
|
-
end
|
495
|
-
true
|
496
|
-
rescue Errno::ECONNREFUSED, SocketError, Timeout::Error, Errno::ETIMEDOUT
|
497
|
-
false
|
498
|
-
end
|
499
|
-
end
|
500
|
-
|
501
487
|
def target_file
|
502
488
|
File.expand_path(CF::TARGET_FILE)
|
503
489
|
end
|
@@ -6,8 +6,9 @@ module CF
|
|
6
6
|
class Target < Base
|
7
7
|
def populate_and_save!
|
8
8
|
organization = CF::Populators::Organization.new(input).populate_and_save!
|
9
|
-
|
9
|
+
|
10
|
+
CF::Populators::Space.new(input, organization).populate_and_save! unless organization.nil?
|
10
11
|
end
|
11
12
|
end
|
12
13
|
end
|
13
|
-
end
|
14
|
+
end
|
data/lib/cf/version.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
# In order for this to work you'll need to install the following on the Windows box:
|
2
|
+
# git
|
3
|
+
# RubyInstaller (1.9.3)
|
4
|
+
# DevKit from RubyInstaller (tdm 32-bit to match 1.9.3)
|
5
|
+
#
|
6
|
+
# gem install bundler
|
7
|
+
# bundle
|
8
|
+
# rake windows:build
|
9
|
+
namespace :windows do
|
10
|
+
desc "Create a Windows .exe file"
|
11
|
+
task :build, [:version] do |_, args|
|
12
|
+
system("ocra --console --no-autoload bin/cf")
|
13
|
+
end
|
14
|
+
end
|
@@ -1,25 +1,39 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
module CF
|
4
|
-
|
5
|
-
describe Target do
|
4
|
+
describe Populators::Target do
|
6
5
|
describe "#populate_and_save!" do
|
7
6
|
let(:input) { double(:input) }
|
8
|
-
let(:
|
9
|
-
let(:
|
7
|
+
let(:organization_populator) { double(Populators::Organization) }
|
8
|
+
let(:space_populator) { double(Populators::Space) }
|
10
9
|
|
11
10
|
def execute_populate_and_save
|
12
|
-
Target.new(input).populate_and_save!
|
11
|
+
Populators::Target.new(input).populate_and_save!
|
13
12
|
end
|
14
13
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
14
|
+
context 'when there are no orgs' do
|
15
|
+
it 'does not try to populate the space' do
|
16
|
+
Populators::Organization.stub(:new).and_return(organization_populator)
|
17
|
+
organization_populator.stub(:populate_and_save!).and_return(nil)
|
18
|
+
|
19
|
+
Populators::Space.stub(:new).and_return(space_populator)
|
20
|
+
space_populator.should_not receive(:populate_and_save!)
|
21
|
+
|
22
|
+
execute_populate_and_save
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
it "uses a organization_populator then a space_populator populator" do
|
27
|
+
Populators::Organization.should_receive(:new).with(input).and_return(organization_populator)
|
28
|
+
|
29
|
+
cfoundry_organization = double(CFoundry::V2::Organization)
|
30
|
+
organization_populator.should_receive(:populate_and_save!).and_return(cfoundry_organization)
|
31
|
+
|
32
|
+
Populators::Space.should_receive(:new).with(input, cfoundry_organization).and_return(space_populator)
|
33
|
+
space_populator.should_receive(:populate_and_save!)
|
34
|
+
|
20
35
|
execute_populate_and_save
|
21
36
|
end
|
22
37
|
end
|
23
38
|
end
|
24
|
-
end
|
25
39
|
end
|
@@ -59,7 +59,7 @@ module CF
|
|
59
59
|
subject { cf ["target", target] }
|
60
60
|
|
61
61
|
context "when the target is not valid" do
|
62
|
-
before { WebMock.stub_request(:get, "
|
62
|
+
before { WebMock.stub_request(:get, "https://#{target}/info").to_return(:body => "{}") }
|
63
63
|
|
64
64
|
it "should still be able to switch to a valid target after that" do
|
65
65
|
subject
|
data/spec/cf/cli_spec.rb
CHANGED
@@ -461,73 +461,13 @@ module CF
|
|
461
461
|
end
|
462
462
|
|
463
463
|
describe "#sane_target_url" do
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
it "removes any trailing slashes" do
|
468
|
-
expect(sane_target_url).to eq "http://example.com"
|
469
|
-
end
|
464
|
+
it "removes any trailing slashes" do
|
465
|
+
expect(context.sane_target_url("http://example.com/")).to eq "http://example.com"
|
466
|
+
expect(context.sane_target_url("https://example.com/")).to eq "https://example.com"
|
470
467
|
end
|
471
468
|
|
472
|
-
|
473
|
-
|
474
|
-
context "when the url can be reached via https" do
|
475
|
-
before do
|
476
|
-
TCPSocket.stub(:new).with(input_url, Net::HTTP.https_default_port)
|
477
|
-
end
|
478
|
-
|
479
|
-
it "prepends 'https' to the url" do
|
480
|
-
expect(sane_target_url).to eq "https://example.com"
|
481
|
-
end
|
482
|
-
end
|
483
|
-
|
484
|
-
context "when the url cannot be reached via https" do
|
485
|
-
before do
|
486
|
-
TCPSocket.stub(:new).with(input_url, Net::HTTP.https_default_port).and_raise error
|
487
|
-
end
|
488
|
-
|
489
|
-
context "due to ECONNREFUSED" do
|
490
|
-
let(:error) { Errno::ECONNREFUSED }
|
491
|
-
it "prepends 'http' to the url" do
|
492
|
-
expect(sane_target_url).to eq "http://example.com"
|
493
|
-
end
|
494
|
-
end
|
495
|
-
|
496
|
-
context "due to a SocketError" do
|
497
|
-
let(:error) { SocketError }
|
498
|
-
it "prepends 'http' to the url" do
|
499
|
-
expect(sane_target_url).to eq "http://example.com"
|
500
|
-
end
|
501
|
-
end
|
502
|
-
|
503
|
-
context "due to ETIMEDOUT" do
|
504
|
-
let(:error) { Errno::ETIMEDOUT }
|
505
|
-
it "prepends 'http' to the url" do
|
506
|
-
expect(sane_target_url).to eq "http://example.com"
|
507
|
-
end
|
508
|
-
end
|
509
|
-
end
|
510
|
-
|
511
|
-
context "when the TCP connection times out" do
|
512
|
-
let(:current_time) { Time.now }
|
513
|
-
|
514
|
-
before do
|
515
|
-
TCPSocket.stub(:new).with(input_url, Net::HTTP.https_default_port) {
|
516
|
-
sleep 10
|
517
|
-
}
|
518
|
-
end
|
519
|
-
|
520
|
-
it "prepends 'http' to the url" do
|
521
|
-
expect(sane_target_url).to eq "http://example.com"
|
522
|
-
end
|
523
|
-
|
524
|
-
it "times out after one second" do
|
525
|
-
start_time = Time.now
|
526
|
-
sane_target_url
|
527
|
-
end_time = Time.now
|
528
|
-
expect(end_time).to be_within(0.5).of(start_time + 1)
|
529
|
-
end
|
530
|
-
end
|
469
|
+
it "defaults to https when the given url has no http(s) scheme" do
|
470
|
+
expect(context.sane_target_url("example.com")).to eq "https://example.com"
|
531
471
|
end
|
532
472
|
end
|
533
473
|
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: 5.2.1.
|
4
|
+
version: 5.2.1.rc9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cloud Foundry Team
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-08-
|
12
|
+
date: 2013-08-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: addressable
|
@@ -137,6 +137,20 @@ dependencies:
|
|
137
137
|
- - ~>
|
138
138
|
- !ruby/object:Gem::Version
|
139
139
|
version: '2.1'
|
140
|
+
- !ruby/object:Gem::Dependency
|
141
|
+
name: anchorman
|
142
|
+
requirement: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - ! '>='
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '0'
|
147
|
+
type: :development
|
148
|
+
prerelease: false
|
149
|
+
version_requirements: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - ! '>='
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
140
154
|
- !ruby/object:Gem::Dependency
|
141
155
|
name: blue-shell
|
142
156
|
requirement: !ruby/object:Gem::Requirement
|
@@ -207,6 +221,20 @@ dependencies:
|
|
207
221
|
- - ! '>='
|
208
222
|
- !ruby/object:Gem::Version
|
209
223
|
version: '0'
|
224
|
+
- !ruby/object:Gem::Dependency
|
225
|
+
name: ocra
|
226
|
+
requirement: !ruby/object:Gem::Requirement
|
227
|
+
requirements:
|
228
|
+
- - ! '>='
|
229
|
+
- !ruby/object:Gem::Version
|
230
|
+
version: '0'
|
231
|
+
type: :development
|
232
|
+
prerelease: false
|
233
|
+
version_requirements: !ruby/object:Gem::Requirement
|
234
|
+
requirements:
|
235
|
+
- - ! '>='
|
236
|
+
- !ruby/object:Gem::Version
|
237
|
+
version: '0'
|
210
238
|
- !ruby/object:Gem::Dependency
|
211
239
|
name: rake
|
212
240
|
requirement: !ruby/object:Gem::Requirement
|
@@ -400,6 +428,7 @@ files:
|
|
400
428
|
- lib/micro/switcher/windows.rb
|
401
429
|
- lib/micro/vmrun.rb
|
402
430
|
- lib/tasks/gem_release.rake
|
431
|
+
- lib/tasks/windows_build.rake
|
403
432
|
- lib/tunnel/config/clients.yml
|
404
433
|
- lib/tunnel/helper-app/Gemfile
|
405
434
|
- lib/tunnel/helper-app/Gemfile.lock
|