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 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