libis-workflow-mongoid 2.0.beta.10 → 2.0.beta.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/libis/workflow/mongoid/job.rb +47 -0
- data/lib/libis/workflow/mongoid/run.rb +8 -13
- data/lib/libis/workflow/mongoid/version.rb +1 -1
- data/lib/libis/workflow/mongoid/work_item.rb +3 -7
- data/lib/libis/workflow/mongoid/workflow.rb +3 -16
- data/lib/libis/workflow/mongoid.rb +1 -0
- data/spec/items/test_run.rb +1 -1
- data/spec/test_job.rb +9 -0
- data/spec/test_workflow.rb +1 -1
- data/spec/workflow_spec.rb +21 -8
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cb77b9360af577f7b0b7f8067b0b43339a562512
|
4
|
+
data.tar.gz: 40868911a55787816c6cbd9e8e2730da9e26b1f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64a7f3c741675179200da3beaa66d02265611afabe19dc18e3f6f293e71b8bac1c9b077b021a26e4cb76c68f403fad2c45c8d4036ab4898654783d7553e9d7ef
|
7
|
+
data.tar.gz: ef4c92bc1aba840e0b7b609624203759557cea6fcbf65681a60ffae6c8131410d37d9d5ced04e988360715ead97cfb5aa3dff6517aa4813445e3f57734eb1d39
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'libis/workflow/base/job'
|
4
|
+
require 'libis/workflow/mongoid/base'
|
5
|
+
|
6
|
+
module Libis
|
7
|
+
module Workflow
|
8
|
+
module Mongoid
|
9
|
+
|
10
|
+
module Job
|
11
|
+
|
12
|
+
def self.included(klass)
|
13
|
+
klass.class_eval do
|
14
|
+
include ::Libis::Workflow::Base::Job
|
15
|
+
include ::Libis::Workflow::Mongoid::Base
|
16
|
+
|
17
|
+
store_in collection: 'workflow_jobs'
|
18
|
+
|
19
|
+
field :name, type: String
|
20
|
+
field :description, type: String
|
21
|
+
field :input, type: Hash, default: -> { Hash.new }
|
22
|
+
field :run_object, type: String
|
23
|
+
|
24
|
+
index({name: 1}, {unique: 1})
|
25
|
+
|
26
|
+
def klass.run_class(run_klass)
|
27
|
+
has_many :runs, inverse_of: :job, class_name: run_klass.to_s,
|
28
|
+
dependent: :destroy, autosave: true, order: :c_at.asc
|
29
|
+
end
|
30
|
+
|
31
|
+
def klass.workflow_class(workflow_klass)
|
32
|
+
belongs_to :workflow, inverse_of: :jobs, class_name: workflow_klass.to_s
|
33
|
+
end
|
34
|
+
|
35
|
+
# def create_run_object
|
36
|
+
# # noinspection RubyResolve
|
37
|
+
# self.runs.build
|
38
|
+
# end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -20,22 +20,18 @@ module Libis
|
|
20
20
|
|
21
21
|
field :start_date, type: Time, default: -> { Time.now }
|
22
22
|
|
23
|
-
# def destroy
|
24
|
-
# self.items.each { |item| item.destroy }
|
25
|
-
# FileUtils.rmtree(work_dir) if Dir.exist?(work_dir)
|
26
|
-
# super
|
27
|
-
# end
|
28
|
-
|
29
23
|
set_callback(:destroy, :before) do |document|
|
30
|
-
wd = document.work_dir
|
31
|
-
FileUtils.rmtree wd if Dir.exist? wd
|
32
24
|
document.items.each { |item| item.destroy! }
|
25
|
+
wd = document.work_dir
|
26
|
+
FileUtils.rmtree wd if wd && !wd.blank? && Dir.exist?(wd)
|
27
|
+
id = document.properties[:ingest_dir]
|
28
|
+
FileUtils.rmtree id if id && !id.blank? && Dir.exist?(id)
|
33
29
|
end
|
34
30
|
|
35
31
|
index start_date: 1
|
36
32
|
|
37
|
-
def klass.
|
38
|
-
belongs_to :
|
33
|
+
def klass.job_class(job_klass)
|
34
|
+
belongs_to :job, inverse_of: :runs, class_name: job_klass.to_s
|
39
35
|
end
|
40
36
|
|
41
37
|
def klass.item_class(item_klass)
|
@@ -45,11 +41,10 @@ module Libis
|
|
45
41
|
end
|
46
42
|
end
|
47
43
|
|
48
|
-
def run
|
44
|
+
def run
|
49
45
|
self.tasks = []
|
50
46
|
self.items = []
|
51
|
-
|
52
|
-
super opts
|
47
|
+
super
|
53
48
|
end
|
54
49
|
|
55
50
|
def restart(taskname)
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module Libis
|
4
4
|
module Workflow
|
5
5
|
module Mongoid
|
6
|
-
VERSION = '2.0.beta.
|
6
|
+
VERSION = '2.0.beta.11' unless const_defined? :VERSION # the guard is against a redefinition warning that happens on Travis
|
7
7
|
end
|
8
8
|
end
|
9
9
|
end
|
@@ -17,10 +17,6 @@ module Libis
|
|
17
17
|
dependent: :destroy, autosave: true, order: :_id.asc
|
18
18
|
belongs_to :parent, inverse_of: :items, class_name: klass.to_s
|
19
19
|
|
20
|
-
# def destroy
|
21
|
-
# self.items.each { |item| item.destroy! }
|
22
|
-
# super
|
23
|
-
# end
|
24
20
|
set_callback(:destroy, :before) do |document|
|
25
21
|
document.items.each { |item| item.destroy! }
|
26
22
|
end
|
@@ -33,15 +29,15 @@ module Libis
|
|
33
29
|
end
|
34
30
|
|
35
31
|
def get_parent
|
36
|
-
self
|
32
|
+
self.parent || self.run
|
37
33
|
end
|
38
34
|
|
39
35
|
def get_run
|
40
|
-
self
|
36
|
+
self.run || self.parent && self.parent.get_run || nil
|
41
37
|
end
|
42
38
|
|
43
39
|
def get_root
|
44
|
-
self
|
40
|
+
self.parent && self.parent.get_root || self
|
45
41
|
end
|
46
42
|
|
47
43
|
end
|
@@ -23,9 +23,9 @@ module Libis
|
|
23
23
|
|
24
24
|
index({name: 1}, {unique: 1})
|
25
25
|
|
26
|
-
def klass.
|
27
|
-
has_many :
|
28
|
-
dependent: :destroy, autosave: true, order: :
|
26
|
+
def klass.job_class(job_klass)
|
27
|
+
has_many :jobs, inverse_of: :workflow, class_name: job_klass.to_s,
|
28
|
+
dependent: :destroy, autosave: true, order: :c_at.asc
|
29
29
|
end
|
30
30
|
|
31
31
|
def klass.load(file_or_hash)
|
@@ -37,19 +37,6 @@ module Libis
|
|
37
37
|
workflow
|
38
38
|
end
|
39
39
|
|
40
|
-
def create_run_object
|
41
|
-
# noinspection RubyResolve
|
42
|
-
self.workflow_runs.build
|
43
|
-
end
|
44
|
-
|
45
|
-
def restart(id, task = nil)
|
46
|
-
# noinspection RubyResolve
|
47
|
-
run_object = self.workflow_runs.select { |run| run.id == id }
|
48
|
-
raise WorkflowError, "Run #{id} not found" unless run_object
|
49
|
-
run_object.restart task
|
50
|
-
run_object
|
51
|
-
end
|
52
|
-
|
53
40
|
end
|
54
41
|
|
55
42
|
end
|
@@ -11,6 +11,7 @@ module Libis
|
|
11
11
|
autoload :Base, 'libis/workflow/mongoid/base'
|
12
12
|
autoload :Config, 'libis/workflow/mongoid/config'
|
13
13
|
autoload :LogEntry, 'libis/workflow/mongoid/log_entry'
|
14
|
+
autoload :Job, 'libis/workflow/mongoid/job'
|
14
15
|
autoload :Run, 'libis/workflow/mongoid/run'
|
15
16
|
autoload :WorkItem, 'libis/workflow/mongoid/work_item'
|
16
17
|
autoload :WorkItemBase, 'libis/workflow/mongoid/work_item_base'
|
data/spec/items/test_run.rb
CHANGED
data/spec/test_job.rb
ADDED
data/spec/test_workflow.rb
CHANGED
data/spec/workflow_spec.rb
CHANGED
@@ -6,6 +6,7 @@ require 'stringio'
|
|
6
6
|
require 'libis-workflow-mongoid'
|
7
7
|
|
8
8
|
require_relative 'spec_helper'
|
9
|
+
require_relative 'test_job'
|
9
10
|
require_relative 'test_workflow'
|
10
11
|
require_relative 'items'
|
11
12
|
|
@@ -53,16 +54,28 @@ describe 'TestWorkflow' do
|
|
53
54
|
checksum_type: {default: 'SHA1', propagate_to: 'ProcessFiles/ChecksumTester'}
|
54
55
|
}
|
55
56
|
)
|
56
|
-
# noinspection RubyResolve
|
57
|
-
@workflow.workflow_runs.each { |run| run.destroy! }
|
58
57
|
@workflow.save
|
59
|
-
|
58
|
+
|
59
|
+
@job = TestJob.find_or_initialize_by(name: 'TestJob')
|
60
|
+
@job.configure(
|
61
|
+
name: 'TestJob',
|
62
|
+
description: 'Job for testing',
|
63
|
+
workflow: @workflow,
|
64
|
+
run_object: 'TestRun',
|
65
|
+
input: {dirname: dirname, checksum_type: 'SHA256'},
|
66
|
+
)
|
67
|
+
|
68
|
+
# noinspection RubyResolve
|
69
|
+
@job.runs.each { |run| run.destroy! }
|
70
|
+
@job.save
|
71
|
+
@run = @job.execute
|
60
72
|
|
61
73
|
end
|
62
74
|
|
63
75
|
def dirname; @dirname; end
|
64
76
|
def logoutput; @logoutput; end
|
65
77
|
def workflow; @workflow; end
|
78
|
+
def job; @job; end
|
66
79
|
def run; @run; end
|
67
80
|
|
68
81
|
it 'should contain three tasks' do
|
@@ -153,11 +166,11 @@ STR
|
|
153
166
|
|
154
167
|
# noinspection RubyResolve
|
155
168
|
it 'find run' do
|
156
|
-
|
157
|
-
expect(
|
158
|
-
expect(
|
159
|
-
|
160
|
-
expect(
|
169
|
+
my_job = TestJob.first
|
170
|
+
expect(my_job).to eq job
|
171
|
+
expect(my_job.runs.all.count).to eq 1
|
172
|
+
my_run = my_job.runs.all.first
|
173
|
+
expect(my_run).to eq run
|
161
174
|
end
|
162
175
|
|
163
176
|
# noinspection RubyResolve
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libis-workflow-mongoid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.beta.
|
4
|
+
version: 2.0.beta.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kris Dekeyser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: libis-workflow
|
@@ -141,6 +141,7 @@ files:
|
|
141
141
|
- lib/libis/workflow/mongoid.rb
|
142
142
|
- lib/libis/workflow/mongoid/base.rb
|
143
143
|
- lib/libis/workflow/mongoid/config.rb
|
144
|
+
- lib/libis/workflow/mongoid/job.rb
|
144
145
|
- lib/libis/workflow/mongoid/log_entry.rb
|
145
146
|
- lib/libis/workflow/mongoid/run.rb
|
146
147
|
- lib/libis/workflow/mongoid/sequence.rb
|
@@ -162,6 +163,7 @@ files:
|
|
162
163
|
- spec/tasks/camelize_name.rb
|
163
164
|
- spec/tasks/checksum_tester.rb
|
164
165
|
- spec/tasks/collect_files.rb
|
166
|
+
- spec/test_job.rb
|
165
167
|
- spec/test_workflow.rb
|
166
168
|
- spec/workflow_spec.rb
|
167
169
|
homepage: https://github.com/libis/workflow-mongoid
|
@@ -200,5 +202,6 @@ test_files:
|
|
200
202
|
- spec/tasks/camelize_name.rb
|
201
203
|
- spec/tasks/checksum_tester.rb
|
202
204
|
- spec/tasks/collect_files.rb
|
205
|
+
- spec/test_job.rb
|
203
206
|
- spec/test_workflow.rb
|
204
207
|
- spec/workflow_spec.rb
|