glider 0.1.1 → 0.1.2
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 +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
|