flor 0.17.0 → 0.18.0
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/CHANGELOG.md +24 -0
- data/README.md +19 -1
- data/flor.gemspec +7 -7
- data/lib/flor.rb +1 -1
- data/lib/flor/core/executor.rb +5 -6
- data/lib/flor/core/procedure.rb +47 -11
- data/lib/flor/flor.rb +1 -3
- data/lib/flor/log.rb +6 -0
- data/lib/flor/pcore/_dmute.rb +4 -1
- data/lib/flor/pcore/break.rb +12 -1
- data/lib/flor/pcore/on.rb +30 -6
- data/lib/flor/pcore/sequence.rb +48 -0
- data/lib/flor/punit/cancel.rb +9 -1
- data/lib/flor/punit/signal.rb +29 -5
- data/lib/flor/punit/task.rb +8 -2
- data/lib/flor/punit/trap.rb +31 -0
- data/lib/flor/unit/executor.rb +9 -5
- data/lib/flor/unit/ganger.rb +21 -6
- data/lib/flor/unit/models.rb +40 -9
- data/lib/flor/unit/models/trap.rb +12 -4
- data/lib/flor/unit/scheduler.rb +186 -51
- data/lib/flor/unit/storage.rb +20 -5
- data/lib/flor/unit/taskers.rb +46 -1
- metadata +13 -37
data/lib/flor/unit/storage.rb
CHANGED
@@ -78,10 +78,19 @@ module Flor
|
|
78
78
|
opts = [ to, from, opts ].find { |e| e.is_a?(Hash) } || {}
|
79
79
|
opts[:target] ||= to if to.is_a?(Integer)
|
80
80
|
opts[:current] ||= from if from.is_a?(Integer)
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
81
|
+
|
82
|
+
opts[:table] = (
|
83
|
+
@unit.conf['db_migration_table'] ||
|
84
|
+
@unit.conf['sto_migration_table'] ||
|
85
|
+
:schema_info).to_sym
|
86
|
+
opts[:column] = (
|
87
|
+
@unit.conf['db_migration_column'] ||
|
88
|
+
@unit.conf['sto_migration_column'] ||
|
89
|
+
:version).to_sym
|
90
|
+
#
|
91
|
+
# defaults for the migration version table:
|
92
|
+
# { table: :schema_info,
|
93
|
+
# column: :version }
|
85
94
|
|
86
95
|
skip =
|
87
96
|
@unit.conf['db_sparse_migrations'] ||
|
@@ -106,9 +115,15 @@ module Flor
|
|
106
115
|
end
|
107
116
|
end
|
108
117
|
|
118
|
+
# Delete tables in the storage database that begin with "flor_"
|
119
|
+
# and have more than 2 columns (the Sequel schema_info table has 1 column
|
120
|
+
# as of this writing)
|
121
|
+
#
|
109
122
|
def delete_tables
|
110
123
|
|
111
|
-
@db.tables.each { |t|
|
124
|
+
@db.tables.each { |t|
|
125
|
+
@db[t].delete \
|
126
|
+
if t.to_s.match(/^flor_/) && @db[t].columns.size > 2 }
|
112
127
|
end
|
113
128
|
|
114
129
|
def load_execution(exid)
|
data/lib/flor/unit/taskers.rb
CHANGED
@@ -55,7 +55,11 @@ module Flor
|
|
55
55
|
|
56
56
|
def reply(message=@message, force=false)
|
57
57
|
|
58
|
-
|
58
|
+
fail ArgumentError.new(
|
59
|
+
"argument to reply must be a Hash but is #{message.class}"
|
60
|
+
) unless message.is_a?(Hash)
|
61
|
+
|
62
|
+
@ganger.return(derive_message(message)) if force || @ganger
|
59
63
|
|
60
64
|
[] # very important, return no further messages
|
61
65
|
end
|
@@ -65,6 +69,47 @@ module Flor
|
|
65
69
|
reply(
|
66
70
|
Flor.to_error_message(@message, error))
|
67
71
|
end
|
72
|
+
|
73
|
+
# So that #reply may be called with
|
74
|
+
# ```
|
75
|
+
# reply
|
76
|
+
# reply(@message)
|
77
|
+
# reply(payload: {})
|
78
|
+
# reply(ret: 123)
|
79
|
+
# reply(ret: 123, set: { a: 1 }, unset: [ :b ])
|
80
|
+
# ```
|
81
|
+
#
|
82
|
+
def derive_message(m)
|
83
|
+
|
84
|
+
exid = m['exid']
|
85
|
+
nid = m['nid']
|
86
|
+
pl = m['payload']
|
87
|
+
|
88
|
+
return m if Flor.is_exid?(exid) && Flor.is_nid?(nid) && pl.is_a?(Hash)
|
89
|
+
|
90
|
+
m = Flor.to_string_keyed_hash(m)
|
91
|
+
h = Flor.dup(@message)
|
92
|
+
ks = m.keys
|
93
|
+
|
94
|
+
if ks == [ 'payload' ]
|
95
|
+
|
96
|
+
h['payload'] = m['payload']
|
97
|
+
|
98
|
+
elsif (ks & %w[ ret set unset ]).size > 0
|
99
|
+
|
100
|
+
pl = (h['payload'] ||= {})
|
101
|
+
|
102
|
+
pl['ret'] = m['ret'] if m.has_key?('ret')
|
103
|
+
(m['set'] || {}).each { |k, v| pl[k] = v }
|
104
|
+
(m['unset'] || []).each { |k| pl.delete(k.to_s) }
|
105
|
+
|
106
|
+
else
|
107
|
+
|
108
|
+
h['payload'] = m
|
109
|
+
end
|
110
|
+
|
111
|
+
h
|
112
|
+
end
|
68
113
|
end
|
69
114
|
end
|
70
115
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.18.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Mettraux
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: munemo
|
@@ -17,9 +17,6 @@ dependencies:
|
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.0'
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 1.0.1
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -27,9 +24,6 @@ dependencies:
|
|
27
24
|
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '1.0'
|
30
|
-
- - ">="
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 1.0.1
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: raabro
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -37,9 +31,6 @@ dependencies:
|
|
37
31
|
- - "~>"
|
38
32
|
- !ruby/object:Gem::Version
|
39
33
|
version: '1.1'
|
40
|
-
- - ">="
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: 1.1.5
|
43
34
|
type: :runtime
|
44
35
|
prerelease: false
|
45
36
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -47,29 +38,20 @@ dependencies:
|
|
47
38
|
- - "~>"
|
48
39
|
- !ruby/object:Gem::Version
|
49
40
|
version: '1.1'
|
50
|
-
- - ">="
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: 1.1.5
|
53
41
|
- !ruby/object:Gem::Dependency
|
54
42
|
name: fugit
|
55
43
|
requirement: !ruby/object:Gem::Requirement
|
56
44
|
requirements:
|
57
45
|
- - "~>"
|
58
46
|
- !ruby/object:Gem::Version
|
59
|
-
version: '1.
|
60
|
-
- - ">="
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: 1.1.8
|
47
|
+
version: '1.2'
|
63
48
|
type: :runtime
|
64
49
|
prerelease: false
|
65
50
|
version_requirements: !ruby/object:Gem::Requirement
|
66
51
|
requirements:
|
67
52
|
- - "~>"
|
68
53
|
- !ruby/object:Gem::Version
|
69
|
-
version: '1.
|
70
|
-
- - ">="
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
version: 1.1.8
|
54
|
+
version: '1.2'
|
73
55
|
- !ruby/object:Gem::Dependency
|
74
56
|
name: dense
|
75
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -77,9 +59,6 @@ dependencies:
|
|
77
59
|
- - "~>"
|
78
60
|
- !ruby/object:Gem::Version
|
79
61
|
version: '1.1'
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: 1.1.6
|
83
62
|
type: :runtime
|
84
63
|
prerelease: false
|
85
64
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -87,51 +66,48 @@ dependencies:
|
|
87
66
|
- - "~>"
|
88
67
|
- !ruby/object:Gem::Version
|
89
68
|
version: '1.1'
|
90
|
-
- - ">="
|
91
|
-
- !ruby/object:Gem::Version
|
92
|
-
version: 1.1.6
|
93
69
|
- !ruby/object:Gem::Dependency
|
94
70
|
name: sequel
|
95
71
|
requirement: !ruby/object:Gem::Requirement
|
96
72
|
requirements:
|
97
73
|
- - "~>"
|
98
74
|
- !ruby/object:Gem::Version
|
99
|
-
version: '5'
|
75
|
+
version: '5.0'
|
100
76
|
type: :runtime
|
101
77
|
prerelease: false
|
102
78
|
version_requirements: !ruby/object:Gem::Requirement
|
103
79
|
requirements:
|
104
80
|
- - "~>"
|
105
81
|
- !ruby/object:Gem::Version
|
106
|
-
version: '5'
|
82
|
+
version: '5.0'
|
107
83
|
- !ruby/object:Gem::Dependency
|
108
84
|
name: rspec
|
109
85
|
requirement: !ruby/object:Gem::Requirement
|
110
86
|
requirements:
|
111
87
|
- - "~>"
|
112
88
|
- !ruby/object:Gem::Version
|
113
|
-
version: '3.
|
89
|
+
version: '3.8'
|
114
90
|
type: :development
|
115
91
|
prerelease: false
|
116
92
|
version_requirements: !ruby/object:Gem::Requirement
|
117
93
|
requirements:
|
118
94
|
- - "~>"
|
119
95
|
- !ruby/object:Gem::Version
|
120
|
-
version: '3.
|
96
|
+
version: '3.8'
|
121
97
|
- !ruby/object:Gem::Dependency
|
122
98
|
name: terminal-table
|
123
99
|
requirement: !ruby/object:Gem::Requirement
|
124
100
|
requirements:
|
125
|
-
- - "
|
101
|
+
- - "~>"
|
126
102
|
- !ruby/object:Gem::Version
|
127
|
-
version: '
|
103
|
+
version: '1.8'
|
128
104
|
type: :development
|
129
105
|
prerelease: false
|
130
106
|
version_requirements: !ruby/object:Gem::Requirement
|
131
107
|
requirements:
|
132
|
-
- - "
|
108
|
+
- - "~>"
|
133
109
|
- !ruby/object:Gem::Version
|
134
|
-
version: '
|
110
|
+
version: '1.8'
|
135
111
|
description: A Ruby workflow engine (ruote next generation)
|
136
112
|
email:
|
137
113
|
- jmettraux+flor@gmail.com
|
@@ -322,7 +298,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
322
298
|
version: '0'
|
323
299
|
requirements: []
|
324
300
|
rubyforge_project:
|
325
|
-
rubygems_version: 2.
|
301
|
+
rubygems_version: 2.6.14.1
|
326
302
|
signing_key:
|
327
303
|
specification_version: 4
|
328
304
|
summary: A Ruby workflow engine
|