xlogin 0.15.3 → 0.15.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9f70683b7d62c67930ee2b1d751e8b08de39e1ab9501c7c3941f65c58dcb4230
4
- data.tar.gz: 5e2aec6727af661463c755f4c730f74d1c35a6381e269a172090759372ede5db
3
+ metadata.gz: 1f333ffef6f055b9ffb8d986d1dd8137483d685d1c51680ed5ac280daad66ec2
4
+ data.tar.gz: 823ef09cd1c287fe17c15988357d14621e34d133674f96e1553791bc7c791dcd
5
5
  SHA512:
6
- metadata.gz: 8b405fd67ab614bfead70cd94be9de78119b53291f8e111809a749cfcc36061bbb85d7ee7bd4e4858d53fc51264d9399ecf145fde13939662deac5e51b4df54e
7
- data.tar.gz: b1750b6fa4ec8636535866e0de63c479890422e2b6026ed0724276c4fee3531c146286aafec6534fe07f371f95641efa3673f95e24ce87b059e4d3a840849009
6
+ metadata.gz: 294d3d7d4f46c29e76bac6157ddbc94c4787e12fe907134333b477579a480db3f6867d6f0689a3b48b4fd0c65bbcdcc080a10633c941bd4f02ca0d47dd19c2d9
7
+ data.tar.gz: d17d60532330cc5dd16644f459d8a19509fe95950c01970e92315cd25b8e09547c9a7a071d52661a557d3e70935a39f03ba85b1fa058448b8b640da743630138
@@ -26,9 +26,10 @@ module Xlogin
26
26
  end
27
27
 
28
28
  def list_hostinfo(*patterns)
29
+ patterns = patterns.flat_map{ |e| e.split(/\s+/) }.compact
29
30
  return @inventory.values if patterns.empty?
30
31
 
31
- values1 = patterns.compact.map do |pattern|
32
+ values1 = patterns.map do |pattern|
32
33
  values2 = pattern.split(',').map do |entry|
33
34
  key, val = entry.to_s.split(':')
34
35
  key, val = 'name', key if val.nil?
@@ -24,7 +24,7 @@ module Xlogin
24
24
  @loggers = [@config.log].flatten.uniq.reduce({}){ |a, e| a.merge(e => build_log(e)) }
25
25
  @host, @port = Xlogin.factory.open_tunnel(@tunnel, @host, @port) if @tunnel
26
26
 
27
- max_retry = @config.retry || 1
27
+ num_try = 0
28
28
  username, password = uri.userinfo.to_s.split(':')
29
29
 
30
30
  begin
@@ -43,7 +43,10 @@ module Xlogin
43
43
 
44
44
  super(args)
45
45
  rescue => e
46
- retry if (max_retry -= 1) > 0
46
+ unless (num_try += 1) > (@config.retry || 0)
47
+ sleep 2.0 ** (num_try)
48
+ retry
49
+ end
47
50
  raise e
48
51
  end
49
52
  end
@@ -25,7 +25,7 @@ module Xlogin
25
25
  session = deq
26
26
  Thread.handle_interrupt(Exception => :immediate){ yield session }
27
27
  ensure
28
- enq session
28
+ enq session if session
29
29
  end
30
30
 
31
31
  def close
@@ -38,14 +38,15 @@ module Xlogin
38
38
  def deq
39
39
  @mutex.synchronize do
40
40
  if @queue.empty? && @count < @size
41
+ session = Xlogin.get(@args, **@opts)
41
42
  @count += 1
42
- return Xlogin.get(@args, **@opts)
43
+ return session
43
44
  end
44
45
  end
45
46
 
46
- session, last_used, watch_dog = @queue.deq
47
+ session, last_used, watchdog = @queue.deq
47
48
 
48
- watch_dog.kill
49
+ watchdog.kill
49
50
  if Time.now - last_used > @idle
50
51
  destroy(session)
51
52
  return deq
@@ -62,8 +63,8 @@ module Xlogin
62
63
 
63
64
  def enq(session)
64
65
  last_used = Time.now
65
- watch_dog = Thread.new(session){ |s| sleep(@idle * 1.5) && s.close rescue nil }
66
- @queue.enq [session, last_used, watch_dog]
66
+ watchdog = Thread.new(session){ |s| sleep(@idle * 1.5) && s.close rescue nil }
67
+ @queue.enq [session, last_used, watchdog]
67
68
  end
68
69
 
69
70
  private
@@ -1,3 +1,3 @@
1
1
  module Xlogin
2
- VERSION = "0.15.3"
2
+ VERSION = "0.15.8"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xlogin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.3
4
+ version: 0.15.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - haccht
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-16 00:00:00.000000000 Z
11
+ date: 2021-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-telnet