jackal-cfn 0.2.18 → 0.2.20
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/README.md +10 -7
- data/lib/jackal-cfn/resource/orchestration_unit.rb +20 -5
- data/lib/jackal-cfn/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bda5713d227f3483f95292f4c1d5637d2108e487
|
4
|
+
data.tar.gz: 64a6507a873182488b9a749b31158cb893441fd1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 66d968cd6e691ec841d2cbdd45bbfc9631db91250ef1b26e93d6f280f58b01c63adbdbd3899762b8b3e11a8998c2b9aab0b2bfd2cf489b103be5194ebb2c4165
|
7
|
+
data.tar.gz: f3695b27166715d0cb32da79f4c13e1ae1b5ee7c474c211c123bb791aed6d1f39625fb45f1187fbd9c1906ac6b9062937575f5b5aec157e4dad07a602cfaf9ba
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -336,28 +336,31 @@ Resource Usage:
|
|
336
336
|
"Env": {
|
337
337
|
"CUSTOM_ENV_VARS": "FOR_COMMAND"
|
338
338
|
},
|
339
|
+
"RawResult": true,
|
339
340
|
"OnCreate": {
|
340
341
|
"Exec": "STRING_COMMAND",
|
341
342
|
"ExecZip": "REMOTE_URL_TO_ZIP",
|
342
343
|
"Env": {
|
343
344
|
"CUSTOM_ENV_VARS": "FOR_COMMAND"
|
344
|
-
}
|
345
|
+
},
|
346
|
+
"RawResult": true
|
345
347
|
},
|
346
348
|
"OnUpdate": {
|
347
349
|
"Exec": "STRING_COMMAND",
|
348
350
|
"ExecZip": "REMOTE_URL_TO_ZIP",
|
349
351
|
"Env": {
|
350
352
|
"CUSTOM_ENV_VARS": "FOR_COMMAND"
|
351
|
-
}
|
353
|
+
},
|
354
|
+
"RawResult": true
|
352
355
|
},
|
353
356
|
"OnDelete": {
|
354
357
|
"Exec": "STRING_COMMAND",
|
355
358
|
"ExecZip": "REMOTE_URL_TO_ZIP",
|
356
359
|
"Env": {
|
357
360
|
"CUSTOM_ENV_VARS": "FOR_COMMAND"
|
358
|
-
}
|
359
|
-
|
360
|
-
|
361
|
+
},
|
362
|
+
"RawResult": true
|
363
|
+
}
|
361
364
|
}
|
362
365
|
}
|
363
366
|
```
|
@@ -374,7 +377,7 @@ If command result is a non-JSON value:
|
|
374
377
|
|
375
378
|
```json
|
376
379
|
{
|
377
|
-
"
|
380
|
+
"OrchestrationUnitResult": "RESULT_OF_COMMAND"
|
378
381
|
}
|
379
382
|
```
|
380
383
|
|
@@ -383,7 +386,7 @@ If the result of the command is a JSON value (for example `{"MyKey": "MyValue"}`
|
|
383
386
|
```json
|
384
387
|
{
|
385
388
|
"MyKey": "MyValue",
|
386
|
-
"
|
389
|
+
"OrchestrationUnitResult": "{\"MyKey\": \"MyValue\"}"
|
387
390
|
}
|
388
391
|
```
|
389
392
|
|
@@ -12,31 +12,38 @@ module Jackal
|
|
12
12
|
# "OnCreate": {
|
13
13
|
# "Exec": "SHELL_COMMAND",
|
14
14
|
# "ExecZip": "DOWNLOAD_URI",
|
15
|
+
# "RawResult": true,
|
15
16
|
# "Env": {
|
16
17
|
# }
|
17
18
|
# },
|
18
19
|
# "OnUpdate": {
|
19
20
|
# "Exec": "SHELL_COMMAND",
|
20
21
|
# "ExecZip": "DOWNLOAD_URI",
|
22
|
+
# "RawResult": true,
|
21
23
|
# "Env": {
|
22
24
|
# }
|
23
25
|
# },
|
24
26
|
# "OnDelete": {
|
25
27
|
# "Exec": "SHELL_COMMAND",
|
26
28
|
# "ExecZip": "DOWNLOAD_URI",
|
29
|
+
# "RawResult": true,
|
27
30
|
# "Env": {
|
28
31
|
# }
|
29
32
|
# },
|
30
33
|
# "Exec": "SHELL_COMMAND",
|
31
34
|
# "ExecZip": "DOWNLOAD_URI",
|
32
35
|
# "Env": {
|
33
|
-
# }
|
36
|
+
# },
|
37
|
+
# "RawResult": true
|
34
38
|
# }
|
35
39
|
# }
|
36
40
|
# }
|
37
41
|
#
|
38
42
|
class OrchestrationUnit < Jackal::Cfn::Resource
|
39
43
|
|
44
|
+
# Max result size
|
45
|
+
MAX_RESULT_SIZE = 4096
|
46
|
+
|
40
47
|
# Execute orchestration unit
|
41
48
|
#
|
42
49
|
# @param message [Carnivore::Message]
|
@@ -124,11 +131,13 @@ module Jackal
|
|
124
131
|
result[:stop_time] = Time.now.to_i
|
125
132
|
result[:exit_code] = process.exit_code
|
126
133
|
stdout.rewind
|
127
|
-
|
128
|
-
|
134
|
+
if(stdout.size > MAX_RESULT_SIZE)
|
135
|
+
warn "Command result greater than allowed size: #{stdout.size} > #{MAX_RESULT_SIZE}"
|
136
|
+
end
|
137
|
+
result[:content] = stdout.readpartial(0, MAX_RESULT_SIZE)
|
129
138
|
if(process.exit_code != 0)
|
130
139
|
stderr.rewind
|
131
|
-
result[:error_message] = stderr.
|
140
|
+
result[:error_message] = stderr.readpartial(0, MAX_RESULT_SIZE)
|
132
141
|
end
|
133
142
|
end
|
134
143
|
if(result[:exit_code] == 0)
|
@@ -136,6 +145,9 @@ module Jackal
|
|
136
145
|
begin
|
137
146
|
j_result = MultiJson.load(result[:content])
|
138
147
|
response['Data'] = j_result.merge(response['Data'])
|
148
|
+
unless(unit[:raw_result])
|
149
|
+
response['Data'].delete('OrchestrationUnitResult')
|
150
|
+
end
|
139
151
|
rescue MultiJson::ParseError => e
|
140
152
|
debug 'Command result not JSON data'
|
141
153
|
end
|
@@ -158,7 +170,7 @@ module Jackal
|
|
158
170
|
base_key = "on_#{request_type.to_s.downcase}"
|
159
171
|
result = Smash.new
|
160
172
|
if(direct_unit = parameters[base_key])
|
161
|
-
[:exec, :exec_zip, :env].each do |p_key|
|
173
|
+
[:exec, :exec_zip, :env, :raw_result].each do |p_key|
|
162
174
|
if(direct_unit[p_key])
|
163
175
|
result[p_key] = direct[p_key]
|
164
176
|
end
|
@@ -178,6 +190,9 @@ module Jackal
|
|
178
190
|
result[:env] = parameters[:env]
|
179
191
|
end
|
180
192
|
end
|
193
|
+
unless(result.key?('raw_result'))
|
194
|
+
result[:raw_result] = parameters.fetch('raw_result', true)
|
195
|
+
end
|
181
196
|
result[:env] ||= Smash.new
|
182
197
|
result[:env]['CFN_REQUEST_TYPE'] = request_type.to_s.upcase
|
183
198
|
result
|
data/lib/jackal-cfn/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jackal-cfn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.20
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Roberts
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jackal
|