ridley-connectors 2.3.1 → 2.4.0
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 +4 -4
- data/CHANGELOG.md +6 -0
- data/Gemfile +2 -3
- data/Guardfile +1 -7
- data/Rakefile +1 -0
- data/lib/ridley-connectors/host_commander.rb +9 -9
- data/lib/ridley-connectors/host_connector.rb +4 -4
- data/lib/ridley-connectors/resources/node_resource.rb +3 -3
- data/lib/ridley-connectors/version.rb +1 -1
- data/ridley-connectors.gemspec +2 -2
- data/spec/unit/ridley-connectors/bootstrap_context/unix_spec.rb +12 -12
- data/spec/unit/ridley-connectors/bootstrap_context_spec.rb +1 -1
- data/spec/unit/ridley-connectors/client_spec.rb +2 -2
- data/spec/unit/ridley-connectors/command_context/unix_uninstall_spec.rb +1 -1
- data/spec/unit/ridley-connectors/command_context/unix_update_omnibus_spec.rb +2 -2
- data/spec/unit/ridley-connectors/command_context/windows_update_omnibus_spec.rb +2 -2
- data/spec/unit/ridley-connectors/host_commander_spec.rb +49 -50
- data/spec/unit/ridley-connectors/host_connector/winrm/command_uploader_spec.rb +13 -9
- data/spec/unit/ridley-connectors/host_connector_spec.rb +10 -10
- metadata +7 -7
- data/.ruby-version +0 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7af7fa7d2548244502ecb8c58068e8942e53e050
|
|
4
|
+
data.tar.gz: 47f076edd626e03d1703891822e0299f5eb91ea4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 89b29b05d062eaf1935561e31c4b07434bf2509bb9ad8a00c67247fcbf54047b25aea68d4303fa1e7e8d82fd552203e91750a6c2b6bacc591d863362f3f1d9ad
|
|
7
|
+
data.tar.gz: 287594f56bf8892051b1f47c79051f2cb95f760d4af28ab66a5879d59d7a7799e99ddf46b1f000ef4c2bfe2bc586e042010c04ba704f366680f9ce81175868c0
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
|
@@ -5,14 +5,13 @@ gemspec
|
|
|
5
5
|
group :development do
|
|
6
6
|
gem 'yard'
|
|
7
7
|
gem 'spork'
|
|
8
|
-
gem 'guard', '~>
|
|
8
|
+
gem 'guard', '~> 2.0'
|
|
9
9
|
gem 'guard-rspec'
|
|
10
|
-
gem 'guard-spork', platforms: :ruby
|
|
11
|
-
gem 'fuubar'
|
|
12
10
|
end
|
|
13
11
|
|
|
14
12
|
group :test do
|
|
15
13
|
gem 'rspec'
|
|
16
14
|
gem 'webmock'
|
|
17
15
|
gem 'thor'
|
|
16
|
+
gem 'rake'
|
|
18
17
|
end
|
data/Guardfile
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
notification :off
|
|
2
2
|
|
|
3
|
-
guard '
|
|
4
|
-
watch('Gemfile')
|
|
5
|
-
watch('spec/spec_helper.rb') { :rspec }
|
|
6
|
-
watch(%r{^spec/support/.+\.rb$}) { :rspec }
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
guard 'rspec', cli: "--color --drb --format Fuubar", all_on_start: false, all_after_pass: false do
|
|
3
|
+
guard 'rspec', cmd: "bundle exec rspec --color", all_on_start: false, all_after_pass: false do
|
|
10
4
|
watch(%r{^spec/unit/.+_spec\.rb$})
|
|
11
5
|
watch(%r{^spec/acceptance/.+_spec\.rb$})
|
|
12
6
|
|
data/Rakefile
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require "bundler/gem_tasks"
|
|
@@ -225,20 +225,16 @@ module Ridley
|
|
|
225
225
|
#
|
|
226
226
|
# @return [HostConnector::SSH, HostConnector::WinRM, NilClass]
|
|
227
227
|
def connector_for(host, options = {})
|
|
228
|
-
connector = options[:connector]
|
|
228
|
+
connector = options[:connector].to_s
|
|
229
229
|
|
|
230
230
|
if !VALID_CONNECTORS.include?(connector)
|
|
231
|
-
log.
|
|
231
|
+
log.debug { "Connector '#{connector}' is not one of #{VALID_CONNECTORS}. Determining connector..." }
|
|
232
232
|
connector = nil
|
|
233
233
|
end
|
|
234
234
|
|
|
235
|
-
if (connector == DEFAULT_WINDOWS_CONNECTOR || connector.nil?) &&
|
|
236
|
-
winrm.connector_port_open?(host, options)
|
|
237
|
-
options.delete(:ssh)
|
|
235
|
+
if (connector == DEFAULT_WINDOWS_CONNECTOR || connector.nil?) && winrm.connector_port_open?(host, options)
|
|
238
236
|
winrm
|
|
239
|
-
elsif (connector == DEFAULT_LINUX_CONNECTOR || connector.nil?) &&
|
|
240
|
-
ssh.connector_port_open?(host, options)
|
|
241
|
-
options.delete(:winrm)
|
|
237
|
+
elsif (connector == DEFAULT_LINUX_CONNECTOR || connector.nil?) && ssh.connector_port_open?(host, options)
|
|
242
238
|
ssh
|
|
243
239
|
else
|
|
244
240
|
nil
|
|
@@ -265,7 +261,11 @@ module Ridley
|
|
|
265
261
|
if connector.nil?
|
|
266
262
|
log.warn { "No connector ports open on '#{host}'" }
|
|
267
263
|
HostConnector::Response.new(host, stderr: "No connector ports open on '#{host}'")
|
|
268
|
-
|
|
264
|
+
elsif connector.is_a?(winrm.class)
|
|
265
|
+
options.delete(:ssh)
|
|
266
|
+
connector.send(method, host, *args, options)
|
|
267
|
+
elsif connector.is_a?(ssh.class)
|
|
268
|
+
options.delete(:winrm)
|
|
269
269
|
connector.send(method, host, *args, options)
|
|
270
270
|
end
|
|
271
271
|
end
|
|
@@ -8,7 +8,7 @@ module Ridley
|
|
|
8
8
|
RETRY_COUNT = 3
|
|
9
9
|
CONNECTOR_PORT_ERRORS = [Errno::ETIMEDOUT,
|
|
10
10
|
Timeout::Error,
|
|
11
|
-
SocketError,
|
|
11
|
+
SocketError,
|
|
12
12
|
Errno::ECONNREFUSED,
|
|
13
13
|
Errno::EHOSTUNREACH,
|
|
14
14
|
Errno::EADDRNOTAVAIL,
|
|
@@ -129,12 +129,12 @@ module Ridley
|
|
|
129
129
|
# @param [Fixnum] port
|
|
130
130
|
# the port to attempt to connect on
|
|
131
131
|
# @param [Fixnum] timeout ({PORT_CHECK_TIMEOUT})
|
|
132
|
-
#
|
|
132
|
+
#
|
|
133
133
|
# @return [Boolean]
|
|
134
134
|
def connectable?(host, port, timeout = PORT_CHECK_TIMEOUT)
|
|
135
|
-
addr
|
|
135
|
+
addr = Socket.getaddrinfo(host, nil)
|
|
136
136
|
sockaddr = Socket.pack_sockaddr_in(port, addr[0][3])
|
|
137
|
-
socket
|
|
137
|
+
socket = Socket.new(Socket.const_get(addr[0][0]), Socket::SOCK_STREAM, 0)
|
|
138
138
|
socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
|
|
139
139
|
|
|
140
140
|
success = false
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
module Ridley
|
|
2
2
|
class NodeResource
|
|
3
|
-
|
|
4
3
|
attr_reader :server_url
|
|
5
4
|
attr_reader :validator_path
|
|
6
5
|
attr_reader :validator_client
|
|
@@ -123,7 +122,7 @@ module Ridley
|
|
|
123
122
|
# @param [String] host
|
|
124
123
|
# @param [Array<String>] command_lines
|
|
125
124
|
# @option options [String] :connector
|
|
126
|
-
# a connectory type to prefer
|
|
125
|
+
# a connectory type to prefer
|
|
127
126
|
#
|
|
128
127
|
# @return [HostConnector::Response]
|
|
129
128
|
def ruby_script(host, command_lines, options = {})
|
|
@@ -135,6 +134,8 @@ module Ridley
|
|
|
135
134
|
#
|
|
136
135
|
# @param [String] host
|
|
137
136
|
# @param [String] command
|
|
137
|
+
# @option options [String] :connector
|
|
138
|
+
# a connectory type to prefer
|
|
138
139
|
#
|
|
139
140
|
# @return [HostConnector::Response]
|
|
140
141
|
def run(host, command, options = {})
|
|
@@ -192,7 +193,6 @@ module Ridley
|
|
|
192
193
|
host_commander.uninstall_chef(host, options)
|
|
193
194
|
end
|
|
194
195
|
|
|
195
|
-
|
|
196
196
|
# Update a node's Omnibus installation of Chef
|
|
197
197
|
#
|
|
198
198
|
# @param [String] host
|
data/ridley-connectors.gemspec
CHANGED
|
@@ -17,8 +17,8 @@ Gem::Specification.new do |s|
|
|
|
17
17
|
s.version = Ridley::Connectors::VERSION
|
|
18
18
|
s.required_ruby_version = ">= 1.9.1"
|
|
19
19
|
|
|
20
|
-
s.add_dependency 'celluloid', '~> 0.16.0
|
|
21
|
-
s.add_dependency 'celluloid-io', '~> 0.16.
|
|
20
|
+
s.add_dependency 'celluloid', '~> 0.16.0'
|
|
21
|
+
s.add_dependency 'celluloid-io', '~> 0.16.1'
|
|
22
22
|
s.add_dependency 'erubis'
|
|
23
23
|
s.add_dependency 'net-ssh'
|
|
24
24
|
s.add_dependency 'net-ssh-gateway'
|
|
@@ -19,7 +19,7 @@ describe Ridley::BootstrapContext::Unix do
|
|
|
19
19
|
options.delete(:sudo)
|
|
20
20
|
obj = subject.new(options)
|
|
21
21
|
|
|
22
|
-
obj.send(:sudo).
|
|
22
|
+
expect(obj.send(:sudo)).to be true
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
|
|
@@ -28,7 +28,7 @@ describe Ridley::BootstrapContext::Unix do
|
|
|
28
28
|
options.merge!(sudo: false)
|
|
29
29
|
obj = subject.new(options)
|
|
30
30
|
|
|
31
|
-
obj.send(:sudo).
|
|
31
|
+
expect(obj.send(:sudo)).to be false
|
|
32
32
|
end
|
|
33
33
|
end
|
|
34
34
|
end
|
|
@@ -40,62 +40,62 @@ describe Ridley::BootstrapContext::Unix do
|
|
|
40
40
|
|
|
41
41
|
describe "#templates_path" do
|
|
42
42
|
it "returns a pathname" do
|
|
43
|
-
subject.templates_path.
|
|
43
|
+
expect(subject.templates_path).to be_a(Pathname)
|
|
44
44
|
end
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
describe "#first_boot" do
|
|
48
48
|
it "returns a string" do
|
|
49
|
-
subject.first_boot.
|
|
49
|
+
expect(subject.first_boot).to be_a(String)
|
|
50
50
|
end
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
describe "#encrypted_data_bag_secret" do
|
|
54
54
|
it "returns a string" do
|
|
55
|
-
subject.encrypted_data_bag_secret.
|
|
55
|
+
expect(subject.encrypted_data_bag_secret).to be_a(String)
|
|
56
56
|
end
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
describe "#validation_key" do
|
|
60
60
|
it "returns a string" do
|
|
61
|
-
subject.validation_key.
|
|
61
|
+
expect(subject.validation_key).to be_a(String)
|
|
62
62
|
end
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
describe "template" do
|
|
66
66
|
it "returns a string" do
|
|
67
|
-
subject.template.
|
|
67
|
+
expect(subject.template).to be_a(Erubis::Eruby)
|
|
68
68
|
end
|
|
69
69
|
end
|
|
70
70
|
end
|
|
71
71
|
|
|
72
72
|
describe "#boot_command" do
|
|
73
73
|
it "returns a string" do
|
|
74
|
-
subject.boot_command.
|
|
74
|
+
expect(subject.boot_command).to be_a(String)
|
|
75
75
|
end
|
|
76
76
|
end
|
|
77
77
|
|
|
78
78
|
describe "#chef_run" do
|
|
79
79
|
it "returns a string" do
|
|
80
|
-
subject.chef_run.
|
|
80
|
+
expect(subject.chef_run).to be_a(String)
|
|
81
81
|
end
|
|
82
82
|
end
|
|
83
83
|
|
|
84
84
|
describe "#chef_config" do
|
|
85
85
|
it "returns a string" do
|
|
86
|
-
subject.chef_config.
|
|
86
|
+
expect(subject.chef_config).to be_a(String)
|
|
87
87
|
end
|
|
88
88
|
end
|
|
89
89
|
|
|
90
90
|
describe "#default_template" do
|
|
91
91
|
it "returns a string" do
|
|
92
|
-
subject.default_template.
|
|
92
|
+
expect(subject.default_template).to be_a(String)
|
|
93
93
|
end
|
|
94
94
|
end
|
|
95
95
|
|
|
96
96
|
describe "#bootstrap_directory" do
|
|
97
97
|
it "returns a string" do
|
|
98
|
-
subject.bootstrap_directory.
|
|
98
|
+
expect(subject.bootstrap_directory).to be_a(String)
|
|
99
99
|
end
|
|
100
100
|
end
|
|
101
101
|
end
|
|
@@ -18,7 +18,7 @@ describe Ridley::BootstrapContext::Base do
|
|
|
18
18
|
describe ":included" do
|
|
19
19
|
context "when a class includes Ridley::BootstrapBinding" do
|
|
20
20
|
it "should have a validate_options class method`" do
|
|
21
|
-
subject.methods.
|
|
21
|
+
expect(subject.methods).to include(:validate_options)
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
end
|
|
@@ -21,11 +21,11 @@ describe Ridley::Client do
|
|
|
21
21
|
subject { described_class.new(options) }
|
|
22
22
|
|
|
23
23
|
it "assigns a 'ssh' attribute from the given 'ssh' option" do
|
|
24
|
-
described_class.new(config).ssh.
|
|
24
|
+
expect(described_class.new(config).ssh).to eql({user: "fake", password: "password1", port: "222"})
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
it "assigns a 'winrm' attribute from the given 'winrm' option" do
|
|
28
|
-
described_class.new(config).winrm.
|
|
28
|
+
expect(described_class.new(config).winrm).to eql({user: "fake", password: "password2", port: "5986"})
|
|
29
29
|
end
|
|
30
30
|
end
|
|
31
31
|
end
|
|
@@ -6,7 +6,7 @@ describe Ridley::CommandContext::UnixUninstall do
|
|
|
6
6
|
describe "::new" do
|
|
7
7
|
context "when skip_chef is not provided" do
|
|
8
8
|
it "sets skip_chef to false" do
|
|
9
|
-
expect(unix_uninstall.skip_chef).to
|
|
9
|
+
expect(unix_uninstall.skip_chef).to be false
|
|
10
10
|
end
|
|
11
11
|
end
|
|
12
12
|
end
|
|
@@ -12,7 +12,7 @@ describe Ridley::CommandContext::UnixUpdateOmnibus do
|
|
|
12
12
|
|
|
13
13
|
context "when prerelease is not given" do
|
|
14
14
|
it "prerelease is set to false" do
|
|
15
|
-
expect(unix_update_omnibus.prerelease).to
|
|
15
|
+
expect(unix_update_omnibus.prerelease).to be false
|
|
16
16
|
end
|
|
17
17
|
end
|
|
18
18
|
|
|
@@ -31,7 +31,7 @@ describe Ridley::CommandContext::UnixUpdateOmnibus do
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
it "sets prerelease" do
|
|
34
|
-
expect(unix_update_omnibus.prerelease).to
|
|
34
|
+
expect(unix_update_omnibus.prerelease).to be true
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
it "sets direct_url" do
|
|
@@ -12,7 +12,7 @@ describe Ridley::CommandContext::WindowsUpdateOmnibus do
|
|
|
12
12
|
|
|
13
13
|
context "when prerelease is not given" do
|
|
14
14
|
it "prerelease is set to false" do
|
|
15
|
-
expect(windows_update_omnibus.prerelease).to
|
|
15
|
+
expect(windows_update_omnibus.prerelease).to be false
|
|
16
16
|
end
|
|
17
17
|
end
|
|
18
18
|
|
|
@@ -31,7 +31,7 @@ describe Ridley::CommandContext::WindowsUpdateOmnibus do
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
it "sets prerelease" do
|
|
34
|
-
expect(windows_update_omnibus.prerelease).to
|
|
34
|
+
expect(windows_update_omnibus.prerelease).to be true
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
it "sets direct_url" do
|
|
@@ -12,25 +12,24 @@ describe Ridley::HostCommander do
|
|
|
12
12
|
|
|
13
13
|
context "when communicating to a unix node" do
|
|
14
14
|
before do
|
|
15
|
-
subject.send(:winrm).
|
|
16
|
-
subject.send(:ssh).
|
|
15
|
+
allow(subject.send(:winrm)).to receive(:connector_port_open?) { false }
|
|
16
|
+
allow(subject.send(:ssh)).to receive(:connector_port_open?) { true }
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
it "sends a #run message to the ssh host connector" do
|
|
20
|
-
subject.send(:ssh).
|
|
20
|
+
expect(subject.send(:ssh)).to receive(:send).with(:run, host, command, options)
|
|
21
21
|
subject.run(host, command, options)
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
context "when communicating to a windows node" do
|
|
26
26
|
before do
|
|
27
|
-
subject.send(:winrm).
|
|
28
|
-
subject.send(:ssh).
|
|
27
|
+
allow(subject.send(:winrm)).to receive(:connector_port_open?) { true }
|
|
28
|
+
allow(subject.send(:ssh)).to receive(:connector_port_open?) { false }
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
it "sends a #run message to the ssh host connector" do
|
|
32
|
-
subject.send(:winrm).
|
|
33
|
-
|
|
32
|
+
expect(subject.send(:winrm)).to receive(:send).with(:run, host, command, options)
|
|
34
33
|
subject.run(host, command, options)
|
|
35
34
|
end
|
|
36
35
|
end
|
|
@@ -43,12 +42,12 @@ describe Ridley::HostCommander do
|
|
|
43
42
|
|
|
44
43
|
context "when communicating to a unix node" do
|
|
45
44
|
before do
|
|
46
|
-
subject.send(:winrm).
|
|
47
|
-
subject.send(:ssh).
|
|
45
|
+
allow(subject.send(:winrm)).to receive(:connector_port_open?) { false }
|
|
46
|
+
allow(subject.send(:ssh)).to receive(:connector_port_open?) { true }
|
|
48
47
|
end
|
|
49
48
|
|
|
50
49
|
it "sends a #bootstrap message to the ssh host connector" do
|
|
51
|
-
subject.send(:ssh).
|
|
50
|
+
expect(subject.send(:ssh)).to receive(:bootstrap).with(host, options)
|
|
52
51
|
|
|
53
52
|
subject.bootstrap(host, options)
|
|
54
53
|
end
|
|
@@ -56,12 +55,12 @@ describe Ridley::HostCommander do
|
|
|
56
55
|
|
|
57
56
|
context "when communicating to a windows node" do
|
|
58
57
|
before do
|
|
59
|
-
subject.send(:winrm).
|
|
60
|
-
subject.send(:ssh).
|
|
58
|
+
allow(subject.send(:winrm)).to receive(:connector_port_open?) { true }
|
|
59
|
+
allow(subject.send(:ssh)).to receive(:connector_port_open?) { false }
|
|
61
60
|
end
|
|
62
61
|
|
|
63
62
|
it "sends a #bootstrap message to the winrm host connector" do
|
|
64
|
-
subject.send(:winrm).
|
|
63
|
+
expect(subject.send(:winrm)).to receive(:bootstrap).with(host, options)
|
|
65
64
|
|
|
66
65
|
subject.bootstrap(host, options)
|
|
67
66
|
end
|
|
@@ -75,12 +74,12 @@ describe Ridley::HostCommander do
|
|
|
75
74
|
|
|
76
75
|
context "when communicating to a unix node" do
|
|
77
76
|
before do
|
|
78
|
-
subject.send(:winrm).
|
|
79
|
-
subject.send(:ssh).
|
|
77
|
+
allow(subject.send(:winrm)).to receive(:connector_port_open?) { false }
|
|
78
|
+
allow(subject.send(:ssh)).to receive(:connector_port_open?) { true }
|
|
80
79
|
end
|
|
81
80
|
|
|
82
81
|
it "sends a #chef_client message to the ssh host connector" do
|
|
83
|
-
subject.send(:ssh).
|
|
82
|
+
expect(subject.send(:ssh)).to receive(:chef_client).with(host, options)
|
|
84
83
|
|
|
85
84
|
subject.chef_client(host, options)
|
|
86
85
|
end
|
|
@@ -88,12 +87,12 @@ describe Ridley::HostCommander do
|
|
|
88
87
|
|
|
89
88
|
context "when communicating to a windows node" do
|
|
90
89
|
before do
|
|
91
|
-
subject.send(:winrm).
|
|
92
|
-
subject.send(:ssh).
|
|
90
|
+
allow(subject.send(:winrm)).to receive(:connector_port_open?) { true }
|
|
91
|
+
allow(subject.send(:ssh)).to receive(:connector_port_open?) { false }
|
|
93
92
|
end
|
|
94
93
|
|
|
95
94
|
it "sends a #chef_client message to the ssh host connector" do
|
|
96
|
-
subject.send(:winrm).
|
|
95
|
+
expect(subject.send(:winrm)).to receive(:chef_client).with(host, options)
|
|
97
96
|
|
|
98
97
|
subject.chef_client(host, options)
|
|
99
98
|
end
|
|
@@ -108,12 +107,12 @@ describe Ridley::HostCommander do
|
|
|
108
107
|
|
|
109
108
|
context "when communicating to a unix node" do
|
|
110
109
|
before do
|
|
111
|
-
subject.send(:winrm).
|
|
112
|
-
subject.send(:ssh).
|
|
110
|
+
allow(subject.send(:winrm)).to receive(:connector_port_open?) { false }
|
|
111
|
+
allow(subject.send(:ssh)).to receive(:connector_port_open?) { true }
|
|
113
112
|
end
|
|
114
113
|
|
|
115
114
|
it "sends a #put_secret message to the ssh host connector" do
|
|
116
|
-
subject.send(:ssh).
|
|
115
|
+
expect(subject.send(:ssh)).to receive(:put_secret).with(host, secret, options)
|
|
117
116
|
|
|
118
117
|
subject.put_secret(host, secret, options)
|
|
119
118
|
end
|
|
@@ -121,12 +120,12 @@ describe Ridley::HostCommander do
|
|
|
121
120
|
|
|
122
121
|
context "when communicating to a windows node" do
|
|
123
122
|
before do
|
|
124
|
-
subject.send(:winrm).
|
|
125
|
-
subject.send(:ssh).
|
|
123
|
+
allow(subject.send(:winrm)).to receive(:connector_port_open?) { true }
|
|
124
|
+
allow(subject.send(:ssh)).to receive(:connector_port_open?) { false }
|
|
126
125
|
end
|
|
127
126
|
|
|
128
127
|
it "sends a #put_secret message to the ssh host connector" do
|
|
129
|
-
subject.send(:winrm).
|
|
128
|
+
expect(subject.send(:winrm)).to receive(:put_secret).with(host, secret, options)
|
|
130
129
|
|
|
131
130
|
subject.put_secret(host, secret, options)
|
|
132
131
|
end
|
|
@@ -141,12 +140,12 @@ describe Ridley::HostCommander do
|
|
|
141
140
|
|
|
142
141
|
context "when communicating to a unix node" do
|
|
143
142
|
before do
|
|
144
|
-
subject.send(:winrm).
|
|
145
|
-
subject.send(:ssh).
|
|
143
|
+
allow(subject.send(:winrm)).to receive(:connector_port_open?) { false }
|
|
144
|
+
allow(subject.send(:ssh)).to receive(:connector_port_open?) { true }
|
|
146
145
|
end
|
|
147
146
|
|
|
148
147
|
it "sends a #ruby_script message to the ssh host connector" do
|
|
149
|
-
subject.send(:ssh).
|
|
148
|
+
expect(subject.send(:ssh)).to receive(:ruby_script).with(host, command_lines, options)
|
|
150
149
|
|
|
151
150
|
subject.ruby_script(host, command_lines, options)
|
|
152
151
|
end
|
|
@@ -154,12 +153,12 @@ describe Ridley::HostCommander do
|
|
|
154
153
|
|
|
155
154
|
context "when communicating to a windows node" do
|
|
156
155
|
before do
|
|
157
|
-
subject.send(:winrm).
|
|
158
|
-
subject.send(:ssh).
|
|
156
|
+
allow(subject.send(:winrm)).to receive(:connector_port_open?) { true }
|
|
157
|
+
allow(subject.send(:ssh)).to receive(:connector_port_open?) { false }
|
|
159
158
|
end
|
|
160
159
|
|
|
161
160
|
it "sends a #ruby_script message to the ssh host connector" do
|
|
162
|
-
subject.send(:winrm).
|
|
161
|
+
expect(subject.send(:winrm)).to receive(:ruby_script).with(host, command_lines, options)
|
|
163
162
|
|
|
164
163
|
subject.ruby_script(host, command_lines, options)
|
|
165
164
|
end
|
|
@@ -176,7 +175,7 @@ describe Ridley::HostCommander do
|
|
|
176
175
|
|
|
177
176
|
it "executes retry logic" do
|
|
178
177
|
@times_called = 0
|
|
179
|
-
subject.send(:winrm).
|
|
178
|
+
expect(subject.send(:winrm)).to receive(:connectable?).twice do
|
|
180
179
|
@times_called += 1
|
|
181
180
|
if @times_called == 1
|
|
182
181
|
raise Errno::ETIMEDOUT
|
|
@@ -189,14 +188,14 @@ describe Ridley::HostCommander do
|
|
|
189
188
|
end
|
|
190
189
|
end
|
|
191
190
|
|
|
192
|
-
it "
|
|
193
|
-
subject.send(:winrm).
|
|
191
|
+
it "returns winrm if winrm is open" do
|
|
192
|
+
allow(subject.send(:winrm)).to receive(:connector_port_open?) { true }
|
|
194
193
|
expect(subject.connector_for(host).class).to eq(Ridley::HostConnector::WinRM)
|
|
195
194
|
end
|
|
196
|
-
|
|
197
|
-
it "
|
|
198
|
-
subject.send(:winrm).
|
|
199
|
-
subject.send(:ssh).
|
|
195
|
+
|
|
196
|
+
it "returns ssh if winrm is closed" do
|
|
197
|
+
allow(subject.send(:winrm)).to receive(:connector_port_open?) { false }
|
|
198
|
+
allow(subject.send(:ssh)).to receive(:connector_port_open?) { true }
|
|
200
199
|
expect(subject.connector_for(host).class).to eq(Ridley::HostConnector::SSH)
|
|
201
200
|
end
|
|
202
201
|
|
|
@@ -204,13 +203,13 @@ describe Ridley::HostCommander do
|
|
|
204
203
|
let(:connector_options) { options.merge(connector: "winrm") }
|
|
205
204
|
let(:winrm) { double }
|
|
206
205
|
|
|
207
|
-
it "
|
|
208
|
-
subject.send(:winrm).
|
|
206
|
+
it "returns winrm if winrm is open" do
|
|
207
|
+
allow(subject.send(:winrm)).to receive(:connector_port_open?) { true }
|
|
209
208
|
expect(subject.connector_for(host, options).class).to eql(Ridley::HostConnector::WinRM)
|
|
210
209
|
end
|
|
211
210
|
|
|
212
|
-
it "
|
|
213
|
-
subject.
|
|
211
|
+
it "returns nil if winrm is closed" do
|
|
212
|
+
allow(subject).to receive(:connector_port_open?) { false }
|
|
214
213
|
expect(subject.connector_for(host, connector_options)).to be_nil
|
|
215
214
|
end
|
|
216
215
|
end
|
|
@@ -218,15 +217,15 @@ describe Ridley::HostCommander do
|
|
|
218
217
|
context "when a connector of ssh is given" do
|
|
219
218
|
let(:connector_options) { options.merge(connector: "ssh") }
|
|
220
219
|
|
|
221
|
-
it "
|
|
222
|
-
subject.send(:ssh).
|
|
223
|
-
subject.send(:winrm).
|
|
220
|
+
it "returns ssh if ssh is open" do
|
|
221
|
+
allow(subject.send(:ssh)).to receive(:connector_port_open?) { true }
|
|
222
|
+
expect(subject.send(:winrm)).not_to receive(:connector_port_open?)
|
|
224
223
|
expect(subject.connector_for(host, connector_options).class).to eql(Ridley::HostConnector::SSH)
|
|
225
224
|
end
|
|
226
225
|
|
|
227
|
-
it "
|
|
228
|
-
subject.send(:ssh).
|
|
229
|
-
subject.send(:winrm).
|
|
226
|
+
it "returns nil if ssh is closed" do
|
|
227
|
+
allow(subject.send(:ssh)).to receive(:connector_port_open?) { false }
|
|
228
|
+
expect(subject.send(:winrm)).not_to receive(:connector_port_open?)
|
|
230
229
|
expect(subject.connector_for(host, connector_options)).to be_nil
|
|
231
230
|
end
|
|
232
231
|
end
|
|
@@ -234,8 +233,8 @@ describe Ridley::HostCommander do
|
|
|
234
233
|
context "when an unknown connector is given" do
|
|
235
234
|
let(:connector_options) { options.merge(connector: "foo") }
|
|
236
235
|
|
|
237
|
-
it "
|
|
238
|
-
[:winrm, :ssh].each { |c| subject.send(c).
|
|
236
|
+
it "tries both connectors" do
|
|
237
|
+
[:winrm, :ssh].each { |c| expect(subject.send(c)).to receive(:connector_port_open?) }
|
|
239
238
|
subject.connector_for(host, connector_options)
|
|
240
239
|
end
|
|
241
240
|
end
|
|
@@ -15,22 +15,26 @@ describe Ridley::HostConnector::WinRM::CommandUploader do
|
|
|
15
15
|
let(:run_cmd_data) { { data: [{ stdout: "abc123" }] } }
|
|
16
16
|
let(:command_file_name) { "my_command.bat" }
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
describe "#winrm" do
|
|
19
|
+
it "is equal to the given winrm web service object" do
|
|
20
|
+
expect(subject.winrm).to eq(winrm_stub)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
19
23
|
|
|
20
24
|
before do
|
|
21
|
-
command_uploader.
|
|
25
|
+
allow(command_uploader).to receive(:get_file_path) { "" }
|
|
22
26
|
end
|
|
23
27
|
|
|
24
28
|
describe "#upload" do
|
|
25
29
|
let(:upload) { command_uploader.upload(command_string) }
|
|
26
30
|
|
|
27
31
|
it "calls winrm to upload and convert the command" do
|
|
28
|
-
winrm_stub.
|
|
32
|
+
expect(winrm_stub).to receive(:run_cmd).and_return(
|
|
29
33
|
run_cmd_data,
|
|
30
34
|
nil,
|
|
31
35
|
run_cmd_data
|
|
32
36
|
)
|
|
33
|
-
winrm_stub.
|
|
37
|
+
expect(winrm_stub).to receive(:powershell)
|
|
34
38
|
|
|
35
39
|
upload
|
|
36
40
|
end
|
|
@@ -41,7 +45,7 @@ describe Ridley::HostConnector::WinRM::CommandUploader do
|
|
|
41
45
|
let(:command) { command_uploader.command }
|
|
42
46
|
|
|
43
47
|
before do
|
|
44
|
-
command_uploader.
|
|
48
|
+
allow(command_uploader).to receive(:command_file_name) { command_file_name }
|
|
45
49
|
end
|
|
46
50
|
|
|
47
51
|
it { should eq("cmd.exe /C #{command_file_name}") }
|
|
@@ -54,13 +58,13 @@ describe Ridley::HostConnector::WinRM::CommandUploader do
|
|
|
54
58
|
let(:base64_file_name) { "my_base64_file" }
|
|
55
59
|
|
|
56
60
|
before do
|
|
57
|
-
command_uploader.
|
|
58
|
-
command_uploader.
|
|
61
|
+
allow(command_uploader).to receive(:command_file_name) { command_file_name }
|
|
62
|
+
allow(command_uploader).to receive(:base64_file_name) { base64_file_name }
|
|
59
63
|
end
|
|
60
64
|
|
|
61
65
|
it "cleans up the windows temp dir" do
|
|
62
|
-
winrm_stub.
|
|
63
|
-
winrm_stub.
|
|
66
|
+
expect(winrm_stub).to receive(:run_cmd).with("del #{base64_file_name} /F /Q")
|
|
67
|
+
expect(winrm_stub).to receive(:run_cmd).with("del #{command_file_name} /F /Q")
|
|
64
68
|
cleanup
|
|
65
69
|
end
|
|
66
70
|
end
|
|
@@ -55,7 +55,7 @@ describe Ridley::HostConnector::Base do
|
|
|
55
55
|
Socket
|
|
56
56
|
.stub(:getaddrinfo)
|
|
57
57
|
.with(host, nil)
|
|
58
|
-
.and_return [["AF_INET", 0, "33.33.33.10", "33.33.33.10", 2, 2, 17],
|
|
58
|
+
.and_return [["AF_INET", 0, "33.33.33.10", "33.33.33.10", 2, 2, 17],
|
|
59
59
|
["AF_INET", 0, "33.33.33.10", "33.33.33.10", 2, 1, 6]]
|
|
60
60
|
end
|
|
61
61
|
|
|
@@ -73,26 +73,26 @@ describe Ridley::HostConnector::Base do
|
|
|
73
73
|
|
|
74
74
|
it "should return true when a connection is initiated" do
|
|
75
75
|
::IO.stub(:select).and_return ["an array!"]
|
|
76
|
-
|
|
77
|
-
expect(subject.send(:connectable?, host, port)).to
|
|
76
|
+
|
|
77
|
+
expect(subject.send(:connectable?, host, port)).to be true
|
|
78
78
|
end
|
|
79
79
|
|
|
80
80
|
it "should return true when a connection is initiated and an explicit nil is passed as the timeout" do
|
|
81
81
|
::IO.stub(:select).with(anything, anything, anything, Ridley::HostConnector::Base::PORT_CHECK_TIMEOUT).and_return ["an array!"]
|
|
82
|
-
|
|
83
|
-
expect(subject.send(:connectable?, host, port, nil)).to
|
|
82
|
+
|
|
83
|
+
expect(subject.send(:connectable?, host, port, nil)).to be true
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
it "should return false when select times out" do
|
|
87
87
|
::IO.stub(:select).and_return nil
|
|
88
88
|
|
|
89
|
-
expect(subject.send(:connectable?, host, port)).to
|
|
89
|
+
expect(subject.send(:connectable?, host, port)).to be false
|
|
90
90
|
end
|
|
91
91
|
|
|
92
92
|
it "should return true when the connection does not have to wait" do
|
|
93
93
|
Socket.any_instance.stub(:connect_nonblock).and_return 0
|
|
94
|
-
|
|
95
|
-
expect(subject.send(:connectable?, host, port)).to
|
|
94
|
+
|
|
95
|
+
expect(subject.send(:connectable?, host, port)).to be true
|
|
96
96
|
end
|
|
97
97
|
end
|
|
98
98
|
|
|
@@ -113,13 +113,13 @@ describe Ridley::HostConnector::Base do
|
|
|
113
113
|
|
|
114
114
|
context "should return false" do
|
|
115
115
|
it "" do
|
|
116
|
-
expect(subject.send(:connectable?, host, port)).to
|
|
116
|
+
expect(subject.send(:connectable?, host, port)).to be false
|
|
117
117
|
end
|
|
118
118
|
|
|
119
119
|
it "when the socket close throws EBAFD" do
|
|
120
120
|
Socket.any_instance.stub(:close).and_return { raise Errno::EBADF.new }
|
|
121
121
|
|
|
122
|
-
expect(subject.send(:connectable?, host, port)).to
|
|
122
|
+
expect(subject.send(:connectable?, host, port)).to be false
|
|
123
123
|
end
|
|
124
124
|
end
|
|
125
125
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ridley-connectors
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jamie Winsor
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2015-10-15 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: celluloid
|
|
@@ -17,28 +17,28 @@ dependencies:
|
|
|
17
17
|
requirements:
|
|
18
18
|
- - "~>"
|
|
19
19
|
- !ruby/object:Gem::Version
|
|
20
|
-
version: 0.16.0
|
|
20
|
+
version: 0.16.0
|
|
21
21
|
type: :runtime
|
|
22
22
|
prerelease: false
|
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
|
24
24
|
requirements:
|
|
25
25
|
- - "~>"
|
|
26
26
|
- !ruby/object:Gem::Version
|
|
27
|
-
version: 0.16.0
|
|
27
|
+
version: 0.16.0
|
|
28
28
|
- !ruby/object:Gem::Dependency
|
|
29
29
|
name: celluloid-io
|
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
|
31
31
|
requirements:
|
|
32
32
|
- - "~>"
|
|
33
33
|
- !ruby/object:Gem::Version
|
|
34
|
-
version: 0.16.
|
|
34
|
+
version: 0.16.1
|
|
35
35
|
type: :runtime
|
|
36
36
|
prerelease: false
|
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
|
38
38
|
requirements:
|
|
39
39
|
- - "~>"
|
|
40
40
|
- !ruby/object:Gem::Version
|
|
41
|
-
version: 0.16.
|
|
41
|
+
version: 0.16.1
|
|
42
42
|
- !ruby/object:Gem::Dependency
|
|
43
43
|
name: erubis
|
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -132,13 +132,13 @@ extensions: []
|
|
|
132
132
|
extra_rdoc_files: []
|
|
133
133
|
files:
|
|
134
134
|
- ".gitignore"
|
|
135
|
-
- ".ruby-version"
|
|
136
135
|
- ".travis.yml"
|
|
137
136
|
- CHANGELOG.md
|
|
138
137
|
- Gemfile
|
|
139
138
|
- Guardfile
|
|
140
139
|
- LICENSE
|
|
141
140
|
- README.md
|
|
141
|
+
- Rakefile
|
|
142
142
|
- Thorfile
|
|
143
143
|
- bootstrappers/unix_omnibus.erb
|
|
144
144
|
- bootstrappers/windows_omnibus.erb
|
data/.ruby-version
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2.1.1
|