centurion 1.10.1 → 1.10.2
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/.travis.yml +5 -2
- data/README.md +11 -0
- data/lib/centurion/deploy_dsl.rb +1 -0
- data/lib/centurion/docker_via_api.rb +2 -3
- data/lib/centurion/docker_via_cli.rb +1 -1
- data/lib/centurion/ssh.rb +2 -2
- data/lib/centurion/version.rb +1 -1
- data/spec/docker_via_api_spec.rb +15 -3
- data/spec/docker_via_cli_spec.rb +16 -4
- 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: fc7802eda143e2a4c3ea296957448e864b044dfd
|
4
|
+
data.tar.gz: 4aefded54c32d42cdb9d2e3a661e3aa087ee1bcc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e4dfe15cb4dda8e19c72a7870a4e6a987ca12ee4ac775b15443b97cc3ffbd3100bef6430b7a5be930e192dc4e818825e65fc22f76f1f2fb4df964e9c9b09ec10
|
7
|
+
data.tar.gz: 696f5cb9fb26a33a5bb4283ffd8c273c793bbb725bd1f2072ac3f662195af5401aaabe2e0a60eaf1f0c20942a4b90677b7b8b70f00fd865e6c2bc36ab76275f9
|
data/.travis.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
- 1.9.3
|
3
|
+
- 1.9.3-p551
|
4
4
|
- 2.0.0
|
5
5
|
- 2.1
|
6
6
|
- 2.2
|
@@ -9,4 +9,7 @@ rvm:
|
|
9
9
|
- 2.5
|
10
10
|
before_install:
|
11
11
|
- gem update
|
12
|
-
|
12
|
+
# downgrade bundler to fix installation error with ruby <= 2.2
|
13
|
+
# https://docs.travis-ci.com/user/languages/ruby/#bundler-20
|
14
|
+
- gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
|
15
|
+
- gem install bundler -v '< 2'
|
data/README.md
CHANGED
@@ -401,9 +401,20 @@ You can configure it with a few options:
|
|
401
401
|
set :ssh, true # enable ssh connections
|
402
402
|
set :ssh_user, "myuser" # if you want to specify the user to connect as, otherwise your current user
|
403
403
|
set :ssh_log_level, Logger::DEBUG # passed on to net/ssh, can be noisy; defaults to Logger::WARN
|
404
|
+
set :ssh_socket_heartbeat, 5 # passed on to net/ssh (Net::SSH::Connection::Session#loop); defaults to 30
|
404
405
|
end
|
405
406
|
```
|
406
407
|
|
408
|
+
#### Troubleshooting SSH connections
|
409
|
+
|
410
|
+
In some cases you may notice your SSH commands are completing successfully,
|
411
|
+
but the connection isn't aware they are done. This will manifest as a tunneled
|
412
|
+
command taking much longer than anticipated - minutes depending on your
|
413
|
+
server's configuration. You may need to set `:ssh_socket_heartbeat` to a
|
414
|
+
smaller number. This will check more frequently if the command has completed
|
415
|
+
which can alleviate this issue, though it will consume more CPU as it wakes up
|
416
|
+
its threads more frequently.
|
417
|
+
|
407
418
|
Deploying
|
408
419
|
---------
|
409
420
|
|
data/lib/centurion/deploy_dsl.rb
CHANGED
@@ -195,6 +195,7 @@ module Centurion::DeployDSL
|
|
195
195
|
# nil is OK for both of these, defaults applied internally
|
196
196
|
opts[:ssh_user] = fetch(:ssh_user)
|
197
197
|
opts[:ssh_log_level] = fetch(:ssh_log_level)
|
198
|
+
opts[:ssh_socket_heartbeat] = fetch(:ssh_socket_heartbeat)
|
198
199
|
end
|
199
200
|
|
200
201
|
opts
|
@@ -12,8 +12,7 @@ class Centurion::DockerViaApi
|
|
12
12
|
if connection_opts[:ssh]
|
13
13
|
@base_uri = hostname
|
14
14
|
@ssh = true
|
15
|
-
@
|
16
|
-
@ssh_log_level = connection_opts[:ssh_log_level]
|
15
|
+
@connection_opts = connection_opts
|
17
16
|
else
|
18
17
|
@base_uri = "http#{'s' if tls_enable?}://#{hostname}:#{port}"
|
19
18
|
end
|
@@ -194,7 +193,7 @@ class Centurion::DockerViaApi
|
|
194
193
|
end
|
195
194
|
|
196
195
|
def with_excon_via_ssh
|
197
|
-
Centurion::SSH.with_docker_socket(@base_uri, @ssh_user, @ssh_log_level) do |socket|
|
196
|
+
Centurion::SSH.with_docker_socket(@base_uri, @connection_opts[:ssh_user], @connection_opts[:ssh_log_level], @connection_opts[:ssh_socket_heartbeat]) do |socket|
|
198
197
|
conn = Excon.new('unix:///', socket: socket)
|
199
198
|
yield conn
|
200
199
|
end
|
@@ -97,7 +97,7 @@ class Centurion::DockerViaCli
|
|
97
97
|
|
98
98
|
def connect
|
99
99
|
if @connection_opts[:ssh]
|
100
|
-
Centurion::SSH.with_docker_socket(@docker_host, @connection_opts[:ssh_user], @connection_opts[:ssh_log_level]) do |socket|
|
100
|
+
Centurion::SSH.with_docker_socket(@docker_host, @connection_opts[:ssh_user], @connection_opts[:ssh_log_level], @connection_opts[:ssh_socket_heartbeat]) do |socket|
|
101
101
|
@socket = socket
|
102
102
|
ret = yield
|
103
103
|
@socket = nil
|
data/lib/centurion/ssh.rb
CHANGED
@@ -7,7 +7,7 @@ module Centurion; end
|
|
7
7
|
module Centurion::SSH
|
8
8
|
extend self
|
9
9
|
|
10
|
-
def with_docker_socket(hostname, user, log_level = nil)
|
10
|
+
def with_docker_socket(hostname, user, log_level = nil, ssh_socket_heartbeat = 30)
|
11
11
|
log_level ||= Logger::WARN
|
12
12
|
|
13
13
|
with_sshkit(hostname, user) do
|
@@ -24,7 +24,7 @@ module Centurion::SSH
|
|
24
24
|
yield local_socket_path
|
25
25
|
end
|
26
26
|
|
27
|
-
ssh.loop { t.alive? }
|
27
|
+
ssh.loop(ssh_socket_heartbeat) { t.alive? }
|
28
28
|
ssh.forward.cancel_local_socket local_socket_path
|
29
29
|
local_socket_path_file.delete
|
30
30
|
t.value
|
data/lib/centurion/version.rb
CHANGED
data/spec/docker_via_api_spec.rb
CHANGED
@@ -134,6 +134,7 @@ describe Centurion::DockerViaApi do
|
|
134
134
|
let(:port) { nil }
|
135
135
|
let(:ssh_user) { 'myuser' }
|
136
136
|
let(:ssh_log_level) { nil }
|
137
|
+
let(:ssh_socket_heartbeat) { nil }
|
137
138
|
let(:base_req) { {
|
138
139
|
socket: '/tmp/socket/path'
|
139
140
|
} }
|
@@ -142,12 +143,13 @@ describe Centurion::DockerViaApi do
|
|
142
143
|
p = { ssh: true}
|
143
144
|
p[:ssh_user] = ssh_user if ssh_user
|
144
145
|
p[:ssh_log_level] = ssh_log_level if ssh_log_level
|
146
|
+
p[:ssh_socket_heartbeat] = ssh_socket_heartbeat if ssh_socket_heartbeat
|
145
147
|
p
|
146
148
|
end
|
147
149
|
|
148
150
|
context 'with no log level' do
|
149
151
|
before do
|
150
|
-
expect(Centurion::SSH).to receive(:with_docker_socket).with(hostname, ssh_user, nil).and_yield('/tmp/socket/path')
|
152
|
+
expect(Centurion::SSH).to receive(:with_docker_socket).with(hostname, ssh_user, nil, nil).and_yield('/tmp/socket/path')
|
151
153
|
end
|
152
154
|
|
153
155
|
it_behaves_like 'docker API'
|
@@ -157,7 +159,7 @@ describe Centurion::DockerViaApi do
|
|
157
159
|
let(:ssh_user) { nil }
|
158
160
|
|
159
161
|
before do
|
160
|
-
expect(Centurion::SSH).to receive(:with_docker_socket).with(hostname, nil, nil).and_yield('/tmp/socket/path')
|
162
|
+
expect(Centurion::SSH).to receive(:with_docker_socket).with(hostname, nil, nil, nil).and_yield('/tmp/socket/path')
|
161
163
|
end
|
162
164
|
|
163
165
|
it_behaves_like 'docker API'
|
@@ -167,7 +169,17 @@ describe Centurion::DockerViaApi do
|
|
167
169
|
let(:ssh_log_level) { Logger::DEBUG }
|
168
170
|
|
169
171
|
before do
|
170
|
-
expect(Centurion::SSH).to receive(:with_docker_socket).with(hostname, ssh_user, Logger::DEBUG).and_yield('/tmp/socket/path')
|
172
|
+
expect(Centurion::SSH).to receive(:with_docker_socket).with(hostname, ssh_user, Logger::DEBUG, nil).and_yield('/tmp/socket/path')
|
173
|
+
end
|
174
|
+
|
175
|
+
it_behaves_like 'docker API'
|
176
|
+
end
|
177
|
+
|
178
|
+
context 'with a socket heartbeat set' do
|
179
|
+
let(:ssh_socket_heartbeat) { 5 }
|
180
|
+
|
181
|
+
before do
|
182
|
+
expect(Centurion::SSH).to receive(:with_docker_socket).with(hostname, ssh_user, nil, 5).and_yield('/tmp/socket/path')
|
171
183
|
end
|
172
184
|
|
173
185
|
it_behaves_like 'docker API'
|
data/spec/docker_via_cli_spec.rb
CHANGED
@@ -69,18 +69,20 @@ describe Centurion::DockerViaCli do
|
|
69
69
|
let(:hostname) { 'host1' }
|
70
70
|
let(:ssh_user) { 'myuser' }
|
71
71
|
let(:ssh_log_level) { nil }
|
72
|
+
let(:ssh_socket_heartbeat) { nil }
|
72
73
|
let(:docker_via_cli) { Centurion::DockerViaCli.new(hostname, nil, docker_path, params) }
|
73
74
|
let(:prefix) { "-H=unix:///tmp/socket/path" }
|
74
75
|
let(:params) do
|
75
|
-
p = { ssh: true}
|
76
|
+
p = { ssh: true }
|
76
77
|
p[:ssh_user] = ssh_user if ssh_user
|
77
78
|
p[:ssh_log_level] = ssh_log_level if ssh_log_level
|
79
|
+
p[:ssh_socket_heartbeat] = ssh_socket_heartbeat if ssh_socket_heartbeat
|
78
80
|
p
|
79
81
|
end
|
80
82
|
|
81
83
|
context 'with no log level' do
|
82
84
|
before do
|
83
|
-
expect(Centurion::SSH).to receive(:with_docker_socket).with(hostname, ssh_user, nil).and_yield('/tmp/socket/path')
|
85
|
+
expect(Centurion::SSH).to receive(:with_docker_socket).with(hostname, ssh_user, nil, nil).and_yield('/tmp/socket/path')
|
84
86
|
end
|
85
87
|
|
86
88
|
it_behaves_like 'docker CLI'
|
@@ -90,7 +92,7 @@ describe Centurion::DockerViaCli do
|
|
90
92
|
let(:ssh_user) { nil }
|
91
93
|
|
92
94
|
before do
|
93
|
-
expect(Centurion::SSH).to receive(:with_docker_socket).with(hostname, nil, nil).and_yield('/tmp/socket/path')
|
95
|
+
expect(Centurion::SSH).to receive(:with_docker_socket).with(hostname, nil, nil, nil).and_yield('/tmp/socket/path')
|
94
96
|
end
|
95
97
|
|
96
98
|
it_behaves_like 'docker CLI'
|
@@ -100,7 +102,17 @@ describe Centurion::DockerViaCli do
|
|
100
102
|
let(:ssh_log_level) { Logger::DEBUG }
|
101
103
|
|
102
104
|
before do
|
103
|
-
expect(Centurion::SSH).to receive(:with_docker_socket).with(hostname, ssh_user, Logger::DEBUG).and_yield('/tmp/socket/path')
|
105
|
+
expect(Centurion::SSH).to receive(:with_docker_socket).with(hostname, ssh_user, Logger::DEBUG, nil).and_yield('/tmp/socket/path')
|
106
|
+
end
|
107
|
+
|
108
|
+
it_behaves_like 'docker CLI'
|
109
|
+
end
|
110
|
+
|
111
|
+
context 'with an ssh loop wait set' do
|
112
|
+
let(:ssh_socket_heartbeat) { 5 }
|
113
|
+
|
114
|
+
before do
|
115
|
+
expect(Centurion::SSH).to receive(:with_docker_socket).with(hostname, ssh_user, nil, 5).and_yield('/tmp/socket/path')
|
104
116
|
end
|
105
117
|
|
106
118
|
it_behaves_like 'docker CLI'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: centurion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.10.
|
4
|
+
version: 1.10.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nic Benders
|
@@ -21,7 +21,7 @@ authors:
|
|
21
21
|
autorequire:
|
22
22
|
bindir: bin
|
23
23
|
cert_chain: []
|
24
|
-
date:
|
24
|
+
date: 2019-07-20 00:00:00.000000000 Z
|
25
25
|
dependencies:
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: trollop
|