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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 56ade2823d9195bba93e1a16d53668fbd5ab541b
4
- data.tar.gz: fed6293814d10e220b682c25e9dfe4c254df4f2a
3
+ metadata.gz: 49c8b08742fc8788d9d49197bf485a6a5030971f
4
+ data.tar.gz: d79644048c230745ae0cbbe291434eae5e62b44d
5
5
  SHA512:
6
- metadata.gz: 9e0293cddb527f040d040deb4a12915dbd0375c933ae573deeb313487bf64add68ba8452df80f57beae27b0aec6250414d6d3c8be69b112e39e55a5c9b532944
7
- data.tar.gz: 2f667877f767f44b8a9ee09617e10ba6688700719146d2eb0b875b6737f0d9ebfda00f8f56d2964a8cdd4720dafb1a860b95ad844ad8affdd8a30fe15ebc3e47
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
@@ -69,3 +69,4 @@ DEPENDENCIES
69
69
  aws-sdk (>= 1.0.0)
70
70
  bundler (~> 1.0)
71
71
  jeweler (~> 1.8.7)
72
+ json
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
data/examples/Gemfile CHANGED
@@ -3,4 +3,4 @@ source 'https://rubygems.org'
3
3
  gem 'pry'
4
4
  gem 'aws-sdk'
5
5
  gem 'colorize'
6
- gem 'glider', '0.1.0'#, path: '../pkg/'
6
+ gem 'glider', '0.1.2'#, path: '../pkg/'
@@ -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.0)
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.0)
42
+ glider (= 0.1.2)
43
43
  pry
data/examples/activity.rb CHANGED
@@ -8,6 +8,7 @@ class MySWF < Glider::Component
8
8
  register_activity :hello_world, '1.5'
9
9
 
10
10
  def hello_world(input)
11
+ task.fail! reason: "BECAUSE!" and return
11
12
  $logger.warn "Executing hello_world."
12
13
  sleep 2
13
14
  $logger.warn "Completed hello_world."
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
@@ -1,6 +1,7 @@
1
1
  #$LOAD_PATH << File.dirname(__FILE__)
2
2
 
3
3
  #require 'active_support/all'
4
+ require 'json'
4
5
  require 'aws-sdk'
5
6
  require 'active_support/inflector'
6
7
  #require 'act'
@@ -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, input)
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
- domain.workflow_types[workflow_name.to_s, version].start_execution input: input, task_start_to_close_timeout: 5
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={})
@@ -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
- 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
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} workflow_id=#{task.workflow_execution.workflow_id}"
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.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