glider 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/Gemfile.lock +1 -0
- data/VERSION +1 -1
- data/examples/Gemfile +1 -1
- data/examples/Gemfile.lock +2 -2
- data/examples/activity.rb +1 -0
- data/examples/trigger.rb +1 -1
- data/examples/workflow.rb +1 -0
- data/lib/glider.rb +1 -0
- data/lib/glider/activities.rb +3 -3
- data/lib/glider/utils.rb +3 -2
- data/lib/glider/workflows.rb +27 -19
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49c8b08742fc8788d9d49197bf485a6a5030971f
|
4
|
+
data.tar.gz: d79644048c230745ae0cbbe291434eae5e62b44d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 730c502cb42e085e6eb21443183f9e83d939b89d8abcdef045d378c02aaacb1573f0756e5636fdfb5b9ab7cf49b13073cdce0040d8d07311c286bc7002b72f20
|
7
|
+
data.tar.gz: fea7015660469c2160ee3f857a9d4181c87b7cd355ace861e65a398d3c6eb78ded76a81c25fbc189080b32536f51268551394f385f10bb1de1a1d69076ff0b8d
|
data/Gemfile
CHANGED
@@ -2,7 +2,7 @@ source "https://rubygems.org"
|
|
2
2
|
|
3
3
|
gem 'aws-sdk', '>= 1.0.0'
|
4
4
|
gem 'activesupport', '>= 4.0.0', require: 'active_support/inflector'
|
5
|
-
|
5
|
+
gem 'json'
|
6
6
|
# Add dependencies to develop your gem here.
|
7
7
|
# Include everything needed to run rake, tests, features, etc.
|
8
8
|
group :development do
|
data/Gemfile.lock
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
data/examples/Gemfile
CHANGED
data/examples/Gemfile.lock
CHANGED
@@ -14,7 +14,7 @@ GEM
|
|
14
14
|
uuidtools (~> 2.1)
|
15
15
|
coderay (1.1.0)
|
16
16
|
colorize (0.6.0)
|
17
|
-
glider (0.1.
|
17
|
+
glider (0.1.2)
|
18
18
|
activesupport (>= 4.0.0)
|
19
19
|
aws-sdk (>= 1.0.0)
|
20
20
|
i18n (0.6.5)
|
@@ -39,5 +39,5 @@ PLATFORMS
|
|
39
39
|
DEPENDENCIES
|
40
40
|
aws-sdk
|
41
41
|
colorize
|
42
|
-
glider (= 0.1.
|
42
|
+
glider (= 0.1.2)
|
43
43
|
pry
|
data/examples/activity.rb
CHANGED
data/examples/trigger.rb
CHANGED
@@ -2,7 +2,7 @@ require_relative 'shared_boot'
|
|
2
2
|
|
3
3
|
def trigger
|
4
4
|
puts "TRIGGER!"
|
5
|
-
execution = Glider.execute :gt3, :say_hi, '1.5', "ALOHA"
|
5
|
+
execution = Glider.execute :gt3, :say_hi, '1.5', input: {message: "ALOHA"}.to_json
|
6
6
|
#Glider.signal :glider_test, execution.workflow_id, :test
|
7
7
|
return execution
|
8
8
|
end
|
data/examples/workflow.rb
CHANGED
@@ -10,6 +10,7 @@ class MySWF < Glider::Component
|
|
10
10
|
def say_hi(event_name, event, data)
|
11
11
|
case event_name
|
12
12
|
when :workflow_execution_started, :hello_world_activity_timed_out
|
13
|
+
binding.pry
|
13
14
|
act = {name: 'hello_world', version: '1.5'}
|
14
15
|
task.schedule_activity_task act
|
15
16
|
when :test_signal
|
data/lib/glider.rb
CHANGED
data/lib/glider/activities.rb
CHANGED
@@ -22,10 +22,10 @@ module Glider
|
|
22
22
|
options = default_options.merge options
|
23
23
|
|
24
24
|
begin
|
25
|
-
activity_type = domain.activity_types.create name.to_s, version, options
|
25
|
+
activity_type = domain.activity_types.create name.to_s, version.to_s, options
|
26
26
|
rescue AWS::SimpleWorkflow::Errors::TypeAlreadyExistsFault
|
27
27
|
# already registered
|
28
|
-
activity_type = domain.activity_types[name.to_s, version]
|
28
|
+
activity_type = domain.activity_types[name.to_s, version.to_s]
|
29
29
|
end
|
30
30
|
workers.times do
|
31
31
|
ProcessManager.register_worker loop_block_for_activity(activity_type)
|
@@ -47,7 +47,7 @@ module Glider
|
|
47
47
|
Glider.logger.info "Executing activity=#{activity_type.name} workflow_id=#{workflow_id}"
|
48
48
|
target_instance = self.new activity_task
|
49
49
|
activity_result = target_instance.send activity_type.name, activity_task.input
|
50
|
-
activity_task.complete! result: activity_result.to_s
|
50
|
+
activity_task.complete! result: activity_result.to_s unless activity_task.responded?
|
51
51
|
rescue AWS::SimpleWorkflow::ActivityTask::CancelRequestedError
|
52
52
|
# cleanup after ourselves
|
53
53
|
activity_task.cancel!
|
data/lib/glider/utils.rb
CHANGED
@@ -4,10 +4,11 @@ module Glider
|
|
4
4
|
$logger ||= Logger.new STDOUT
|
5
5
|
end
|
6
6
|
|
7
|
-
def Glider.execute(domain_name, workflow_name, version,
|
7
|
+
def Glider.execute(domain_name, workflow_name, version, options={})
|
8
8
|
swf = AWS::SimpleWorkflow.new
|
9
9
|
domain = swf.domains[domain_name.to_s]
|
10
|
-
|
10
|
+
options = { task_start_to_close_timeout: 5 }.merge(options)
|
11
|
+
domain.workflow_types[workflow_name.to_s, version.to_s].start_execution options
|
11
12
|
end
|
12
13
|
|
13
14
|
def Glider.signal(domain_name, workflow_id, signal_name, options={})
|
data/lib/glider/workflows.rb
CHANGED
@@ -23,10 +23,10 @@ module Glider
|
|
23
23
|
}
|
24
24
|
options = default_options.merge options
|
25
25
|
begin
|
26
|
-
workflow_type = domain.workflow_types.create name.to_s, version, options
|
26
|
+
workflow_type = domain.workflow_types.create name.to_s, version.to_s, options
|
27
27
|
rescue AWS::SimpleWorkflow::Errors::TypeAlreadyExistsFault
|
28
28
|
# already registered
|
29
|
-
workflow_type = domain.workflow_types[name.to_s, version]
|
29
|
+
workflow_type = domain.workflow_types[name.to_s, version.to_s]
|
30
30
|
end
|
31
31
|
workers.times do
|
32
32
|
ProcessManager.register_worker loop_block_for_workflow(workflow_type)
|
@@ -64,21 +64,27 @@ module Glider
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def workflow_data_for(event_name, event)
|
67
|
-
case event_name
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
67
|
+
data = case event_name
|
68
|
+
when :workflow_execution_started #:decision_task_scheduled
|
69
|
+
event.attributes.input
|
70
|
+
when :workflow_execution_signaled
|
71
|
+
begin event.attributes.input rescue nil end
|
72
|
+
when :activity_task_completed
|
73
|
+
begin event.attributes.result rescue nil end
|
74
|
+
else
|
75
|
+
begin
|
76
|
+
event.attributes.result
|
77
|
+
rescue
|
78
|
+
Glider.logger.debug "no input or result in event, data will be nil event=#{event_name} attributes=#{event.attributes.to_h}"
|
79
|
+
nil
|
80
|
+
end
|
81
|
+
end
|
82
|
+
# try to parse as JSON
|
83
|
+
begin
|
84
|
+
JSON.parse data
|
85
|
+
rescue JSON::ParserError
|
86
|
+
data
|
87
|
+
end
|
82
88
|
end
|
83
89
|
|
84
90
|
# used for timeouts and activity task completed
|
@@ -93,7 +99,6 @@ module Glider
|
|
93
99
|
|
94
100
|
def process_decision_task(workflow_type, task)
|
95
101
|
workflow_id = task.workflow_execution.workflow_id
|
96
|
-
Glider.logger.info "Deciding workflow=#{workflow_type.name} workflow_id=#{workflow_id}"
|
97
102
|
task.new_events.each do |event|
|
98
103
|
event_name = ActiveSupport::Inflector.underscore(event.event_type).to_sym
|
99
104
|
if should_call_workflow_target? event_name, task.workflow_execution
|
@@ -105,10 +110,13 @@ module Glider
|
|
105
110
|
event_name = "#{event.attributes.signal_name}_signal".to_sym
|
106
111
|
when :activity_task_completed
|
107
112
|
event_name = "#{activity_name_for(task, event)}_activity_completed".to_sym
|
113
|
+
when :activity_task_failed
|
114
|
+
event_name = "#{activity_name_for(task, event)}_activity_failed".to_sym
|
108
115
|
when :activity_task_timed_out
|
109
116
|
event_name = "#{activity_name_for(task, event)}_activity_timed_out".to_sym
|
110
117
|
end
|
111
118
|
|
119
|
+
Glider.logger.info "event_name=#{event_name} workflow=#{workflow_type.name} workflow_id=#{workflow_id}"
|
112
120
|
target_instance.send workflow_type.name, event_name, event, data
|
113
121
|
|
114
122
|
|
@@ -117,7 +125,7 @@ module Glider
|
|
117
125
|
Glider.logger.debug decisions
|
118
126
|
if decisions.length == 0 && !task.responded?
|
119
127
|
# the decider didn't add any decision
|
120
|
-
Glider.logger.warn "No decision made workflow=#{workflow_type.name}
|
128
|
+
Glider.logger.warn "No decision was made event_name=#{event_name} workflow=#{workflow_type.name} workflow_id=#{task.workflow_execution.workflow_id}"
|
121
129
|
end
|
122
130
|
end
|
123
131
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glider
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Pelaez
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 4.0.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: json
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: bundler
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|