remotus 0.6.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ca295a9d011d1c64d48612e24df9e8ecb1b377ffde82010532c4bfa893d9f4ed
4
- data.tar.gz: 808051a8602029e898047a51e4e689e28d3ce50c629a20dc08de3a1349f89b49
3
+ metadata.gz: e6b07dbe42ab741bdb688bed9f6ce1d09ed2af8643291c57ec9aeedaaad0a19a
4
+ data.tar.gz: a39ecf434564157c1e72d98cf840abadc1a406f91988ee7c47cf7c22d9643760
5
5
  SHA512:
6
- metadata.gz: 0e5268b157fc283afb2bc830838da9bba8b04f6055396123422d8bed43b97797f02cee6974f01b6d6db4658b00c99e77cc13474cc60ba8fdd9fa72dfa87e4f18
7
- data.tar.gz: 5681064618614505ce74388725a03f8ab2f3e442d5feaa8ee1be4539ed9e9170f9f8e374fe6f9ce8f2ebeaeafc72624814f51f0280799b2820b1334aa955da62
6
+ metadata.gz: f48c3e374b870a60664cf35838204755a83599a534113309abfecb40e5a5862f10091bd7bc19d8353a8a5716c71fe02dea043f891db998dd521451a998be4419
7
+ data.tar.gz: 0c3d1f3e5dfbae5c2aeaec9d18f3eb4f4b99759b4c883e3298691e7cad7a91fa71d03f595cffb9bab07f9191844284a211c5fb76ff7900af56791ea6ed9a6f2a
data/.gitignore CHANGED
@@ -9,3 +9,5 @@
9
9
 
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
+
13
+ .vscode
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.5
2
+ TargetRubyVersion: 2.6
3
3
  NewCops: enable
4
4
 
5
5
  Style/StringLiterals:
@@ -14,7 +14,7 @@ Layout/LineLength:
14
14
  Max: 150
15
15
 
16
16
  Metrics/ClassLength:
17
- Max: 250
17
+ Max: 300
18
18
 
19
19
  Metrics/BlockLength:
20
20
  Exclude:
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## [1.1.0] - 2023-05-25
2
+ * Improve exponential backoff during SSH retries.
3
+ * Force connection close on IOError (closed stream).
4
+
5
+ ## [1.0.0] - 2023-04-25
6
+ * Update SSH dependencies to handle `pkeys are immutable on OpenSSL 3.0` errors on newer Ruby versions
7
+ * Remove Ruby 2.5 support
8
+
1
9
  ## [0.6.0] - 2022-09-26
2
10
  * Add `#close` method to all connection types
3
11
  * Fix SSH gateway connection caching
data/Gemfile.lock CHANGED
@@ -1,10 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- remotus (0.6.0)
5
- connection_pool (~> 2.2)
6
- net-scp (~> 3.0)
7
- net-ssh (~> 6.1)
4
+ remotus (1.1.0)
5
+ connection_pool (~> 2.4)
6
+ net-scp (~> 4.0)
7
+ net-ssh (~> 7.1)
8
8
  net-ssh-gateway (~> 2.0)
9
9
  winrm (~> 2.3)
10
10
  winrm-elevated (~> 1.2)
@@ -15,9 +15,9 @@ GEM
15
15
  specs:
16
16
  ast (2.4.2)
17
17
  builder (3.2.4)
18
- connection_pool (2.3.0)
18
+ connection_pool (2.4.0)
19
19
  diff-lcs (1.5.0)
20
- erubi (1.11.0)
20
+ erubi (1.12.0)
21
21
  ffi (1.15.5)
22
22
  gssapi (1.3.1)
23
23
  ffi (>= 1.0.1)
@@ -25,59 +25,61 @@ GEM
25
25
  builder (>= 2.1.2)
26
26
  rexml (~> 3.0)
27
27
  httpclient (2.8.3)
28
- json (2.6.2)
28
+ json (2.6.3)
29
29
  little-plugger (1.1.4)
30
30
  logging (2.3.1)
31
31
  little-plugger (~> 1.1)
32
32
  multi_json (~> 1.14)
33
33
  multi_json (1.15.0)
34
- net-scp (3.0.0)
35
- net-ssh (>= 2.6.5, < 7.0.0)
36
- net-ssh (6.1.0)
34
+ net-scp (4.0.0)
35
+ net-ssh (>= 2.6.5, < 8.0.0)
36
+ net-ssh (7.1.0)
37
37
  net-ssh-gateway (2.0.0)
38
38
  net-ssh (>= 4.0.0)
39
39
  nori (2.6.0)
40
- parallel (1.22.1)
41
- parser (3.1.2.1)
40
+ parallel (1.23.0)
41
+ parser (3.2.2.1)
42
42
  ast (~> 2.4.1)
43
43
  rainbow (3.1.1)
44
44
  rake (13.0.6)
45
- regexp_parser (2.5.0)
45
+ regexp_parser (2.8.0)
46
46
  rexml (3.2.5)
47
- rspec (3.11.0)
48
- rspec-core (~> 3.11.0)
49
- rspec-expectations (~> 3.11.0)
50
- rspec-mocks (~> 3.11.0)
51
- rspec-core (3.11.0)
52
- rspec-support (~> 3.11.0)
53
- rspec-expectations (3.11.1)
47
+ rspec (3.12.0)
48
+ rspec-core (~> 3.12.0)
49
+ rspec-expectations (~> 3.12.0)
50
+ rspec-mocks (~> 3.12.0)
51
+ rspec-core (3.12.2)
52
+ rspec-support (~> 3.12.0)
53
+ rspec-expectations (3.12.3)
54
54
  diff-lcs (>= 1.2.0, < 2.0)
55
- rspec-support (~> 3.11.0)
56
- rspec-mocks (3.11.1)
55
+ rspec-support (~> 3.12.0)
56
+ rspec-mocks (3.12.5)
57
57
  diff-lcs (>= 1.2.0, < 2.0)
58
- rspec-support (~> 3.11.0)
59
- rspec-support (3.11.1)
60
- rubocop (1.36.0)
58
+ rspec-support (~> 3.12.0)
59
+ rspec-support (3.12.0)
60
+ rubocop (1.50.2)
61
61
  json (~> 2.3)
62
62
  parallel (~> 1.10)
63
- parser (>= 3.1.2.1)
63
+ parser (>= 3.2.0.0)
64
64
  rainbow (>= 2.2.2, < 4.0)
65
65
  regexp_parser (>= 1.8, < 3.0)
66
66
  rexml (>= 3.2.5, < 4.0)
67
- rubocop-ast (>= 1.20.1, < 2.0)
67
+ rubocop-ast (>= 1.28.0, < 2.0)
68
68
  ruby-progressbar (~> 1.7)
69
- unicode-display_width (>= 1.4.0, < 3.0)
70
- rubocop-ast (1.21.0)
71
- parser (>= 3.1.1.0)
69
+ unicode-display_width (>= 2.4.0, < 3.0)
70
+ rubocop-ast (1.28.0)
71
+ parser (>= 3.2.1.0)
72
+ rubocop-capybara (2.18.0)
73
+ rubocop (~> 1.41)
72
74
  rubocop-rake (0.6.0)
73
75
  rubocop (~> 1.0)
74
- rubocop-rspec (2.13.1)
76
+ rubocop-rspec (2.20.0)
75
77
  rubocop (~> 1.33)
76
- ruby-progressbar (1.11.0)
78
+ rubocop-capybara (~> 2.17)
79
+ ruby-progressbar (1.13.0)
77
80
  rubyntlm (0.6.3)
78
81
  rubyzip (2.3.2)
79
- unicode-display_width (2.3.0)
80
- webrick (1.7.0)
82
+ unicode-display_width (2.4.2)
81
83
  winrm (2.3.6)
82
84
  builder (>= 2.1.2)
83
85
  erubi (~> 1.8)
@@ -96,8 +98,7 @@ GEM
96
98
  logging (>= 1.6.1, < 3.0)
97
99
  rubyzip (~> 2.0)
98
100
  winrm (~> 2.0)
99
- yard (0.9.28)
100
- webrick (~> 1.7.0)
101
+ yard (0.9.34)
101
102
 
102
103
  PLATFORMS
103
104
  ruby
@@ -23,8 +23,8 @@ RSpec.describe "Remotus::SshConnection Integration Tests" do
23
23
  `docker-compose -f "docker-compose.yml" down -v`
24
24
  end
25
25
 
26
- let(:test_script) { ::File.join(__dir__, "ssh_integration_script.sh") }
27
- let(:test_script_dest) { ::File.join("/home/testuser", ::File.basename(test_script)) }
26
+ let(:test_script) { File.join(__dir__, "ssh_integration_script.sh") }
27
+ let(:test_script_dest) { File.join("/home/testuser", File.basename(test_script)) }
28
28
 
29
29
  context "when a gateway and inaccessible target host exist" do
30
30
  let(:gateway_hostname) { `docker ps | grep remotus_gateway`.split.first }
@@ -20,7 +20,7 @@ module Remotus
20
20
  KEEPALIVE_INTERVAL = 300
21
21
 
22
22
  # Number of default retries
23
- DEFAULT_RETRIES = 2
23
+ DEFAULT_RETRIES = 8
24
24
 
25
25
  # Base options for new SSH connections
26
26
  BASE_CONNECT_OPTIONS = { non_interactive: true, keepalive: true, keepalive_interval: KEEPALIVE_INTERVAL }.freeze
@@ -424,6 +424,8 @@ module Remotus
424
424
  # @param [Integer] retries number of retries
425
425
  #
426
426
  def with_retries(command, retries)
427
+ sleep_time = 1
428
+
427
429
  yield if block_given?
428
430
  rescue Remotus::AuthenticationError, Net::SSH::AuthenticationFailed => e
429
431
  # Re-raise exception if the retry count is exceeded
@@ -446,6 +448,12 @@ module Remotus
446
448
  retries -= 1
447
449
  raise if e.to_s != "closed stream" || retries.negative?
448
450
 
451
+ # Close the existing connection before retrying again
452
+ close
453
+
454
+ Remotus.logger.debug { "Sleeping for #{sleep_time} seconds before next retry..." }
455
+ sleep sleep_time
456
+ sleep_time *= 2 # Double delay for each retry
449
457
  retry
450
458
  end
451
459
 
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Remotus
4
4
  # Remotus gem version
5
- VERSION = "0.6.0"
5
+ VERSION = "1.1.0"
6
6
  end
data/remotus.gemspec CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.description = "Ruby gem for connecting to remote systems seamlessly via WinRM or SSH."
13
13
  spec.homepage = "https://github.com/wheatevo/remotus"
14
14
  spec.license = "MIT"
15
- spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
15
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.6.0")
16
16
 
17
17
  spec.metadata["homepage_uri"] = spec.homepage
18
18
  spec.metadata["source_code_uri"] = "https://github.com/wheatevo/remotus"
@@ -29,9 +29,9 @@ Gem::Specification.new do |spec|
29
29
  spec.require_paths = ["lib"]
30
30
 
31
31
  # Dependencies
32
- spec.add_dependency "connection_pool", "~> 2.2"
33
- spec.add_dependency "net-scp", "~> 3.0"
34
- spec.add_dependency "net-ssh", "~> 6.1"
32
+ spec.add_dependency "connection_pool", "~> 2.4"
33
+ spec.add_dependency "net-scp", "~> 4.0"
34
+ spec.add_dependency "net-ssh", "~> 7.1"
35
35
  spec.add_dependency "net-ssh-gateway", "~> 2.0"
36
36
  spec.add_dependency "winrm", "~> 2.3"
37
37
  spec.add_dependency "winrm-elevated", "~> 1.2"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: remotus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Newell
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-26 00:00:00.000000000 Z
11
+ date: 2023-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: connection_pool
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.2'
19
+ version: '2.4'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.2'
26
+ version: '2.4'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: net-scp
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.0'
33
+ version: '4.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '3.0'
40
+ version: '4.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: net-ssh
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '6.1'
47
+ version: '7.1'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '6.1'
54
+ version: '7.1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: net-ssh-gateway
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -248,7 +248,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
248
248
  requirements:
249
249
  - - ">="
250
250
  - !ruby/object:Gem::Version
251
- version: 2.5.0
251
+ version: 2.6.0
252
252
  required_rubygems_version: !ruby/object:Gem::Requirement
253
253
  requirements:
254
254
  - - ">="