assembly-utils 1.4.6 → 1.5.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/.rubocop.yml +1 -2
- data/README.md +1 -0
- data/assembly-utils.gemspec +1 -7
- data/config/boot.rb +0 -2
- data/lib/assembly-utils/utils.rb +18 -20
- data/lib/assembly-utils/version.rb +1 -1
- data/spec/spec_helper.rb +2 -1
- data/spec/test_data/druids.csv +4 -0
- data/spec/utils_spec.rb +8 -0
- metadata +7 -76
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c19397f0ebcaf5de55f5688ad4ba4b200381bd3
|
4
|
+
data.tar.gz: 969da5c2c4405fad4b673ce1e9a9440ffe2a9bb8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c2737172052da178d7406749e03fba104e6eadc7c670eb84f0a95f70bf530b2ffe236cf9f5d35c8cdecfed850f4dcf45e4ed5a22c925638592409196c1c0ee9
|
7
|
+
data.tar.gz: ff3d45febaa56d776f2cf4d1e9b56ae60d116b11a587bc631f503abf8d2b28fe4a62aae91d51787011f27524ed1c385b6ecb2196808f2a51573213f74889b55d
|
data/.rubocop.yml
CHANGED
data/README.md
CHANGED
@@ -49,6 +49,7 @@ manipulate DOR objects for assembly and accessioning.
|
|
49
49
|
* 1.2.8 add a new constant for technical metadata filename
|
50
50
|
* 1.4.1-2 update gems and fix typos
|
51
51
|
* 1.4.6 rubocop fixes, and other refactoring
|
52
|
+
* 1.5.0 relax dependency pinning to support rails 5, and dor-workflow-service
|
52
53
|
|
53
54
|
## Running tests
|
54
55
|
|
data/assembly-utils.gemspec
CHANGED
@@ -18,15 +18,9 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.require_paths = ['lib']
|
19
19
|
|
20
20
|
s.add_dependency 'nokogiri'
|
21
|
-
s.add_dependency 'csv-mapper'
|
22
|
-
s.add_dependency 'fastercsv'
|
23
21
|
s.add_dependency 'druid-tools', '>= 0.2.6'
|
24
22
|
|
25
|
-
s.add_dependency 'dor-services', '~> 5.
|
26
|
-
s.add_dependency 'dor-workflow-service', '>=1.3.1'
|
27
|
-
|
28
|
-
s.add_dependency 'activesupport'
|
29
|
-
s.add_dependency 'activeresource'
|
23
|
+
s.add_dependency 'dor-services', '~> 5.5'
|
30
24
|
|
31
25
|
s.add_development_dependency 'rake'
|
32
26
|
s.add_development_dependency 'rspec', '~> 3.1'
|
data/config/boot.rb
CHANGED
data/lib/assembly-utils/utils.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'net/ssh'
|
2
2
|
require 'csv'
|
3
|
-
require 'csv-mapper'
|
4
3
|
require 'druid-tools'
|
5
4
|
|
6
5
|
begin
|
@@ -11,7 +10,6 @@ end
|
|
11
10
|
module Assembly
|
12
11
|
# The Utils class contains methods to help with accessioning and assembly
|
13
12
|
class Utils
|
14
|
-
WFS = Dor::WorkflowService
|
15
13
|
REPO = 'dor'
|
16
14
|
|
17
15
|
# Get the staging directory tree given a druid, and optionally prepend a basepath.
|
@@ -163,7 +161,7 @@ module Assembly
|
|
163
161
|
# puts Assembly::Utils.get_workflow_status('druid:aa000aa0001','assemblyWF','jp2-create')
|
164
162
|
# > "completed"
|
165
163
|
def self.get_workflow_status(druid, workflow, step)
|
166
|
-
Dor::
|
164
|
+
Dor::Config.workflow.client.get_workflow_status('dor', druid, workflow, step)
|
167
165
|
end
|
168
166
|
|
169
167
|
# Cleanup a list of objects and associated files given a list of druids. WARNING: VERY DESTRUCTIVE.
|
@@ -264,8 +262,8 @@ module Assembly
|
|
264
262
|
if steps.include?(:workflows)
|
265
263
|
puts "-- deleting #{pid} accessionWF and assemblyWF workflows from Fedora #{ENV['ROBOT_ENVIRONMENT']}"
|
266
264
|
unless dry_run
|
267
|
-
Dor::
|
268
|
-
Dor::
|
265
|
+
Dor::Config.workflow.client.delete_workflow('dor', pid, 'accessionWF')
|
266
|
+
Dor::Config.workflow.client.delete_workflow('dor', pid, 'assemblyWF')
|
269
267
|
end
|
270
268
|
end
|
271
269
|
rescue Exception => e
|
@@ -428,7 +426,7 @@ module Assembly
|
|
428
426
|
wf_name = Assembly::ASSEMBLY_WF
|
429
427
|
msg = 'Integration testing'
|
430
428
|
params = ['dor', pid, wf_name, step, msg]
|
431
|
-
resp = Dor::
|
429
|
+
resp = Dor::Config.workflow.client.update_workflow_error_status *params
|
432
430
|
raise 'update_workflow_error_status() returned false.' unless resp == true
|
433
431
|
end
|
434
432
|
|
@@ -440,7 +438,7 @@ module Assembly
|
|
440
438
|
# e.g.
|
441
439
|
# Assembly::Utils.delete_all_workflows('druid:oo000oo0001')
|
442
440
|
def self.delete_all_workflows(pid, repo = 'dor')
|
443
|
-
Dor::
|
441
|
+
Dor::Config.workflow.client.get_workflows(pid).each {|workflow| Dor::Config.workflow.client.delete_workflow(repo, pid, workflow)}
|
444
442
|
end
|
445
443
|
|
446
444
|
# Reindex the supplied PID in solr.
|
@@ -460,7 +458,7 @@ module Assembly
|
|
460
458
|
repo = 'dor'
|
461
459
|
wf = 'assemblyWF'
|
462
460
|
msg = 'Integration testing'
|
463
|
-
wfs = Dor::
|
461
|
+
wfs = Dor::Config.workflow.client
|
464
462
|
steps = Assembly::ASSEMBLY_WF_STEPS.map { |s| s[0] }
|
465
463
|
completed = steps[0]
|
466
464
|
|
@@ -483,7 +481,7 @@ module Assembly
|
|
483
481
|
# Assembly::Utils.is_ingested?('druid:oo000oo0001')
|
484
482
|
# > false
|
485
483
|
def self.is_ingested?(pid)
|
486
|
-
|
484
|
+
Dor::Config.workflow.client.get_lifecycle(REPO, pid, 'accessioned') ? true : false
|
487
485
|
end
|
488
486
|
|
489
487
|
# Check if the object is currently in accessioning
|
@@ -495,7 +493,7 @@ module Assembly
|
|
495
493
|
# Assembly::Utils.in_accessioning?('druid:oo000oo0001')
|
496
494
|
# > false
|
497
495
|
def self.in_accessioning?(pid)
|
498
|
-
|
496
|
+
Dor::Config.workflow.client.get_active_lifecycle(REPO, pid, 'submitted') ? true : false
|
499
497
|
end
|
500
498
|
|
501
499
|
# Check if the object is on ingest hold
|
@@ -507,7 +505,7 @@ module Assembly
|
|
507
505
|
# Assembly::Utils.ingest_hold?('druid:oo000oo0001')
|
508
506
|
# > false
|
509
507
|
def self.ingest_hold?(pid)
|
510
|
-
|
508
|
+
Dor::Config.workflow.client.get_workflow_status(REPO, pid, 'accessionWF', 'sdr-ingest-transfer') == 'hold'
|
511
509
|
end
|
512
510
|
|
513
511
|
# Check if the object is submitted
|
@@ -519,7 +517,7 @@ module Assembly
|
|
519
517
|
# Assembly::Utils.is_submitted?('druid:oo000oo0001')
|
520
518
|
# > false
|
521
519
|
def self.is_submitted?(pid)
|
522
|
-
|
520
|
+
Dor::Config.workflow.client.get_lifecycle(REPO, pid, 'submitted').nil?
|
523
521
|
end
|
524
522
|
|
525
523
|
# Check if the updates are allowed on the object
|
@@ -570,7 +568,7 @@ module Assembly
|
|
570
568
|
workflows.each do |workflow, steps|
|
571
569
|
steps.each do |step|
|
572
570
|
puts "Updating #{workflow}:#{step} to #{state}"
|
573
|
-
Dor::
|
571
|
+
Dor::Config.workflow.client.update_workflow_status 'dor', druid, workflow, step, state
|
574
572
|
end
|
575
573
|
end
|
576
574
|
rescue Exception => e
|
@@ -587,14 +585,14 @@ module Assembly
|
|
587
585
|
# Example:
|
588
586
|
# Assembly::Utils.read_druids_from_file('download.csv') # ['druid:xxxxx', 'druid:yyyyy']
|
589
587
|
def self.read_druids_from_file(csv_filename)
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
druid = row
|
588
|
+
return to_enum(:read_druids_from_file, csv_filename) unless block_given?
|
589
|
+
|
590
|
+
CSV.foreach(csv_filename, :headers => true) do |row|
|
591
|
+
druid = row['druid']
|
594
592
|
druid = "druid:#{druid}" unless druid.include?('druid:')
|
595
|
-
|
593
|
+
|
594
|
+
yield druid
|
596
595
|
end
|
597
|
-
druids
|
598
596
|
end
|
599
597
|
|
600
598
|
# Get a list of druids that have errored out in a particular workflow and step
|
@@ -608,7 +606,7 @@ module Assembly
|
|
608
606
|
# result=Assembly::Utils.get_errored_objects_for_workstep('accessionWF','content-metadata','Project : Revs')
|
609
607
|
# => {"druid:qd556jq0580"=>"druid:qd556jq0580 - Item error; caused by #<Rubydora::FedoraInvalidRequest: Error modifying datastream contentMetadata for druid:qd556jq0580. See logger for details>"}
|
610
608
|
def self.get_errored_objects_for_workstep(workflow, step, tag = '')
|
611
|
-
result = Dor::
|
609
|
+
result = Dor::Config.workflow.client.get_errored_objects_for_workstep workflow, step, 'dor'
|
612
610
|
return result if tag == ''
|
613
611
|
filtered_result = {}
|
614
612
|
result.each do |druid, error|
|
data/spec/spec_helper.rb
CHANGED
@@ -2,7 +2,8 @@ TEST_PID = 'druid:dd999dd9999'
|
|
2
2
|
TEST_PID_FILENAME = TEST_PID.tr(':', '_')
|
3
3
|
TEST_APO_OBJECT = 'druid:qv648vd4392' # this is a real APO object in dor-dev that must exist for the tests to pass
|
4
4
|
PATH = File.expand_path(File.dirname(__FILE__))
|
5
|
-
|
5
|
+
FIXTURES_DIR = File.join(PATH, 'test_data')
|
6
|
+
TEST_OUTPUT_DIR = File.join(FIXTURES_DIR, 'output')
|
6
7
|
ENV['ROBOT_ENVIRONMENT'] = 'development'
|
7
8
|
|
8
9
|
require 'rspec'
|
data/spec/utils_spec.rb
CHANGED
@@ -115,4 +115,12 @@ describe Assembly::Utils do
|
|
115
115
|
|
116
116
|
end
|
117
117
|
|
118
|
+
describe '.read_druids_from_file' do
|
119
|
+
it 'extracts the druids from a CSV file' do
|
120
|
+
druids = Assembly::Utils.read_druids_from_file(File.join(FIXTURES_DIR, 'druids.csv'))
|
121
|
+
|
122
|
+
expect(druids.to_a).to match_array ['druid:a', 'druid:b', 'druid:c']
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
118
126
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: assembly-utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Mangiafico
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-10-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
@@ -25,34 +25,6 @@ dependencies:
|
|
25
25
|
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '0'
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: csv-mapper
|
30
|
-
requirement: !ruby/object:Gem::Requirement
|
31
|
-
requirements:
|
32
|
-
- - ">="
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: '0'
|
35
|
-
type: :runtime
|
36
|
-
prerelease: false
|
37
|
-
version_requirements: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - ">="
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: '0'
|
42
|
-
- !ruby/object:Gem::Dependency
|
43
|
-
name: fastercsv
|
44
|
-
requirement: !ruby/object:Gem::Requirement
|
45
|
-
requirements:
|
46
|
-
- - ">="
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
version: '0'
|
49
|
-
type: :runtime
|
50
|
-
prerelease: false
|
51
|
-
version_requirements: !ruby/object:Gem::Requirement
|
52
|
-
requirements:
|
53
|
-
- - ">="
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
version: '0'
|
56
28
|
- !ruby/object:Gem::Dependency
|
57
29
|
name: druid-tools
|
58
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -73,56 +45,14 @@ dependencies:
|
|
73
45
|
requirements:
|
74
46
|
- - "~>"
|
75
47
|
- !ruby/object:Gem::Version
|
76
|
-
version: '5.
|
48
|
+
version: '5.5'
|
77
49
|
type: :runtime
|
78
50
|
prerelease: false
|
79
51
|
version_requirements: !ruby/object:Gem::Requirement
|
80
52
|
requirements:
|
81
53
|
- - "~>"
|
82
54
|
- !ruby/object:Gem::Version
|
83
|
-
version: '5.
|
84
|
-
- !ruby/object:Gem::Dependency
|
85
|
-
name: dor-workflow-service
|
86
|
-
requirement: !ruby/object:Gem::Requirement
|
87
|
-
requirements:
|
88
|
-
- - ">="
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
version: 1.3.1
|
91
|
-
type: :runtime
|
92
|
-
prerelease: false
|
93
|
-
version_requirements: !ruby/object:Gem::Requirement
|
94
|
-
requirements:
|
95
|
-
- - ">="
|
96
|
-
- !ruby/object:Gem::Version
|
97
|
-
version: 1.3.1
|
98
|
-
- !ruby/object:Gem::Dependency
|
99
|
-
name: activesupport
|
100
|
-
requirement: !ruby/object:Gem::Requirement
|
101
|
-
requirements:
|
102
|
-
- - ">="
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
version: '0'
|
105
|
-
type: :runtime
|
106
|
-
prerelease: false
|
107
|
-
version_requirements: !ruby/object:Gem::Requirement
|
108
|
-
requirements:
|
109
|
-
- - ">="
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
version: '0'
|
112
|
-
- !ruby/object:Gem::Dependency
|
113
|
-
name: activeresource
|
114
|
-
requirement: !ruby/object:Gem::Requirement
|
115
|
-
requirements:
|
116
|
-
- - ">="
|
117
|
-
- !ruby/object:Gem::Version
|
118
|
-
version: '0'
|
119
|
-
type: :runtime
|
120
|
-
prerelease: false
|
121
|
-
version_requirements: !ruby/object:Gem::Requirement
|
122
|
-
requirements:
|
123
|
-
- - ">="
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: '0'
|
55
|
+
version: '5.5'
|
126
56
|
- !ruby/object:Gem::Dependency
|
127
57
|
name: rake
|
128
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -195,6 +125,7 @@ files:
|
|
195
125
|
- spec/spec_helper.rb
|
196
126
|
- spec/test_data/druid_aa000bb1111.xml
|
197
127
|
- spec/test_data/druid_dd999dd9999.xml
|
128
|
+
- spec/test_data/druids.csv
|
198
129
|
- spec/test_data/local_dev_revs.yaml
|
199
130
|
- spec/test_data/test_log.yaml
|
200
131
|
- spec/utils_spec.rb
|
@@ -217,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
217
148
|
version: '0'
|
218
149
|
requirements: []
|
219
150
|
rubyforge_project: assembly-utils
|
220
|
-
rubygems_version: 2.
|
151
|
+
rubygems_version: 2.5.1
|
221
152
|
signing_key:
|
222
153
|
specification_version: 4
|
223
154
|
summary: Ruby gem of methods usesful for assembly and accessioning.
|
@@ -225,7 +156,7 @@ test_files:
|
|
225
156
|
- spec/spec_helper.rb
|
226
157
|
- spec/test_data/druid_aa000bb1111.xml
|
227
158
|
- spec/test_data/druid_dd999dd9999.xml
|
159
|
+
- spec/test_data/druids.csv
|
228
160
|
- spec/test_data/local_dev_revs.yaml
|
229
161
|
- spec/test_data/test_log.yaml
|
230
162
|
- spec/utils_spec.rb
|
231
|
-
has_rdoc:
|