xp5k 0.0.12 → 0.0.13

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: 17334721e7c45832785d2e615c822b081cb14d2b
4
- data.tar.gz: 2ab5ac52522dd716279c65cb27448e539d697e3f
3
+ metadata.gz: e63243781dcd538f44d467d8bd3c2b852392c6dd
4
+ data.tar.gz: c6533692344df8de75efaa9f8463f22c7df642b7
5
5
  SHA512:
6
- metadata.gz: a62ab77e00dd13ad9d733142ac930462281dadd7bf49f42132553e6f3079204fe90db14d3255a71e0ea0f826c0ff447942d5675013ae999b5af8c9053ee14673
7
- data.tar.gz: 6ebbffd6a1b21d621ae59f7219747fa46face90368b15189e7a03433bda024e0b2976aa77ecba5ab9a73c1acb1553bba8a1688567fcc37cf9607bec9975326bd
6
+ metadata.gz: 98a175bdcf30bfbd561b9457d10b74beb6be3cf427272f09e08436d4fd57b7fc67dc909a414c5b120add6d5bd2799e47a6fba512203d611f40d73a4696bf06c4
7
+ data.tar.gz: e5f4f5a6f520321f19c1bfcd7956a1bb94cea850a952aa74c5146ab3c3949a9bab6868c43181601552b57a6fadf87ead08c561d0cc246d1020558d13a5dffd2c
data/lib/xp5k/rake/dsl.rb CHANGED
@@ -48,8 +48,8 @@ module XP5K
48
48
  #
49
49
  def on(hosts, *args, &block)
50
50
 
51
- logs = Hash.new { |h,k| h[k] = '' }
52
- errors = Hash.new { |h,k| h[k] = '' }
51
+ logs = Hash.new { |h,k| h[k] = [] }
52
+ errors = Hash.new { |h,k| h[k] = [] }
53
53
  ssh_session = {}
54
54
  current_server = ""
55
55
  all_connected = false
@@ -66,6 +66,9 @@ module XP5K
66
66
  cmd_env = options[:environment].map do |key, value|
67
67
  "#{key}=#{value}"
68
68
  end
69
+
70
+ # net/ssh specific options
71
+ options[:ssh] ||= {}
69
72
 
70
73
  if block_given?
71
74
  case result = yield
@@ -81,9 +84,9 @@ module XP5K
81
84
  until all_connected
82
85
  failed = false
83
86
  gateway_options = {}
84
- gateway_options[:config] == XP5K::Config[:ssh_config] ? true : XP5K::Config[:ssh_config]
87
+ gateway_options[:config] = XP5K::Config[:ssh_config] || true
85
88
  gateway_user, gateway_host = XP5K::Config[:gateway].match(/^(?:([^;,:=]+)@|)(.*?)$/)[1,2]
86
- gateway = Net::SSH::Gateway.new(gateway_host, gateway_user)
89
+ gateway = Net::SSH::Gateway.new(gateway_host, gateway_user, gateway_options)
87
90
  workq = Queue.new
88
91
  hosts.each{ |host| workq << host }
89
92
  workers = (0...10).map do
@@ -92,7 +95,7 @@ module XP5K
92
95
  while host = workq.pop(true)
93
96
  begin
94
97
  timeout(5) do
95
- ssh_session[host] = gateway.ssh(host, options[:user])
98
+ ssh_session[host] = gateway.ssh(host, options[:user], options[:ssh])
96
99
  puts "Connected to #{host}..."
97
100
  end
98
101
  rescue Timeout::Error, Net::SSH::Disconnect, Exception => e
@@ -121,13 +124,15 @@ module XP5K
121
124
  while host = workq.pop(true)
122
125
  begin
123
126
  commands.each do |command|
127
+ stdout = ""
124
128
  command.prepend(cmd_env.join(' ') + ' ') unless cmd_env.empty?
125
129
  puts "[command][#{host}] #{command}"
126
130
  ssh_session[host].exec!(command) do |channel, stream, data|
127
- logs[host] << data
128
- errors[host] << data if stream == :err
131
+ stdout << data
132
+ errors[host] << data.chomp if stream == :err
129
133
  puts "[#{stream}][#{host}] #{data}" if data.chomp != ""
130
134
  end
135
+ logs[host] = stdout
131
136
  end
132
137
  rescue Exception => e
133
138
  puts "[#{host}] " + e.message
@@ -158,6 +163,9 @@ module XP5K
158
163
  end
159
164
  gateway.shutdown!
160
165
 
166
+ # returns the output
167
+ # as a map : node => [out1, ..., outn]
168
+ return logs
161
169
  end
162
170
 
163
171
  def run(command)
data/lib/xp5k/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module XP5K
2
- VERSION='0.0.12'
2
+ VERSION='0.0.13'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xp5k
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pascal Morillon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-07 00:00:00.000000000 Z
11
+ date: 2016-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client