koma 0.3.1 → 0.4.0

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
  SHA1:
3
- metadata.gz: fe87e3f628aaf7717c0ae51b76a7e56ec23d085f
4
- data.tar.gz: ddf155543824ca36b212cb5e462e433e85f01b68
3
+ metadata.gz: 3eee13c68f078a3f02b2d19e063eff87acd4e0fb
4
+ data.tar.gz: 3f0b322b862a2059da3ee03eb62fdbb8b555b47e
5
5
  SHA512:
6
- metadata.gz: b14e688817e30ab9598c476f386267e712ff19037b05eb04f3cab5752d9445e0bf4e65d31445713bd780f35785f46d9587adad9a6e32037886ea792a1964ac43
7
- data.tar.gz: 646816c3d97bfe9ec25f7baecd3cde9fdce11c86d8073e0f12ff4a66af0ea51f9fbcdced2acd3d810eb3f14b3e39483ced2f4b5d13d91835bbd4b8b444e3acfb
6
+ metadata.gz: 3349038bfe0a67bc48dc05eb1568efd4d5c1b6b8a84fa02eb27ffda0c723f78a395a9a2ae90064c1c52acb7d6bf966dae359c17ff1a3cc9c3cef10af9d5071cc
7
+ data.tar.gz: 5115f5fbd67158edb19ab6ea258fca8447ac14f32d1714b8a179c98512ed10f977dd50271b13e3dc69c94b3fd82b752396f1bf2855d265c20c785bbf1be1cb70
data/README.md CHANGED
@@ -32,6 +32,20 @@ $ koma ssh example.com
32
32
 
33
33
  And get stdout like [this](stdout_sample.json).
34
34
 
35
+ ### Multi host gathering
36
+
37
+ ```sh
38
+ $ koma ssh example.com,example.jp
39
+ {
40
+ "example.com" : {
41
+ ...
42
+ },
43
+ "example.jp" : {
44
+ ...
45
+ }
46
+ }
47
+ ```
48
+
35
49
  ## Host inventory keys
36
50
 
37
51
  ```sh
data/koma.gemspec CHANGED
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.add_runtime_dependency 'thor'
23
23
  spec.add_runtime_dependency 'highline'
24
24
  spec.add_runtime_dependency 'specinfra', '~> 2.48'
25
+ spec.add_runtime_dependency 'parallel'
25
26
  spec.add_development_dependency 'bundler', '~> 1.9'
26
27
  spec.add_development_dependency 'rake', '~> 10.0'
27
28
  spec.add_development_dependency 'rspec'
data/lib/koma/cli.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'thor'
2
2
  require 'json'
3
+ require 'parallel'
3
4
 
4
5
  include Specinfra::Helper::Set
5
6
 
@@ -22,16 +23,17 @@ module Koma
22
23
  desc: 'port',
23
24
  aliases: :p
24
25
  def ssh(host)
25
- user, host = host.split('@') if host.include?('@')
26
- set :backend, :ssh
27
- set :host, host
28
- set :request_pty, true
29
- ssh_options = Net::SSH::Config.for(host)
30
- ssh_options[:user] = user if user
31
- ssh_options[:keys] = [options[:identity_file]] if options[:identity_file]
32
- ssh_options[:port] = options[:port] if options[:port]
33
- set :ssh_options, ssh_options
34
- puts JSON.pretty_generate out(options[:key])
26
+ if host.include?(',')
27
+ list = host.split(',')
28
+ results = Parallel.map(list, in_thread: 4) do |h|
29
+ ssh_out(h, options)
30
+ end
31
+ arr = [list, results].transpose
32
+ puts JSON.pretty_generate(Hash[*arr.flatten])
33
+ else
34
+ result = ssh_out(host, options)
35
+ puts JSON.pretty_generate(result)
36
+ end
35
37
  end
36
38
 
37
39
  desc 'exec', 'stdout local host inventory'
@@ -42,7 +44,8 @@ module Koma
42
44
  aliases: :k
43
45
  def exec
44
46
  set :backend, :exec
45
- puts JSON.pretty_generate out(options[:key])
47
+ result = out(options[:key])
48
+ puts JSON.pretty_generate(result)
46
49
  end
47
50
 
48
51
  desc 'keys', 'host inventory keys'
@@ -58,6 +61,19 @@ module Koma
58
61
  Specinfra::HostInventory.inventory_keys
59
62
  end
60
63
 
64
+ def ssh_out(host, options)
65
+ user, host = host.split('@') if host.include?('@')
66
+ set :backend, :ssh
67
+ set :host, host
68
+ set :request_pty, true
69
+ ssh_options = Net::SSH::Config.for(host)
70
+ ssh_options[:user] = user if user
71
+ ssh_options[:keys] = [options[:identity_file]] if options[:identity_file]
72
+ ssh_options[:port] = options[:port] if options[:port]
73
+ set :ssh_options, ssh_options
74
+ out(options[:key])
75
+ end
76
+
61
77
  def out(key = nil)
62
78
  out = {}
63
79
  keys = if key.nil?
data/lib/koma/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Koma
2
- VERSION = '0.3.1'
2
+ VERSION = '0.4.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: koma
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - k1LoW
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '2.48'
55
+ - !ruby/object:Gem::Dependency
56
+ name: parallel
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: bundler
57
71
  requirement: !ruby/object:Gem::Requirement