dor-workflow-client 5.1.0 → 7.0.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/.circleci/config.yml +1 -1
- data/.rubocop.yml +159 -4
- data/.rubocop_todo.yml +24 -42
- data/Gemfile +11 -0
- data/Gemfile.lock +75 -54
- data/dor-workflow-client.gemspec +1 -9
- data/lib/dor/workflow/client/queues.rb +0 -97
- data/lib/dor/workflow/client/status.rb +41 -41
- data/lib/dor/workflow/client/version.rb +1 -1
- data/lib/dor/workflow/client/workflow_routes.rb +1 -9
- data/lib/dor/workflow/client/workflow_template.rb +0 -9
- data/lib/dor/workflow/client.rb +2 -8
- data/spec/{workflow → dor/workflow}/client/connection_factory_spec.rb +7 -5
- data/spec/{workflow → dor/workflow}/client/status_spec.rb +13 -11
- data/spec/{workflow → dor/workflow}/client/workflow_routes_spec.rb +7 -16
- data/spec/{workflow → dor/workflow}/client/workflow_template_spec.rb +1 -10
- data/spec/{workflow → dor/workflow}/client_spec.rb +38 -185
- data/spec/{models → dor/workflow}/response/process_spec.rb +6 -1
- data/spec/{models → dor/workflow}/response/workflow_spec.rb +7 -0
- data/spec/{models → dor/workflow}/response/workflows_spec.rb +4 -3
- metadata +14 -126
- data/spec/{workflow → dor/workflow}/client/lifecycle_routes_spec.rb +2 -2
- /data/spec/{workflow → dor/workflow}/client/requestor_spec.rb +0 -0
- /data/spec/{workflow → dor/workflow}/client/version_routes_spec.rb +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aed52be59d8bdd07de43af3d484e04d7d0aefa98dd8a8813840401a1cd06978c
|
4
|
+
data.tar.gz: d81de9c43e0bc80eb50b02048422a399f77dc2a450db8ecf5aec165cdcc18251
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 672a4500292b005090dddf14ab56bdb8adfc981badaf2840e7c9439d84b996143aa047fbe1948efb9aa2c5b22c188ce02ee8929814fc9a4d072a6bd5aec4d6bd
|
7
|
+
data.tar.gz: 2ede4f3978b2f7e27fc405146b9f106bddd7b9f787c4eb26295ee09fff2c1b7be02145da55f6f9ddae93de7da36c20709116114484da59e4adcc61f55bcc2fd7
|
data/.circleci/config.yml
CHANGED
data/.rubocop.yml
CHANGED
@@ -1,17 +1,37 @@
|
|
1
1
|
inherit_from: .rubocop_todo.yml
|
2
2
|
|
3
|
+
require:
|
4
|
+
- rubocop-rake
|
5
|
+
- rubocop-rspec
|
6
|
+
|
3
7
|
AllCops:
|
4
8
|
TargetRubyVersion: 3.0
|
5
|
-
# Configuration parameters: AllowURI, URISchemes.
|
9
|
+
# Configuration parameters: AllowURI, URISchemes.
|
10
|
+
Exclude:
|
11
|
+
- 'vendor/**/*'
|
12
|
+
|
13
|
+
|
6
14
|
Layout/LineLength:
|
7
15
|
Max: 300
|
8
16
|
|
17
|
+
Lint/UnusedBlockArgument:
|
18
|
+
AllowUnusedKeywordArguments: true
|
19
|
+
|
9
20
|
Metrics/BlockLength:
|
10
21
|
Exclude:
|
11
22
|
- spec/**/*_spec.rb
|
12
23
|
|
13
|
-
|
14
|
-
|
24
|
+
RSpec/ExampleLength:
|
25
|
+
Max: 10
|
26
|
+
|
27
|
+
RSpec/MultipleMemoizedHelpers:
|
28
|
+
Enabled: false
|
29
|
+
|
30
|
+
RSpec/MultipleExpectations:
|
31
|
+
Enabled: false
|
32
|
+
|
33
|
+
RSpec/NestedGroups:
|
34
|
+
Max: 4
|
15
35
|
|
16
36
|
Gemspec/DeprecatedAttributeAssignment: # new in 1.10
|
17
37
|
Enabled: true
|
@@ -143,4 +163,139 @@ Style/NestedFileDirname: # new in 1.26
|
|
143
163
|
Style/ObjectThen: # new in 1.28
|
144
164
|
Enabled: true
|
145
165
|
Style/RedundantInitialize: # new in 1.27
|
146
|
-
Enabled: true
|
166
|
+
Enabled: true
|
167
|
+
|
168
|
+
Lint/DuplicateMagicComment: # new in 1.37
|
169
|
+
Enabled: true
|
170
|
+
Lint/DuplicateMatchPattern: # new in 1.50
|
171
|
+
Enabled: true
|
172
|
+
Lint/UselessRescue: # new in 1.43
|
173
|
+
Enabled: true
|
174
|
+
Metrics/CollectionLiteralLength: # new in 1.47
|
175
|
+
Enabled: true
|
176
|
+
Style/ArrayIntersect: # new in 1.40
|
177
|
+
Enabled: true
|
178
|
+
Style/ComparableClamp: # new in 1.44
|
179
|
+
Enabled: true
|
180
|
+
Style/ConcatArrayLiterals: # new in 1.41
|
181
|
+
Enabled: true
|
182
|
+
Style/DataInheritance: # new in 1.49
|
183
|
+
Enabled: true
|
184
|
+
Style/DirEmpty: # new in 1.48
|
185
|
+
Enabled: true
|
186
|
+
Style/ExactRegexpMatch: # new in 1.51
|
187
|
+
Enabled: true
|
188
|
+
Style/FileEmpty: # new in 1.48
|
189
|
+
Enabled: true
|
190
|
+
Style/MagicCommentFormat: # new in 1.35
|
191
|
+
Enabled: true
|
192
|
+
Style/MapToSet: # new in 1.42
|
193
|
+
Enabled: true
|
194
|
+
Style/MinMaxComparison: # new in 1.42
|
195
|
+
Enabled: true
|
196
|
+
Style/OperatorMethodCall: # new in 1.37
|
197
|
+
Enabled: true
|
198
|
+
Style/RedundantArrayConstructor: # new in 1.52
|
199
|
+
Enabled: true
|
200
|
+
Style/RedundantConstantBase: # new in 1.40
|
201
|
+
Enabled: true
|
202
|
+
Style/RedundantDoubleSplatHashBraces: # new in 1.41
|
203
|
+
Enabled: true
|
204
|
+
Style/RedundantEach: # new in 1.38
|
205
|
+
Enabled: true
|
206
|
+
Style/RedundantFilterChain: # new in 1.52
|
207
|
+
Enabled: true
|
208
|
+
Style/RedundantHeredocDelimiterQuotes: # new in 1.45
|
209
|
+
Enabled: true
|
210
|
+
Style/RedundantLineContinuation: # new in 1.49
|
211
|
+
Enabled: true
|
212
|
+
Style/RedundantRegexpConstructor: # new in 1.52
|
213
|
+
Enabled: true
|
214
|
+
Style/RedundantStringEscape: # new in 1.37
|
215
|
+
Enabled: true
|
216
|
+
|
217
|
+
Capybara/MatchStyle: # new in 2.17
|
218
|
+
Enabled: true
|
219
|
+
Capybara/NegationMatcher: # new in 2.14
|
220
|
+
Enabled: true
|
221
|
+
Capybara/SpecificActions: # new in 2.14
|
222
|
+
Enabled: true
|
223
|
+
Capybara/SpecificFinders: # new in 2.13
|
224
|
+
Enabled: true
|
225
|
+
Capybara/SpecificMatcher: # new in 2.12
|
226
|
+
Enabled: true
|
227
|
+
FactoryBot/AssociationStyle: # new in 2.23
|
228
|
+
Enabled: true
|
229
|
+
FactoryBot/ConsistentParenthesesStyle: # new in 2.14
|
230
|
+
Enabled: true
|
231
|
+
FactoryBot/FactoryAssociationWithStrategy: # new in 2.23
|
232
|
+
Enabled: true
|
233
|
+
FactoryBot/FactoryNameStyle: # new in 2.16
|
234
|
+
Enabled: true
|
235
|
+
FactoryBot/RedundantFactoryOption: # new in 2.23
|
236
|
+
Enabled: true
|
237
|
+
FactoryBot/SyntaxMethods: # new in 2.7
|
238
|
+
Enabled: true
|
239
|
+
RSpec/BeEmpty: # new in 2.20
|
240
|
+
Enabled: true
|
241
|
+
RSpec/BeEq: # new in 2.9.0
|
242
|
+
Enabled: true
|
243
|
+
RSpec/BeNil: # new in 2.9.0
|
244
|
+
Enabled: true
|
245
|
+
RSpec/ChangeByZero: # new in 2.11
|
246
|
+
Enabled: true
|
247
|
+
RSpec/ContainExactly: # new in 2.19
|
248
|
+
Enabled: true
|
249
|
+
RSpec/DuplicatedMetadata: # new in 2.16
|
250
|
+
Enabled: true
|
251
|
+
RSpec/ExcessiveDocstringSpacing: # new in 2.5
|
252
|
+
Enabled: true
|
253
|
+
RSpec/IdenticalEqualityAssertion: # new in 2.4
|
254
|
+
Enabled: true
|
255
|
+
RSpec/IndexedLet: # new in 2.20
|
256
|
+
Enabled: true
|
257
|
+
RSpec/MatchArray: # new in 2.19
|
258
|
+
Enabled: true
|
259
|
+
RSpec/NoExpectationExample: # new in 2.13
|
260
|
+
Enabled: true
|
261
|
+
RSpec/PendingWithoutReason: # new in 2.16
|
262
|
+
Enabled: true
|
263
|
+
RSpec/RedundantAround: # new in 2.19
|
264
|
+
Enabled: true
|
265
|
+
RSpec/SkipBlockInsideExample: # new in 2.19
|
266
|
+
Enabled: true
|
267
|
+
RSpec/SortMetadata: # new in 2.14
|
268
|
+
Enabled: true
|
269
|
+
RSpec/SubjectDeclaration: # new in 2.5
|
270
|
+
Enabled: true
|
271
|
+
RSpec/VerifiedDoubleReference: # new in 2.10.0
|
272
|
+
Enabled: true
|
273
|
+
RSpec/Rails/AvoidSetupHook: # new in 2.4
|
274
|
+
Enabled: true
|
275
|
+
RSpec/Rails/HaveHttpStatus: # new in 2.12
|
276
|
+
Enabled: true
|
277
|
+
RSpec/Rails/InferredSpecType: # new in 2.14
|
278
|
+
Enabled: true
|
279
|
+
RSpec/Rails/MinitestAssertions: # new in 2.17
|
280
|
+
Enabled: true
|
281
|
+
RSpec/Rails/TravelAround: # new in 2.19
|
282
|
+
Enabled: true
|
283
|
+
|
284
|
+
Gemspec/DevelopmentDependencies: # new in 1.44
|
285
|
+
Enabled: true
|
286
|
+
Lint/MixedCaseRange: # new in 1.53
|
287
|
+
Enabled: true
|
288
|
+
Lint/RedundantRegexpQuantifiers: # new in 1.53
|
289
|
+
Enabled: true
|
290
|
+
Style/RedundantCurrentDirectoryInPath: # new in 1.53
|
291
|
+
Enabled: true
|
292
|
+
Style/RedundantRegexpArgument: # new in 1.53
|
293
|
+
Enabled: true
|
294
|
+
Style/ReturnNilInPredicateMethodDefinition: # new in 1.53
|
295
|
+
Enabled: true
|
296
|
+
Style/YAMLFileRead: # new in 1.53
|
297
|
+
Enabled: true
|
298
|
+
RSpec/ReceiveMessages: # new in 2.23
|
299
|
+
Enabled: true
|
300
|
+
RSpec/Rails/NegationBeValid: # new in 2.23
|
301
|
+
Enabled: true
|
data/.rubocop_todo.yml
CHANGED
@@ -1,58 +1,40 @@
|
|
1
1
|
# This configuration was generated by
|
2
|
-
# `rubocop --auto-gen-config`
|
3
|
-
# on
|
2
|
+
# `rubocop --auto-gen-config --auto-gen-only-exclude`
|
3
|
+
# on 2023-08-23 21:27:28 UTC using RuboCop version 1.56.1.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
8
8
|
|
9
|
-
# Offense count: 1
|
10
|
-
# Configuration parameters: Include.
|
11
|
-
# Include: **/*.gemspec
|
12
|
-
Gemspec/RequiredRubyVersion:
|
13
|
-
Exclude:
|
14
|
-
- 'dor-workflow-client.gemspec'
|
15
|
-
|
16
|
-
# Offense count: 1
|
17
|
-
# Configuration parameters: AllowComments, AllowEmptyLambdas.
|
18
|
-
Lint/EmptyBlock:
|
19
|
-
Exclude:
|
20
|
-
- 'spec/workflow/client/workflow_routes_spec.rb'
|
21
|
-
|
22
|
-
# Offense count: 1
|
23
|
-
Lint/NoReturnInBeginEndBlocks:
|
24
|
-
Exclude:
|
25
|
-
- 'lib/dor/workflow/client/status.rb'
|
26
|
-
|
27
|
-
# Offense count: 5
|
28
|
-
# Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
|
29
|
-
Metrics/AbcSize:
|
30
|
-
Max: 23
|
31
|
-
|
32
9
|
# Offense count: 2
|
33
|
-
# Configuration parameters:
|
34
|
-
Metrics/
|
35
|
-
|
10
|
+
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes, Max.
|
11
|
+
Metrics/AbcSize:
|
12
|
+
Exclude:
|
13
|
+
- 'lib/dor/workflow/client/connection_factory.rb'
|
14
|
+
- 'lib/dor/workflow/client/queues.rb'
|
36
15
|
|
37
16
|
# Offense count: 2
|
38
|
-
# Configuration parameters: CountComments, CountAsOne,
|
17
|
+
# Configuration parameters: CountComments, Max, CountAsOne, AllowedMethods, AllowedPatterns.
|
39
18
|
Metrics/MethodLength:
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
# Configuration parameters: CountKeywordArgs, MaxOptionalParameters.
|
44
|
-
Metrics/ParameterLists:
|
45
|
-
Max: 8
|
19
|
+
Exclude:
|
20
|
+
- 'lib/dor/workflow/client/connection_factory.rb'
|
21
|
+
- 'lib/dor/workflow/client/queues.rb'
|
46
22
|
|
47
23
|
# Offense count: 1
|
48
|
-
#
|
49
|
-
|
24
|
+
# Configuration parameters: Max, CountKeywordArgs, MaxOptionalParameters.
|
25
|
+
Metrics/ParameterLists:
|
50
26
|
Exclude:
|
51
27
|
- 'lib/dor/workflow/client/workflow_routes.rb'
|
52
28
|
|
53
|
-
# Offense count:
|
54
|
-
#
|
55
|
-
|
56
|
-
|
29
|
+
# Offense count: 73
|
30
|
+
# Configuration parameters: AssignmentOnly.
|
31
|
+
RSpec/InstanceVariable:
|
32
|
+
Exclude:
|
33
|
+
- 'spec/dor/workflow/client_spec.rb'
|
34
|
+
|
35
|
+
# Offense count: 7
|
36
|
+
# Configuration parameters: IgnoreNameless, IgnoreSymbolicNames.
|
37
|
+
RSpec/VerifiedDoubles:
|
57
38
|
Exclude:
|
58
|
-
- '
|
39
|
+
- 'spec/dor/workflow/client/connection_factory_spec.rb'
|
40
|
+
- 'spec/dor/workflow/client_spec.rb'
|
data/Gemfile
CHANGED
@@ -11,3 +11,14 @@ group :development, :test do
|
|
11
11
|
gem 'byebug'
|
12
12
|
gem 'rspec_junit_formatter' # For CircleCI
|
13
13
|
end
|
14
|
+
|
15
|
+
group :development do
|
16
|
+
gem 'rake'
|
17
|
+
gem 'rspec', '~> 3.3'
|
18
|
+
gem 'rubocop', '~> 1.24'
|
19
|
+
gem 'rubocop-rake'
|
20
|
+
gem 'rubocop-rspec', '~> 2.1'
|
21
|
+
gem 'simplecov'
|
22
|
+
gem 'webmock'
|
23
|
+
gem 'yard'
|
24
|
+
end
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
dor-workflow-client (
|
4
|
+
dor-workflow-client (7.0.0)
|
5
5
|
activesupport (>= 3.2.1, < 8)
|
6
6
|
deprecation (>= 0.99.0)
|
7
7
|
faraday (~> 2.0)
|
@@ -12,96 +12,117 @@ PATH
|
|
12
12
|
GEM
|
13
13
|
remote: https://rubygems.org/
|
14
14
|
specs:
|
15
|
-
activesupport (7.
|
15
|
+
activesupport (7.1.2)
|
16
|
+
base64
|
17
|
+
bigdecimal
|
16
18
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
19
|
+
connection_pool (>= 2.2.5)
|
20
|
+
drb
|
17
21
|
i18n (>= 1.6, < 2)
|
18
22
|
minitest (>= 5.1)
|
23
|
+
mutex_m
|
19
24
|
tzinfo (~> 2.0)
|
20
|
-
addressable (2.8.
|
21
|
-
public_suffix (>= 2.0.2, <
|
25
|
+
addressable (2.8.6)
|
26
|
+
public_suffix (>= 2.0.2, < 6.0)
|
22
27
|
ast (2.4.2)
|
28
|
+
base64 (0.2.0)
|
29
|
+
bigdecimal (3.1.5)
|
23
30
|
byebug (11.1.3)
|
24
|
-
concurrent-ruby (1.
|
31
|
+
concurrent-ruby (1.2.2)
|
32
|
+
connection_pool (2.4.1)
|
25
33
|
crack (0.4.5)
|
26
34
|
rexml
|
27
35
|
deprecation (1.1.0)
|
28
36
|
activesupport
|
29
37
|
diff-lcs (1.5.0)
|
30
38
|
docile (1.4.0)
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
faraday-
|
39
|
+
drb (2.2.0)
|
40
|
+
ruby2_keywords
|
41
|
+
faraday (2.9.0)
|
42
|
+
faraday-net_http (>= 2.0, < 3.2)
|
43
|
+
faraday-net_http (3.1.0)
|
44
|
+
net-http
|
45
|
+
faraday-retry (2.2.0)
|
36
46
|
faraday (~> 2.0)
|
37
|
-
hashdiff (1.0
|
38
|
-
i18n (1.
|
47
|
+
hashdiff (1.1.0)
|
48
|
+
i18n (1.14.1)
|
39
49
|
concurrent-ruby (~> 1.0)
|
40
|
-
json (2.
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
50
|
+
json (2.7.1)
|
51
|
+
language_server-protocol (3.17.0.3)
|
52
|
+
mini_portile2 (2.8.5)
|
53
|
+
minitest (5.21.1)
|
54
|
+
mutex_m (0.2.0)
|
55
|
+
net-http (0.4.1)
|
56
|
+
uri
|
57
|
+
nokogiri (1.16.0)
|
58
|
+
mini_portile2 (~> 2.8.2)
|
45
59
|
racc (~> 1.4)
|
46
|
-
parallel (1.
|
47
|
-
parser (3.
|
60
|
+
parallel (1.24.0)
|
61
|
+
parser (3.3.0.3)
|
48
62
|
ast (~> 2.4.1)
|
49
|
-
|
50
|
-
|
63
|
+
racc
|
64
|
+
public_suffix (5.0.4)
|
65
|
+
racc (1.7.3)
|
51
66
|
rainbow (3.1.1)
|
52
|
-
rake (13.0
|
53
|
-
regexp_parser (2.
|
54
|
-
rexml (3.2.
|
55
|
-
rspec (3.
|
56
|
-
rspec-core (~> 3.
|
57
|
-
rspec-expectations (~> 3.
|
58
|
-
rspec-mocks (~> 3.
|
59
|
-
rspec-core (3.
|
60
|
-
rspec-support (~> 3.
|
61
|
-
rspec-expectations (3.
|
67
|
+
rake (13.1.0)
|
68
|
+
regexp_parser (2.9.0)
|
69
|
+
rexml (3.2.6)
|
70
|
+
rspec (3.12.0)
|
71
|
+
rspec-core (~> 3.12.0)
|
72
|
+
rspec-expectations (~> 3.12.0)
|
73
|
+
rspec-mocks (~> 3.12.0)
|
74
|
+
rspec-core (3.12.2)
|
75
|
+
rspec-support (~> 3.12.0)
|
76
|
+
rspec-expectations (3.12.3)
|
62
77
|
diff-lcs (>= 1.2.0, < 2.0)
|
63
|
-
rspec-support (~> 3.
|
64
|
-
rspec-mocks (3.
|
78
|
+
rspec-support (~> 3.12.0)
|
79
|
+
rspec-mocks (3.12.6)
|
65
80
|
diff-lcs (>= 1.2.0, < 2.0)
|
66
|
-
rspec-support (~> 3.
|
67
|
-
rspec-support (3.
|
68
|
-
rspec_junit_formatter (0.
|
81
|
+
rspec-support (~> 3.12.0)
|
82
|
+
rspec-support (3.12.1)
|
83
|
+
rspec_junit_formatter (0.6.0)
|
69
84
|
rspec-core (>= 2, < 4, != 2.12.0)
|
70
|
-
rubocop (1.
|
85
|
+
rubocop (1.60.0)
|
71
86
|
json (~> 2.3)
|
87
|
+
language_server-protocol (>= 3.17.0)
|
72
88
|
parallel (~> 1.10)
|
73
|
-
parser (>= 3.
|
89
|
+
parser (>= 3.3.0.2)
|
74
90
|
rainbow (>= 2.2.2, < 4.0)
|
75
91
|
regexp_parser (>= 1.8, < 3.0)
|
76
92
|
rexml (>= 3.2.5, < 4.0)
|
77
|
-
rubocop-ast (>= 1.
|
93
|
+
rubocop-ast (>= 1.30.0, < 2.0)
|
78
94
|
ruby-progressbar (~> 1.7)
|
79
|
-
unicode-display_width (>=
|
80
|
-
rubocop-ast (1.
|
81
|
-
parser (>= 3.
|
95
|
+
unicode-display_width (>= 2.4.0, < 3.0)
|
96
|
+
rubocop-ast (1.30.0)
|
97
|
+
parser (>= 3.2.1.0)
|
98
|
+
rubocop-capybara (2.20.0)
|
99
|
+
rubocop (~> 1.41)
|
100
|
+
rubocop-factory_bot (2.25.1)
|
101
|
+
rubocop (~> 1.41)
|
82
102
|
rubocop-rake (0.6.0)
|
83
103
|
rubocop (~> 1.0)
|
84
|
-
rubocop-rspec (2.
|
85
|
-
rubocop (~> 1.
|
86
|
-
|
104
|
+
rubocop-rspec (2.26.1)
|
105
|
+
rubocop (~> 1.40)
|
106
|
+
rubocop-capybara (~> 2.17)
|
107
|
+
rubocop-factory_bot (~> 2.22)
|
108
|
+
ruby-progressbar (1.13.0)
|
87
109
|
ruby2_keywords (0.0.5)
|
88
|
-
simplecov (0.
|
110
|
+
simplecov (0.22.0)
|
89
111
|
docile (~> 1.1)
|
90
112
|
simplecov-html (~> 0.11)
|
91
113
|
simplecov_json_formatter (~> 0.1)
|
92
114
|
simplecov-html (0.12.3)
|
93
115
|
simplecov_json_formatter (0.1.4)
|
94
|
-
tzinfo (2.0.
|
116
|
+
tzinfo (2.0.6)
|
95
117
|
concurrent-ruby (~> 1.0)
|
96
|
-
unicode-display_width (2.
|
97
|
-
|
118
|
+
unicode-display_width (2.5.0)
|
119
|
+
uri (0.13.0)
|
120
|
+
webmock (3.19.1)
|
98
121
|
addressable (>= 2.8.0)
|
99
122
|
crack (>= 0.3.2)
|
100
123
|
hashdiff (>= 0.4.0, < 2.0.0)
|
101
|
-
|
102
|
-
|
103
|
-
webrick (~> 1.7.0)
|
104
|
-
zeitwerk (2.6.0)
|
124
|
+
yard (0.9.34)
|
125
|
+
zeitwerk (2.6.12)
|
105
126
|
|
106
127
|
PLATFORMS
|
107
128
|
ruby
|
@@ -120,4 +141,4 @@ DEPENDENCIES
|
|
120
141
|
yard
|
121
142
|
|
122
143
|
BUNDLED WITH
|
123
|
-
2.
|
144
|
+
2.4.13
|
data/dor-workflow-client.gemspec
CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |gem|
|
|
15
15
|
|
16
16
|
gem.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
17
17
|
gem.require_paths = ['lib']
|
18
|
-
gem.required_ruby_version = '>=
|
18
|
+
gem.required_ruby_version = '>= 3.0'
|
19
19
|
|
20
20
|
gem.add_dependency 'activesupport', '>= 3.2.1', '< 8'
|
21
21
|
gem.add_dependency 'deprecation', '>= 0.99.0'
|
@@ -25,13 +25,5 @@ Gem::Specification.new do |gem|
|
|
25
25
|
gem.add_dependency 'nokogiri', '~> 1.6'
|
26
26
|
gem.add_dependency 'zeitwerk', '~> 2.1'
|
27
27
|
|
28
|
-
gem.add_development_dependency 'rake'
|
29
|
-
gem.add_development_dependency 'rspec', '~> 3.3'
|
30
|
-
gem.add_development_dependency 'rubocop', '~> 1.24'
|
31
|
-
gem.add_development_dependency 'rubocop-rake'
|
32
|
-
gem.add_development_dependency 'rubocop-rspec', '~> 2.1'
|
33
|
-
gem.add_development_dependency 'simplecov'
|
34
|
-
gem.add_development_dependency 'webmock'
|
35
|
-
gem.add_development_dependency 'yard'
|
36
28
|
gem.metadata['rubygems_mfa_required'] = 'true'
|
37
29
|
end
|
@@ -20,30 +20,6 @@ module Dor
|
|
20
20
|
doc.xpath('/lanes/lane').map { |n| n['id'] }
|
21
21
|
end
|
22
22
|
|
23
|
-
# Gets all of the workflow steps that have a status of 'queued' that have a last-updated timestamp older than the number of hours passed in
|
24
|
-
# This will enable re-queueing of jobs that have been lost by the job manager
|
25
|
-
# @param [Hash] opts optional values for query
|
26
|
-
# @option opts [Integer] :hours_ago steps older than this value will be returned by the query. If not passed in, the service defaults to 0 hours,
|
27
|
-
# meaning you will get all queued workflows
|
28
|
-
# @option opts [Integer] :limit sets the maximum number of workflow steps that can be returned. Defaults to no limit
|
29
|
-
# @return [Array[Hash]] each Hash represents a workflow step. It will have the following keys:
|
30
|
-
# :workflow, :step, :druid, :lane_id
|
31
|
-
def stale_queued_workflows(opts)
|
32
|
-
uri_string = build_queued_uri(opts)
|
33
|
-
parse_queued_workflows_response requestor.request(uri_string)
|
34
|
-
end
|
35
|
-
|
36
|
-
# Returns a count of workflow steps that have a status of 'queued' that have a last-updated timestamp older than the number of hours passed in
|
37
|
-
# @param [Hash] opts optional values for query
|
38
|
-
# @option opts [Integer] :hours_ago steps older than this value will be returned by the query. If not passed in, the service defaults to 0 hours,
|
39
|
-
# meaning you will get all queued workflows
|
40
|
-
# @return [Integer] number of stale, queued steps if the :count_only option was set to true
|
41
|
-
def count_stale_queued_workflows(opts)
|
42
|
-
uri_string = "#{build_queued_uri(opts)}&count-only=true"
|
43
|
-
doc = Nokogiri::XML(requestor.request(uri_string))
|
44
|
-
doc.at_xpath('/objects/@count').value.to_i
|
45
|
-
end
|
46
|
-
|
47
23
|
# Returns a list of druids from the workflow service that meet the criteria
|
48
24
|
# of the passed in completed and waiting params
|
49
25
|
#
|
@@ -104,65 +80,10 @@ module Dor
|
|
104
80
|
Nokogiri::XML(resp).xpath('//object[@id]').map { |n| n[:id] }
|
105
81
|
end
|
106
82
|
|
107
|
-
# Get a list of druids that have errored out in a particular workflow and step
|
108
|
-
#
|
109
|
-
# @param [String] workflow name
|
110
|
-
# @param [String] step name
|
111
|
-
#
|
112
|
-
# @return [Hash] hash of results, with key has a druid, and value as the error message
|
113
|
-
# @example
|
114
|
-
# client.errored_objects_for_workstep('accessionWF','content-metadata')
|
115
|
-
# => {"druid:qd556jq0580"=>"druid:qd556jq0580 - Item error; caused by
|
116
|
-
# blah blah. See logger for details>"}
|
117
|
-
def errored_objects_for_workstep(workflow, step)
|
118
|
-
resp = requestor.request "workflow_queue?workflow=#{workflow}&error=#{step}"
|
119
|
-
Nokogiri::XML(resp).xpath('//object').to_h do |node|
|
120
|
-
[node['id'], node['errorMessage']]
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
# Used by preservation robots stats reporter
|
125
|
-
#
|
126
|
-
# @param [String] workflow name
|
127
|
-
# @param [String] step name
|
128
|
-
# @param [String] type
|
129
|
-
#
|
130
|
-
# @return [Hash] hash of results, with key has a druid, and value as the error message
|
131
|
-
def count_objects_in_step(workflow, step, type)
|
132
|
-
resp = requestor.request "workflow_queue?workflow=#{workflow}&#{type}=#{step}"
|
133
|
-
extract_object_count(resp)
|
134
|
-
end
|
135
|
-
|
136
|
-
# Returns the number of objects that have a status of 'error' in a particular workflow and step
|
137
|
-
#
|
138
|
-
# @param [String] workflow name
|
139
|
-
# @param [String] step name
|
140
|
-
#
|
141
|
-
# @return [Integer] Number of objects with this repository:workflow:step that have a status of 'error'
|
142
|
-
def count_errored_for_workstep(workflow, step)
|
143
|
-
count_objects_in_step(workflow, step, 'error')
|
144
|
-
end
|
145
|
-
|
146
|
-
# Returns the number of objects that have a status of 'queued' in a particular workflow and step
|
147
|
-
#
|
148
|
-
# @param [String] workflow name
|
149
|
-
# @param [String] step name
|
150
|
-
#
|
151
|
-
# @return [Integer] Number of objects with this repository:workflow:step that have a status of 'queued'
|
152
|
-
def count_queued_for_workstep(workflow, step)
|
153
|
-
count_objects_in_step(workflow, step, 'queued')
|
154
|
-
end
|
155
|
-
|
156
83
|
private
|
157
84
|
|
158
85
|
attr_reader :requestor
|
159
86
|
|
160
|
-
def build_queued_uri(opts = {})
|
161
|
-
query_hash = opts.slice(:hours_ago, :limit).transform_keys { |key| key.to_s.tr('_', '-') }
|
162
|
-
query_string = URI.encode_www_form(query_hash)
|
163
|
-
"workflow_queue/all_queued?#{query_string}"
|
164
|
-
end
|
165
|
-
|
166
87
|
# Converts workflow-step into workflow:step
|
167
88
|
# @param [String] default_workflow
|
168
89
|
# @param [String] step if contains colon :, then the value for workflow and/or workflow/repository. For example: 'jp2-create', 'assemblyWF:jp2-create' or 'dor:assemblyWF:jp2-create'
|
@@ -174,24 +95,6 @@ module Dor
|
|
174
95
|
current.unshift(default_workflow) if current.length < 2
|
175
96
|
current.join(':')
|
176
97
|
end
|
177
|
-
|
178
|
-
def parse_queued_workflows_response(xml)
|
179
|
-
Nokogiri::XML(xml).xpath('/workflows/workflow').collect do |wf_node|
|
180
|
-
{
|
181
|
-
workflow: wf_node['name'],
|
182
|
-
step: wf_node['process'],
|
183
|
-
druid: wf_node['druid'],
|
184
|
-
lane_id: wf_node['laneId']
|
185
|
-
}
|
186
|
-
end
|
187
|
-
end
|
188
|
-
|
189
|
-
def extract_object_count(resp)
|
190
|
-
node = Nokogiri::XML(resp).at_xpath('/objects')
|
191
|
-
raise Dor::WorkflowException, 'Unable to determine count from response' if node.nil?
|
192
|
-
|
193
|
-
node['count'].to_i
|
194
|
-
end
|
195
98
|
end
|
196
99
|
end
|
197
100
|
end
|