ridley-connectors 1.2.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/ridley-connectors/host_commander.rb +2 -1
- data/lib/ridley-connectors/host_connector/winrm.rb +14 -5
- data/lib/ridley-connectors/version.rb +1 -1
- data/spec/unit/ridley-connectors/host_commander_spec.rb +22 -6
- data/spec/unit/ridley-connectors/host_connector/winrm_spec.rb +11 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8931876ade720f3abe20d2e445e71104241df5a1
|
4
|
+
data.tar.gz: 4980b60e12f779d067baea1cf83dc7d700c7d996
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 55fe74b96c38964ee8ccb8dbc51863bdd802deaeb95a75f607dab2c2b67eb4a3c65a35a678b46cb5221b30111f52e77e96efe1a807727a4166c572f7ae57d59d
|
7
|
+
data.tar.gz: 4416bbcb1b1dfc7ad830fa41fbcebab58a2ab1655d508a41cd2dfc14d57d2ddee116afaa0c4571c3de1c0042b4e5f06b031519f1615fc4559851d22274ef8f17
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## v.1.2.1
|
2
|
+
|
3
|
+
* [#8](https://github.com/RiotGames/ridley-connectors/pull/8) Add a flag to execute Ruby scripts on Windows machines using a batch file
|
4
|
+
* [#9](https://github.com/RiotGames/ridley-connectors/pull/9) Fix a bug where a nil value for SSH or WinRM config would cause a NoMethodError
|
5
|
+
|
1
6
|
## v.1.2.0
|
2
7
|
|
3
8
|
* Bumping internal dependency on Ridley to at least 2.4.2
|
@@ -170,7 +170,8 @@ module Ridley
|
|
170
170
|
#
|
171
171
|
# @return [HostConnector::SSH, HostConnector::WinRM]
|
172
172
|
def connector_for(host, options = {})
|
173
|
-
options
|
173
|
+
options[:ssh] ||= Hash.new
|
174
|
+
options[:winrm] ||= Hash.new
|
174
175
|
options[:ssh][:port] ||= HostConnector::SSH::DEFAULT_PORT
|
175
176
|
options[:winrm][:port] ||= HostConnector::WinRM::DEFAULT_PORT
|
176
177
|
|
@@ -29,6 +29,8 @@ module Ridley
|
|
29
29
|
# * :user (String) a user that will login to each node and perform the bootstrap command on
|
30
30
|
# * :password (String) the password for the user that will perform the bootstrap (required)
|
31
31
|
# * :port (Fixnum) the winrm port to connect on the node the bootstrap will be performed on (5985)
|
32
|
+
# @option options [TrueClass, FalseClass] :force_batch_file
|
33
|
+
# Always use a batch file to run the command regardless of command length.
|
32
34
|
#
|
33
35
|
# @return [HostConnector::Response]
|
34
36
|
def run(host, command, options = {})
|
@@ -49,7 +51,7 @@ module Ridley
|
|
49
51
|
HostConnector::Response.new(host).tap do |response|
|
50
52
|
begin
|
51
53
|
command_uploaders << command_uploader = CommandUploader.new(connection)
|
52
|
-
command = get_command(command, command_uploader)
|
54
|
+
command = get_command(command, command_uploader, force_batch_file: options[:force_batch_file])
|
53
55
|
|
54
56
|
log.info "Running WinRM command: '#{command}' on: '#{host}' as: '#{user}'"
|
55
57
|
|
@@ -93,10 +95,14 @@ module Ridley
|
|
93
95
|
# limit. Otherwise, we return an execution of the command as a batch file.
|
94
96
|
#
|
95
97
|
# @param command [String]
|
98
|
+
# @param options [Hash]
|
99
|
+
#
|
100
|
+
# @option options [TrueClass, FalseClass] :force_batch_file
|
101
|
+
# Always use a batch file to run the command regardless of command length.
|
96
102
|
#
|
97
103
|
# @return [String]
|
98
|
-
def get_command(command, command_uploader)
|
99
|
-
if command.length < CommandUploader::CHUNK_LIMIT
|
104
|
+
def get_command(command, command_uploader, options = {})
|
105
|
+
if !options[:force_batch_file] && command.length < CommandUploader::CHUNK_LIMIT
|
100
106
|
command
|
101
107
|
else
|
102
108
|
log.debug "Detected a command that was longer than #{CommandUploader::CHUNK_LIMIT} characters. " +
|
@@ -159,7 +165,10 @@ module Ridley
|
|
159
165
|
run(host, command, options)
|
160
166
|
end
|
161
167
|
|
162
|
-
# Execute line(s) of Ruby code on a node using Chef's embedded
|
168
|
+
# Execute line(s) of Ruby code on a node using Chef's embedded
|
169
|
+
# Ruby. This will always run via a batch file due to WinRM
|
170
|
+
# having difficulty handling long ruby scripts being passed via
|
171
|
+
# ruby -e.
|
163
172
|
#
|
164
173
|
# @param [String] host
|
165
174
|
# the host to perform the action on
|
@@ -174,7 +183,7 @@ module Ridley
|
|
174
183
|
# @return [HostConnector::Response]
|
175
184
|
def ruby_script(host, command_lines, options = {})
|
176
185
|
command = "#{EMBEDDED_RUBY_PATH} -e \"#{command_lines.join(';')}\""
|
177
|
-
run(host, command, options)
|
186
|
+
run(host, command, options.merge(force_batch_file: true))
|
178
187
|
end
|
179
188
|
|
180
189
|
# Uninstall Chef from a node
|
@@ -2,9 +2,9 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Ridley::HostCommander do
|
4
4
|
subject { described_class.new }
|
5
|
+
let(:host) { "fake.riotgames.com" }
|
5
6
|
|
6
7
|
describe "#run" do
|
7
|
-
let(:host) { "fake.riotgames.com" }
|
8
8
|
let(:command) { "ls" }
|
9
9
|
let(:options) do
|
10
10
|
{ ssh: { port: 22 }, winrm: { port: 5985 } }
|
@@ -18,7 +18,6 @@ describe Ridley::HostCommander do
|
|
18
18
|
|
19
19
|
it "sends a #run message to the ssh host connector" do
|
20
20
|
subject.send(:ssh).should_receive(:run).with(host, command, options)
|
21
|
-
|
22
21
|
subject.run(host, command, options)
|
23
22
|
end
|
24
23
|
end
|
@@ -38,7 +37,6 @@ describe Ridley::HostCommander do
|
|
38
37
|
end
|
39
38
|
|
40
39
|
describe "#bootstrap" do
|
41
|
-
let(:host) { "fake.riotgames.com" }
|
42
40
|
let(:options) do
|
43
41
|
{ ssh: { port: 22 }, winrm: { port: 5985 } }
|
44
42
|
end
|
@@ -71,7 +69,6 @@ describe Ridley::HostCommander do
|
|
71
69
|
end
|
72
70
|
|
73
71
|
describe "#chef_client" do
|
74
|
-
let(:host) { "fake.riotgames.com" }
|
75
72
|
let(:options) do
|
76
73
|
{ ssh: { port: 22 }, winrm: { port: 5985 } }
|
77
74
|
end
|
@@ -104,7 +101,6 @@ describe Ridley::HostCommander do
|
|
104
101
|
end
|
105
102
|
|
106
103
|
describe "#put_secret" do
|
107
|
-
let(:host) { "fake.riotgames.com" }
|
108
104
|
let(:secret) { "something_secret" }
|
109
105
|
let(:options) do
|
110
106
|
{ ssh: { port: 22 }, winrm: { port: 5985 } }
|
@@ -138,7 +134,6 @@ describe Ridley::HostCommander do
|
|
138
134
|
end
|
139
135
|
|
140
136
|
describe "#ruby_script" do
|
141
|
-
let(:host) { "fake.riotgames.com" }
|
142
137
|
let(:command_lines) { ["line one"] }
|
143
138
|
let(:options) do
|
144
139
|
{ ssh: { port: 22 }, winrm: { port: 5985 } }
|
@@ -170,4 +165,25 @@ describe Ridley::HostCommander do
|
|
170
165
|
end
|
171
166
|
end
|
172
167
|
end
|
168
|
+
|
169
|
+
describe "#connector_for" do
|
170
|
+
it "should return winrm if winrm is open" do
|
171
|
+
subject.stub(:connector_port_open?).with(host, Ridley::HostConnector::WinRM::DEFAULT_PORT).and_return(true)
|
172
|
+
subject.should_receive(:winrm)
|
173
|
+
subject.connector_for(host)
|
174
|
+
end
|
175
|
+
|
176
|
+
it "should return winrm if winrm is open" do
|
177
|
+
subject.stub(:connector_port_open?).with(host, Ridley::HostConnector::WinRM::DEFAULT_PORT).and_return(false)
|
178
|
+
subject.stub(:connector_port_open?).with(host, Ridley::HostConnector::SSH::DEFAULT_PORT, nil).and_return(true)
|
179
|
+
subject.should_receive(:ssh)
|
180
|
+
subject.connector_for(host)
|
181
|
+
end
|
182
|
+
|
183
|
+
it "should still set the default ports if an explicit nil is passed in" do
|
184
|
+
subject.stub(:connector_port_open?).with(host, Ridley::HostConnector::WinRM::DEFAULT_PORT).and_return(true)
|
185
|
+
subject.should_receive(:winrm)
|
186
|
+
subject.connector_for(host, winrm: nil, ssh: nil)
|
187
|
+
end
|
188
|
+
end
|
173
189
|
end
|
@@ -99,6 +99,16 @@ describe Ridley::HostConnector::WinRM do
|
|
99
99
|
expect(result.stderr).to eql("WinRM::WinRMHTTPTransportError")
|
100
100
|
end
|
101
101
|
end
|
102
|
+
|
103
|
+
context "when the force_batch_file is true" do
|
104
|
+
let(:options_with_force_batch_file) { options.merge(force_batch_file: true) }
|
105
|
+
subject(:result) { connector.run(host, command, options_with_force_batch_file) }
|
106
|
+
it "should always use a command uploader when a force_batch_file is set to true" do
|
107
|
+
command_uploader_stub.should_receive(:upload).with(command)
|
108
|
+
command_uploader_stub.should_receive(:command).and_return(command)
|
109
|
+
result
|
110
|
+
end
|
111
|
+
end
|
102
112
|
end
|
103
113
|
|
104
114
|
describe "#bootstrap" do
|
@@ -156,7 +166,7 @@ describe Ridley::HostConnector::WinRM do
|
|
156
166
|
it "receives a ruby call with the command" do
|
157
167
|
connector.should_receive(:run).with(host,
|
158
168
|
"#{described_class::EMBEDDED_RUBY_PATH} -e \"puts 'hello';puts 'there'\"",
|
159
|
-
options
|
169
|
+
options.merge(force_batch_file: true)
|
160
170
|
)
|
161
171
|
|
162
172
|
ruby_script
|
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: 1.2.
|
4
|
+
version: 1.2.1
|
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: 2014-
|
12
|
+
date: 2014-02-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: celluloid
|