libis-workflow 2.0.0 → 2.0.1
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/lib/libis/workflow/base/logging.rb +19 -34
- data/lib/libis/workflow/base/run.rb +5 -2
- data/lib/libis/workflow/base/workflow.rb +1 -1
- data/lib/libis/workflow/task.rb +32 -3
- data/lib/libis/workflow/version.rb +1 -1
- data/lib/libis/workflow.rb +0 -1
- data/spec/workflow_spec.rb +11 -6
- metadata +3 -4
- data/lib/libis/workflow/base/logger.rb +0 -30
- data/lib/libis/workflow/base.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b3ce4d596ca40c95f30e64d6f739020bf19994b
|
4
|
+
data.tar.gz: 639124a5d3ba1474a390ddc8d396571c15d81e91
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d09e49198e9b416278ac074fb2e9a1cfa9eb19aaa9bc28348697b9c8cc2373bc059d12e743012519053fc6b102f0f74c3f4a364abbf6e14d033f11c2100f717
|
7
|
+
data.tar.gz: 7b71eeb726ba6b7aabf4faf7667b1770b1f35c7ca379fbc6197ebbc8c47cada61620639278ef108769792247244b44968707e8aeed5ab70a388999ebe7cd3c3e
|
@@ -3,25 +3,6 @@ module Libis
|
|
3
3
|
module Base
|
4
4
|
module Logging
|
5
5
|
|
6
|
-
# Helper function for the WorkItems to add a log entry to the log_history.
|
7
|
-
#
|
8
|
-
# The supplied message structure is expected to contain the following fields:
|
9
|
-
# - :severity : ::Logger::Severity value
|
10
|
-
# - :id : optional message id
|
11
|
-
# - :text : message text
|
12
|
-
# - :task : list of tasks names (task hierarchy) that submits the message
|
13
|
-
#
|
14
|
-
# @param [Hash] message
|
15
|
-
def add_log(message = {})
|
16
|
-
msg = message_struct(message)
|
17
|
-
add_log_entry(msg)
|
18
|
-
self.save
|
19
|
-
end
|
20
|
-
|
21
|
-
def <=(message = {})
|
22
|
-
self.add_log(message)
|
23
|
-
end
|
24
|
-
|
25
6
|
# Add a structured message to the log history. The message text can be submitted as an integer or text. If an
|
26
7
|
# integer is submitted, it will be used to look up the text in the MessageRegistry. The message text will be
|
27
8
|
# passed to the % operator with the args parameter. If that failes (e.g. because the format string is not correct)
|
@@ -45,31 +26,35 @@ module Libis
|
|
45
26
|
run_id = self.get_run.id rescue nil
|
46
27
|
|
47
28
|
self.add_log severity: severity, id: message_id.to_i, text: message_text, task: task, run_id: run_id
|
29
|
+
end
|
48
30
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
31
|
+
# Helper function for the WorkItems to add a log entry to the log_history.
|
32
|
+
#
|
33
|
+
# The supplied message structure is expected to contain the following fields:
|
34
|
+
# - :severity : ::Logger::Severity value
|
35
|
+
# - :id : optional message id
|
36
|
+
# - :text : message text
|
37
|
+
# - :task : list of tasks names (task hierarchy) that submits the message
|
38
|
+
#
|
39
|
+
# @param [Hash] message
|
40
|
+
def add_log(message = {})
|
41
|
+
msg = message_struct(message)
|
42
|
+
add_log_entry(msg)
|
43
|
+
self.save
|
44
|
+
end
|
58
45
|
|
59
|
-
|
60
|
-
|
46
|
+
def <=(message = {})
|
47
|
+
self.add_log(message)
|
61
48
|
end
|
62
49
|
|
63
50
|
protected
|
64
51
|
|
65
|
-
SEV_LABEL = %w(DEBUG INFO WARN ERROR FATAL ANY) unless const_defined? :SEV_LABEL
|
66
|
-
|
67
52
|
# create and return a proper message structure
|
68
53
|
# @param [Hash] opts
|
69
54
|
def message_struct(opts = {})
|
70
|
-
opts.reverse_merge!(severity:
|
55
|
+
opts.reverse_merge!(severity: :info, code: nil, text: '')
|
71
56
|
{
|
72
|
-
severity:
|
57
|
+
severity: ::Logging::levelify(opts[:severity]).upcase,
|
73
58
|
task: opts[:task],
|
74
59
|
code: opts[:code],
|
75
60
|
message: opts[:text]
|
@@ -49,6 +49,10 @@ module Libis
|
|
49
49
|
self.job.workflow
|
50
50
|
end
|
51
51
|
|
52
|
+
def logger
|
53
|
+
self.properties['logger'] || self.job.logger rescue ::Libis::Workflow::Config.logger
|
54
|
+
end
|
55
|
+
|
52
56
|
# Execute the workflow.
|
53
57
|
#
|
54
58
|
# The action parameter defines how the execution of the tasks will behave:
|
@@ -65,10 +69,9 @@ module Libis
|
|
65
69
|
|
66
70
|
self.options = workflow.prepare_input(self.options)
|
67
71
|
|
68
|
-
self.tasks = workflow.tasks
|
72
|
+
self.tasks = workflow.tasks
|
69
73
|
configure_tasks self.options
|
70
74
|
|
71
|
-
|
72
75
|
self.tasks.each do |task|
|
73
76
|
task.run self
|
74
77
|
end
|
data/lib/libis/workflow/task.rb
CHANGED
@@ -4,6 +4,7 @@ require 'backports/rails/string'
|
|
4
4
|
|
5
5
|
require 'libis/tools/parameter'
|
6
6
|
require 'libis/tools/extend/hash'
|
7
|
+
require 'libis/tools/logger'
|
7
8
|
|
8
9
|
require 'libis/workflow'
|
9
10
|
|
@@ -12,7 +13,7 @@ module Libis
|
|
12
13
|
|
13
14
|
# noinspection RubyTooManyMethodsInspection
|
14
15
|
class Task
|
15
|
-
include ::Libis::
|
16
|
+
include ::Libis::Tools::Logger
|
16
17
|
include ::Libis::Tools::ParameterContainer
|
17
18
|
|
18
19
|
attr_accessor :parent, :name, :workitem
|
@@ -116,9 +117,33 @@ module Libis
|
|
116
117
|
self.parameter(name.to_sym, value)
|
117
118
|
end
|
118
119
|
end
|
120
|
+
end
|
119
121
|
|
122
|
+
def message(severity, msg, *args)
|
123
|
+
taskname = self.namepath rescue nil
|
124
|
+
self.set_application(taskname)
|
125
|
+
item = self.workitem
|
126
|
+
item = args.shift if args.size > 0 and args[0].is_a?(::Libis::Workflow::Base::WorkItem)
|
127
|
+
if item
|
128
|
+
subject = nil
|
129
|
+
begin
|
130
|
+
subject = item.to_s
|
131
|
+
subject = item.name
|
132
|
+
subject = item.namepath
|
133
|
+
rescue
|
134
|
+
# do nothing
|
135
|
+
end
|
136
|
+
self.set_subject(subject)
|
137
|
+
item.log_message(
|
138
|
+
severity, msg.is_a?(Integer) ? {id: msg} : {text: (msg.to_s rescue '')}.merge(task: taskname), *args
|
139
|
+
)
|
140
|
+
end
|
141
|
+
super severity, msg, *args
|
120
142
|
end
|
121
143
|
|
144
|
+
def logger
|
145
|
+
(self.parent || self.get_run).logger
|
146
|
+
end
|
122
147
|
protected
|
123
148
|
|
124
149
|
def configure(cfg)
|
@@ -204,11 +229,15 @@ module Libis
|
|
204
229
|
end
|
205
230
|
|
206
231
|
def action=(action)
|
207
|
-
self.
|
232
|
+
self.get_run.action = action
|
208
233
|
end
|
209
234
|
|
210
235
|
def action
|
211
|
-
self.
|
236
|
+
self.get_run.action
|
237
|
+
end
|
238
|
+
|
239
|
+
def get_run(item = nil)
|
240
|
+
get_root_item(item).get_run
|
212
241
|
end
|
213
242
|
|
214
243
|
def get_root_item(item = nil)
|
@@ -2,6 +2,6 @@
|
|
2
2
|
|
3
3
|
module Libis
|
4
4
|
module Workflow
|
5
|
-
VERSION = '2.0.
|
5
|
+
VERSION = '2.0.1' unless const_defined? :VERSION # the guard is against a redefinition warning that happens on Travis
|
6
6
|
end
|
7
7
|
end
|
data/lib/libis/workflow.rb
CHANGED
@@ -13,7 +13,6 @@ module Libis
|
|
13
13
|
autoload :WorkItem, 'libis/workflow/base/work_item'
|
14
14
|
autoload :FileItem, 'libis/workflow/base/file_item'
|
15
15
|
autoload :DirItem, 'libis/workflow/base/dir_item'
|
16
|
-
autoload :Logger, 'libis/workflow/base/logger'
|
17
16
|
autoload :Logging, 'libis/workflow/base/logging'
|
18
17
|
autoload :Job, 'libis/workflow/base/job'
|
19
18
|
autoload :Run, 'libis/workflow/base/run'
|
data/spec/workflow_spec.rb
CHANGED
@@ -4,21 +4,24 @@ require 'stringio'
|
|
4
4
|
|
5
5
|
describe 'TestWorkflow' do
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
basedir = File.absolute_path File.join(File.dirname(__FILE__))
|
8
|
+
dirname = File.join(basedir, 'items')
|
9
9
|
|
10
|
-
|
10
|
+
before :each do
|
11
11
|
|
12
|
-
let(:workflow) {
|
13
12
|
# noinspection RubyResolve
|
14
13
|
::Libis::Workflow.configure do |cfg|
|
15
14
|
cfg.itemdir = dirname
|
16
15
|
cfg.taskdir = File.join(basedir, 'tasks')
|
17
16
|
cfg.workdir = File.join(basedir, 'work')
|
18
|
-
cfg.logger =
|
19
|
-
|
17
|
+
cfg.logger.appenders =
|
18
|
+
::Logging::Appenders.string_io('StringIO', layout: ::Libis::Tools::Config.get_log_formatter)
|
20
19
|
end
|
20
|
+
end
|
21
|
+
|
22
|
+
let(:logoutput) { ::Libis::Workflow::Config.logger.appenders.first.sio }
|
21
23
|
|
24
|
+
let(:workflow) {
|
22
25
|
workflow = ::Libis::Workflow::Workflow.new
|
23
26
|
workflow.configure(
|
24
27
|
name: 'TestWorkflow',
|
@@ -106,6 +109,8 @@ STR
|
|
106
109
|
run = job.execute
|
107
110
|
output = logoutput.string.lines.to_a
|
108
111
|
|
112
|
+
# puts output
|
113
|
+
|
109
114
|
expect(output.size).to eq sample_out.size
|
110
115
|
output.each_with_index do |o, i|
|
111
116
|
expect(o[/(?<=\] ).*/]).to eq sample_out[i].strip
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libis-workflow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kris Dekeyser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -125,11 +125,9 @@ files:
|
|
125
125
|
- lib/libis/exceptions.rb
|
126
126
|
- lib/libis/workflow.rb
|
127
127
|
- lib/libis/workflow/action.rb
|
128
|
-
- lib/libis/workflow/base.rb
|
129
128
|
- lib/libis/workflow/base/dir_item.rb
|
130
129
|
- lib/libis/workflow/base/file_item.rb
|
131
130
|
- lib/libis/workflow/base/job.rb
|
132
|
-
- lib/libis/workflow/base/logger.rb
|
133
131
|
- lib/libis/workflow/base/logging.rb
|
134
132
|
- lib/libis/workflow/base/run.rb
|
135
133
|
- lib/libis/workflow/base/work_item.rb
|
@@ -194,3 +192,4 @@ test_files:
|
|
194
192
|
- spec/tasks/checksum_tester.rb
|
195
193
|
- spec/tasks/collect_files.rb
|
196
194
|
- spec/workflow_spec.rb
|
195
|
+
has_rdoc:
|
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'libis/tools/logger'
|
2
|
-
|
3
|
-
module Libis
|
4
|
-
module Workflow
|
5
|
-
module Base
|
6
|
-
module Logger
|
7
|
-
include ::Libis::Tools::Logger
|
8
|
-
|
9
|
-
def message(severity, msg, *args)
|
10
|
-
item = self.workitem
|
11
|
-
item = args.shift if args.size > 0 and args[0].is_a?(WorkItem)
|
12
|
-
|
13
|
-
item.log_message(severity, to_msg(msg), *args) if item
|
14
|
-
end
|
15
|
-
|
16
|
-
def to_msg(msg)
|
17
|
-
case msg
|
18
|
-
when String
|
19
|
-
{text: msg}
|
20
|
-
when Integer
|
21
|
-
{id: msg}
|
22
|
-
else
|
23
|
-
{text: (msg.to_s rescue '')}
|
24
|
-
end.merge task: self.namepath
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
data/lib/libis/workflow/base.rb
DELETED