smart_proxy_remote_execution_ssh 0.0.4 → 0.0.5
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,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZmFjY2VkY2YyMTZhNmM4MTQ1ZGI5NTA3ZTRjMDIzYTZiNzFmNzU5Mg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MWRkNzJjZDdjNWMyNTI4NTA2NDI0NDAyZWI4ZmY5MjVkM2E5Njk5Yw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
Y2IwYTA4OTgwYTcxMjEzODg4NDRjYWQwODE0NWEwM2QxN2ZlZDlkYmI0MDEz
|
10
|
+
OGZkOGM0Y2M2NjZlNjg1ODJkNmFmYmJmMjU2MWE4NjllOWNkZDVkY2U3YWZi
|
11
|
+
NWZkNTBlM2I5ZDgwNDU5YWU2YTVkMGQ0MTM0YzJlYzA5MjE2MWE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
M2IzMGY4ZDI2NjA5ZGEyMTk3YWM5NGEyODNkMjFlYjk2ZWUwOTkwMzAyNTc5
|
14
|
+
YTJlODIyMmM4N2JhODIwY2M5NzE4YzA5NWI2ZWEwZjFlNDAwYTY3NzRkNDli
|
15
|
+
MGU0OTBhMzQ0ZDU4ZDA1MzcwYmI3Y2IxZjA2YzBkN2JlMDNiNTM=
|
@@ -17,13 +17,7 @@ module Proxy::RemoteExecution::Ssh
|
|
17
17
|
when nil
|
18
18
|
init_run
|
19
19
|
when CommandUpdate
|
20
|
-
|
21
|
-
output[:result].concat(update.buffer_to_hash)
|
22
|
-
if update.exit_status
|
23
|
-
finish_run(update)
|
24
|
-
else
|
25
|
-
suspend
|
26
|
-
end
|
20
|
+
process_update(event)
|
27
21
|
when Dynflow::Action::Cancellable::Cancel
|
28
22
|
kill_run
|
29
23
|
when Dynflow::Action::Skip
|
@@ -32,9 +26,8 @@ module Proxy::RemoteExecution::Ssh
|
|
32
26
|
raise "Unexpected event #{event.inspect}"
|
33
27
|
end
|
34
28
|
rescue => e
|
35
|
-
action_logger.error
|
36
|
-
|
37
|
-
output[:exit_status] = "PROXY_ERROR"
|
29
|
+
action_logger.error(e)
|
30
|
+
process_update(CommandUpdate.new(CommandUpdate.encode_exception("Proxy error", e)))
|
38
31
|
end
|
39
32
|
|
40
33
|
def finalize
|
@@ -72,6 +65,15 @@ module Proxy::RemoteExecution::Ssh
|
|
72
65
|
output[:exit_status] = update.exit_status
|
73
66
|
end
|
74
67
|
|
68
|
+
def process_update(update)
|
69
|
+
output[:result].concat(update.buffer_to_hash)
|
70
|
+
if update.exit_status
|
71
|
+
finish_run(update)
|
72
|
+
else
|
73
|
+
suspend
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
75
77
|
def failed_run?
|
76
78
|
output[:exit_status] != 0
|
77
79
|
end
|
@@ -22,9 +22,9 @@ module Proxy::RemoteExecution::Ssh
|
|
22
22
|
def async_run(command)
|
23
23
|
started = false
|
24
24
|
session.open_channel do |channel|
|
25
|
-
channel.on_data { |ch, data| yield CommandUpdate::StdoutData.new(data) }
|
25
|
+
channel.on_data { |ch, data| yield CommandUpdate::StdoutData.new(handle_encoding(data)) }
|
26
26
|
|
27
|
-
channel.on_extended_data { |ch, type, data| yield CommandUpdate::StderrData.new(data) }
|
27
|
+
channel.on_extended_data { |ch, type, data| yield CommandUpdate::StderrData.new(handle_encoding(data)) }
|
28
28
|
|
29
29
|
# standard exit of the command
|
30
30
|
channel.on_request("exit-status") { |ch, data| yield CommandUpdate::StatusData.new(data.read_long) }
|
@@ -120,6 +120,14 @@ module Proxy::RemoteExecution::Ssh
|
|
120
120
|
|
121
121
|
private
|
122
122
|
|
123
|
+
def handle_encoding(data)
|
124
|
+
if data.is_a? String
|
125
|
+
data.force_encoding('UTF-8')
|
126
|
+
else
|
127
|
+
data
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
123
131
|
def session
|
124
132
|
@session ||= begin
|
125
133
|
@logger.debug("opening session to #{@user}@#{@host}")
|
@@ -30,7 +30,14 @@ module Proxy::RemoteExecution::Ssh
|
|
30
30
|
end
|
31
31
|
output_path = File.join(File.dirname(remote_script), 'output')
|
32
32
|
|
33
|
-
|
33
|
+
# pipe the output to tee while capturing the exit code
|
34
|
+
script = <<-SCRIPT
|
35
|
+
exec 4>&1
|
36
|
+
exit_code=`((#{su_prefix}#{remote_script}; echo $?>&3 ) | /usr/bin/tee #{output_path} ) 3>&1 >&4`
|
37
|
+
exec 4>&-
|
38
|
+
exit $exit_code
|
39
|
+
SCRIPT
|
40
|
+
@connector.async_run(script) do |data|
|
34
41
|
@command_buffer << data
|
35
42
|
end
|
36
43
|
rescue => e
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smart_proxy_remote_execution_ssh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan Nečas
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|