patriot-workflow-scheduler 0.8.3 → 0.8.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/patriot/command/post_processor/http_notification.rb +66 -0
- data/lib/patriot/command/post_processor.rb +1 -0
- data/lib/patriot/version.rb +1 -1
- data/skel/public/js/patriot-workflow-scheduler-0.8.0.js +1207 -954
- metadata +3 -3
- data/skel/public/js/patriot-workflow-scheduler-0.8.3.js +0 -87780
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 171fc8719f6d43b4923df7c7f6441d9953aba4c9
|
4
|
+
data.tar.gz: 1c21f08807b6bf8b5ffee473184cbc972323d75e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6cf0a2084f683b914c01107e3884e61ad79ee0038f93dd5febe848e11a181d11692837e791ee5b441cd22fe98f4de6242db7379a29b753bca643f097e5221a1
|
7
|
+
data.tar.gz: f56e71de2572befe76194efe4a89e2f8874dcac4443ef12c5495ebbfef007a16df17710722e81b15bb2e688755b27f2a7709c3183c5143c56be92b79e5b73e1f
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'rest_client'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module Patriot
|
5
|
+
module Command
|
6
|
+
module PostProcessor
|
7
|
+
class HttpNotification < Patriot::Command::PostProcessor::Base
|
8
|
+
|
9
|
+
CALLBACK_URL = :callback_url
|
10
|
+
ON_PROP_KEY = :on
|
11
|
+
|
12
|
+
declare_post_processor_name :http_notification
|
13
|
+
|
14
|
+
def validate_props(props)
|
15
|
+
raise "#{CALLBACK_URL} is not specified" unless props.has_key?(CALLBACK_URL)
|
16
|
+
raise "#{CALLBACK_URL} is not a correct URL" unless valid_url?(props.fetch(CALLBACK_URL, ""))
|
17
|
+
raise "#{ON_PROP_KEY} is not specified" unless props.has_key?(ON_PROP_KEY)
|
18
|
+
end
|
19
|
+
|
20
|
+
def process(cmd, worker, job_ticket)
|
21
|
+
on = @props[ON_PROP_KEY]
|
22
|
+
on = [on] unless on.is_a?(Array)
|
23
|
+
on = on.map{|o| Patriot::Command::ExitCode.value_of(o)}
|
24
|
+
exit_code = job_ticket.exit_code
|
25
|
+
return unless on.include?(exit_code)
|
26
|
+
|
27
|
+
callback_url = @props[CALLBACK_URL]
|
28
|
+
case exit_code
|
29
|
+
when Patriot::Command::ExitCode::SUCCEEDED then send_callback(job_ticket.job_id, callback_url, "SUCCEEDED")
|
30
|
+
when Patriot::Command::ExitCode::FAILED then send_callback(job_ticket.job_id, callback_url, "FAILED")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def send_callback(job_id, callback_url, state)
|
35
|
+
retries = 0
|
36
|
+
begin
|
37
|
+
return RestClient.post(
|
38
|
+
callback_url,
|
39
|
+
{'job_id' => job_id, 'state' => state }.to_json,
|
40
|
+
:content_type => 'application/json'
|
41
|
+
)
|
42
|
+
rescue RestClient::Exception => error
|
43
|
+
retries += 1
|
44
|
+
if retries < 3
|
45
|
+
retry
|
46
|
+
else
|
47
|
+
raise error
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def valid_url?(url)
|
53
|
+
begin
|
54
|
+
URI.parse(url)
|
55
|
+
rescue URI::InvalidURIError
|
56
|
+
return false
|
57
|
+
end
|
58
|
+
return true
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
|
@@ -9,6 +9,7 @@ module Patriot
|
|
9
9
|
require 'patriot/command/post_processor/discard_on_fail'
|
10
10
|
require 'patriot/command/post_processor/retrial'
|
11
11
|
require 'patriot/command/post_processor/mail_notification'
|
12
|
+
require 'patriot/command/post_processor/http_notification'
|
12
13
|
end
|
13
14
|
end
|
14
15
|
end
|
data/lib/patriot/version.rb
CHANGED