xlogin 0.9.2 → 0.9.5

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
  SHA1:
3
- metadata.gz: 7920c6bfed2e33fd3aa7e60128ae9b01b2464dec
4
- data.tar.gz: 6304076fbb457c60020f8fd8875ea147bd162d85
3
+ metadata.gz: dc4d67ac6c0e9c9200dedef6fe1713a7e481f336
4
+ data.tar.gz: 64126ee1abd9cbd9ecf1704038d421bd34556a55
5
5
  SHA512:
6
- metadata.gz: e9a8f8cbf8ae3eed54beeca00efbbdaf080f98fea77f7c1064d1b904c6d9f2b58fa34e287b406d20327690cb2d01ba4d493f7b1d9da531cb3b7cd9628a3b8535
7
- data.tar.gz: 03ee0f923e53ddc0f10fc7b37ddd7b20f279da1fe2bbb3db202aeffef6ba3c6b49d93f27c51aab095a2b24f0c7367ecc4d06f16e6df4f74134da7b81011ab9d3
6
+ metadata.gz: a9932d0cb772b18af766cc9beffaee17495dd2d80fd28cfa7fd4e8569dc13146ad0a6f3d29f68972a6763962583b467a35b76001972151a6ffb5f35185dac516
7
+ data.tar.gz: bd13b83f29bea5522ae2aeb911010a616c5843fef8c41590fe5b0625dbfe137452b1230fe60d423f01f3748d0fcf4de1bdef1bca9532d825614ba56aaa9b1e1e
@@ -8,8 +8,9 @@ module Xlogin
8
8
  include Singleton
9
9
 
10
10
  def initialize
11
- @inventory = Hash.new
12
- @templates = Hash.new
11
+ @inventory = Hash.new
12
+ @templates = Hash.new
13
+ @session_pool = Hash.new
13
14
  end
14
15
 
15
16
  def set_inventory(**opts)
@@ -49,16 +50,17 @@ module Xlogin
49
50
 
50
51
  def build(type:, **opts)
51
52
  template = get_template(type)
52
- if opts[:uri]
53
- template.build(opts[:uri], **opts)
54
- else
55
- scheme = opts[:scheme]
56
- address = opts.values_at(:host, :port).compact.join(':')
57
- userinfo = opts[:userinfo]
58
- userinfo ||= opts.values_at(:username, :password).compact.join(':')
59
-
60
- template.build("#{scheme}://" + [userinfo, address].compact.join('@'), **opts)
61
- end
53
+ template.build(uri(opts), **opts)
54
+ end
55
+
56
+ def build_pool(args, **opts)
57
+ uri = case args
58
+ when Hash then uri(args)
59
+ when String then uri(get_inventory(args))
60
+ else return
61
+ end
62
+
63
+ @session_pool[uri] ||= Xlogin::SessionPool.new(args, **opts)
62
64
  end
63
65
 
64
66
  def build_from_hostname(args, **opts)
@@ -68,8 +70,16 @@ module Xlogin
68
70
  build(hostinfo.merge(name: args, **opts))
69
71
  end
70
72
 
71
- def build_pool(args, **opts)
72
- Xlogin::SessionPool.new(args, **opts)
73
+ private
74
+ def uri(**opts)
75
+ return opts[:uri] if opts.key?(:uri)
76
+
77
+ scheme = opts[:scheme]
78
+ address = opts.values_at(:host, :port).compact.join(':')
79
+ userinfo = opts[:userinfo]
80
+ userinfo ||= opts.values_at(:username, :password).compact.join(':')
81
+
82
+ "#{scheme}://" + [userinfo, address].compact.join('@')
73
83
  end
74
84
 
75
85
  end
@@ -55,7 +55,7 @@ module Xlogin
55
55
  end
56
56
 
57
57
  def prompt
58
- cmd('').lines.last.chomp
58
+ cmd('').to_s.lines.last&.chomp
59
59
  end
60
60
 
61
61
  def duplicate
@@ -112,8 +112,7 @@ module Xlogin
112
112
  instance_eval(&process)
113
113
  line += _waitfor(*args, &block)
114
114
  end
115
- rescue EOFError
116
- ensure
115
+
117
116
  return line
118
117
  end
119
118
 
@@ -25,7 +25,7 @@ module Xlogin
25
25
 
26
26
  begin
27
27
  session.prompt
28
- rescue Errno::ECONNABORTED, Errno::ECONNREFUSED, Errno::ECONNRESET
28
+ rescue IOError, EOFError, Errno::ECONNABORTED, Errno::ECONNREFUSED, Errno::ECONNRESET
29
29
  session.close rescue nil
30
30
  @created -= 1
31
31
  session = try_create
@@ -1,3 +1,3 @@
1
1
  module Xlogin
2
- VERSION = "0.9.2"
2
+ VERSION = "0.9.5"
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.9.2
4
+ version: 0.9.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - haccht
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-27 00:00:00.000000000 Z
11
+ date: 2018-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-telnet