pushmi_pullyu 1.0.2 → 2.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.
@@ -4,6 +4,7 @@ require 'optparse'
4
4
  require 'rollbar'
5
5
  require 'singleton'
6
6
  require 'yaml'
7
+ require 'json'
7
8
 
8
9
  # CLI runner
9
10
  class PushmiPullyu::CLI
@@ -59,6 +60,19 @@ class PushmiPullyu::CLI
59
60
  Rollbar.configure do |config|
60
61
  config.enabled = false unless options[:rollbar][:token].present?
61
62
  config.access_token = options[:rollbar][:token]
63
+ config.use_exception_level_filters_default = true
64
+ config.exception_level_filters['IOError'] = 'ignore'
65
+ # add a filter after Rollbar has built the error payload but before it is delivered to the API,
66
+ # in order to strip sensitive information out of certain error messages
67
+ exception_message_transformer = proc do |payload|
68
+ clean_message = payload[:exception][:message].sub(/http:\/\/.+:.+@(.+)\/aip\/v1\/(.*)/,
69
+ "http://\1/aip/v1/\2")
70
+ payload[:exception][:message] = clean_message
71
+ payload[:message] = clean_message
72
+ end
73
+
74
+ config.transform << exception_message_transformer
75
+
62
76
  if options[:rollbar][:proxy_host].present?
63
77
  config.proxy = {}
64
78
  config.proxy[:host] = options[:rollbar][:proxy_host]
@@ -168,25 +182,29 @@ class PushmiPullyu::CLI
168
182
  end
169
183
 
170
184
  def run_preservation_cycle
171
- item = queue.wait_next_item
185
+ entity_json = JSON.parse(queue.wait_next_item)
186
+ entity = {
187
+ type: entity_json['type'],
188
+ uuid: entity_json['uuid']
189
+ }
190
+ return unless entity[:type].present? && entity[:uuid].present?
172
191
 
173
192
  # add additional information about the error context to errors that occur while processing this item.
174
- Rollbar.scoped(noid: item) do
175
- begin
176
- # Download AIP from Fedora, bag and tar AIP directory and cleanup after block code
177
- PushmiPullyu::AIP.create(item) do |aip_filename, aip_directory|
178
- # Push tarred AIP to swift API
179
- deposited_file = swift.deposit_file(aip_filename, options[:swift][:container])
180
- # Log successful preservation event to the log files
181
- PushmiPullyu::Logging.log_preservation_event(deposited_file, aip_directory)
182
- end
183
- # rubocop:disable Lint/RescueException
184
- rescue Exception => e
185
- Rollbar.error(e)
186
- logger.error(e)
187
- # TODO: we could re-raise here and let the daemon die on any preservation error, or just log the issue and
188
- # move on to the next item.
193
+ Rollbar.scoped(entity_uuid: entity[:uuid]) do
194
+ # Download AIP from Jupiter, bag and tar AIP directory and cleanup after
195
+ # block code
196
+ PushmiPullyu::AIP.create(entity) do |aip_filename, aip_directory|
197
+ # Push tarred AIP to swift API
198
+ deposited_file = swift.deposit_file(aip_filename, options[:swift][:container])
199
+ # Log successful preservation event to the log files
200
+ PushmiPullyu::Logging.log_preservation_event(deposited_file, aip_directory)
189
201
  end
202
+ # rubocop:disable Lint/RescueException
203
+ rescue Exception => e
204
+ Rollbar.error(e)
205
+ logger.error(e)
206
+ # TODO: we could re-raise here and let the daemon die on any preservation error, or just log the issue and
207
+ # move on to the next item.
190
208
  # rubocop:enable Lint/RescueException
191
209
  end
192
210
  end
@@ -48,7 +48,7 @@ module PushmiPullyu::Logging
48
48
 
49
49
  message = "#{deposited_file.name} was successfully deposited into Swift Storage!\n"\
50
50
  "Here are the details of this preservation event:\n"\
51
- "\tNOID: '#{deposited_file.name}'\n"\
51
+ "\tUUID: '#{deposited_file.name}'\n"\
52
52
  "\tTimestamp of Completion: '#{deposited_file.last_modified}'\n"\
53
53
  "\tAIP Checksum: '#{deposited_file.etag}'\n"\
54
54
  "\tMetadata: #{deposited_file.metadata}\n"\
@@ -63,6 +63,7 @@ class PushmiPullyu::PreservationQueue
63
63
  while PushmiPullyu.continue_polling?
64
64
  element = next_item
65
65
  return element if element.present?
66
+
66
67
  sleep @poll_interval
67
68
  end
68
69
  end
@@ -50,7 +50,7 @@ class PushmiPullyu::SwiftDepositer
50
50
  else
51
51
  # for creating new: construct hash with symbols as keys, add metadata as a hash within the header hash
52
52
  headers = { etag: checksum,
53
- content_type: 'application/x-tar',
53
+ content_type: 'application/x-tar',
54
54
  metadata: metadata }
55
55
  deposited_file = era_container.create_object(file_base_name, headers, File.open(file_name))
56
56
  end
@@ -1,3 +1,3 @@
1
1
  module PushmiPullyu
2
- VERSION = '1.0.2'.freeze
2
+ VERSION = '2.0.0'.freeze
3
3
  end
@@ -5,10 +5,10 @@ require 'pushmi_pullyu/version'
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'pushmi_pullyu'
7
7
  spec.version = PushmiPullyu::VERSION
8
- spec.authors = ['Shane Murnaghan']
9
- spec.email = ['murnagha@ualberta.ca']
8
+ spec.authors = ['Shane Murnaghan', 'Omar Rodriguez-Arenas']
9
+ spec.email = ['murnagha@ualberta.ca', 'orodrigu@ualberta.ca']
10
10
 
11
- spec.summary = 'Ruby application to manage flow of content from Fedora into Swift for preservation'
11
+ spec.summary = 'Ruby application to manage flow of content from Jupiter into Swift for preservation'
12
12
  spec.homepage = 'https://github.com/ualbertalib/pushmi_pullyu'
13
13
  spec.license = 'MIT'
14
14
 
@@ -19,31 +19,32 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ['lib']
21
21
 
22
- spec.required_ruby_version = '>= 2.3.1'
22
+ spec.required_ruby_version = '>= 2.5'
23
23
 
24
- spec.add_runtime_dependency 'activerecord', '>= 5.1.5', '< 5.3.0'
25
- spec.add_runtime_dependency 'activesupport', '~> 5.0'
24
+ spec.add_runtime_dependency 'activesupport', '>= 5', '< 7'
26
25
  spec.add_runtime_dependency 'bagit', '~> 0.4'
27
26
  spec.add_runtime_dependency 'connection_pool', '~> 2.2'
28
27
  spec.add_runtime_dependency 'daemons', '~> 1.2', '>= 1.2.4'
29
- spec.add_runtime_dependency 'minitar', '~> 0.6'
28
+ spec.add_runtime_dependency 'minitar', '~> 0.7'
30
29
  spec.add_runtime_dependency 'openstack', '~> 3.3', '>= 3.3.10'
31
- spec.add_runtime_dependency 'pg', '~> 1.0.0'
30
+ spec.add_runtime_dependency 'pg', '>= 1.0', '< 1.2'
32
31
  spec.add_runtime_dependency 'rdf', '>= 1.99', '< 4.0'
33
32
  spec.add_runtime_dependency 'rdf-n3', '>= 1.99', '< 4.0'
34
33
  spec.add_runtime_dependency 'redis', '>= 3.3', '< 5.0'
35
- spec.add_runtime_dependency 'rest-client', '~> 1.8'
36
- spec.add_runtime_dependency 'rollbar', '~> 2.14'
34
+ spec.add_runtime_dependency 'rest-client', '>= 1.8', '< 3.0'
35
+ spec.add_runtime_dependency 'rollbar', '>= 2.18', '< 4.0'
37
36
 
38
- spec.add_development_dependency 'bundler', '~> 1.14'
37
+ spec.add_development_dependency 'bundler', '~> 2.0'
39
38
  spec.add_development_dependency 'coveralls', '~> 0.8'
40
- spec.add_development_dependency 'danger', '~> 5.2'
39
+ spec.add_development_dependency 'danger', '~> 8.0'
41
40
  spec.add_development_dependency 'pry', '~> 0.10', '>= 0.10.4'
42
- spec.add_development_dependency 'rake', '~> 12.0'
41
+ spec.add_development_dependency 'pry-byebug', '~> 3.6'
42
+ spec.add_development_dependency 'rake', '~> 13.0'
43
43
  spec.add_development_dependency 'rspec', '~> 3.0'
44
44
  spec.add_development_dependency 'rubocop', '~> 0.51'
45
45
  spec.add_development_dependency 'rubocop-rspec', '~> 1.10'
46
46
  spec.add_development_dependency 'timecop', '~> 0.8'
47
- spec.add_development_dependency 'vcr', '~> 4.0'
47
+ spec.add_development_dependency 'uuid', '~> 2.3.9'
48
+ spec.add_development_dependency 'vcr', '~> 5.0'
48
49
  spec.add_development_dependency 'webmock', '~> 3.3'
49
50
  end
metadata CHANGED
@@ -1,49 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pushmi_pullyu
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shane Murnaghan
8
+ - Omar Rodriguez-Arenas
8
9
  autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2018-08-17 00:00:00.000000000 Z
12
+ date: 2021-01-29 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
- name: activerecord
15
+ name: activesupport
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
18
  - - ">="
18
19
  - !ruby/object:Gem::Version
19
- version: 5.1.5
20
+ version: '5'
20
21
  - - "<"
21
22
  - !ruby/object:Gem::Version
22
- version: 5.3.0
23
+ version: '7'
23
24
  type: :runtime
24
25
  prerelease: false
25
26
  version_requirements: !ruby/object:Gem::Requirement
26
27
  requirements:
27
28
  - - ">="
28
29
  - !ruby/object:Gem::Version
29
- version: 5.1.5
30
+ version: '5'
30
31
  - - "<"
31
32
  - !ruby/object:Gem::Version
32
- version: 5.3.0
33
- - !ruby/object:Gem::Dependency
34
- name: activesupport
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '5.0'
40
- type: :runtime
41
- prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - "~>"
45
- - !ruby/object:Gem::Version
46
- version: '5.0'
33
+ version: '7'
47
34
  - !ruby/object:Gem::Dependency
48
35
  name: bagit
49
36
  requirement: !ruby/object:Gem::Requirement
@@ -98,14 +85,14 @@ dependencies:
98
85
  requirements:
99
86
  - - "~>"
100
87
  - !ruby/object:Gem::Version
101
- version: '0.6'
88
+ version: '0.7'
102
89
  type: :runtime
103
90
  prerelease: false
104
91
  version_requirements: !ruby/object:Gem::Requirement
105
92
  requirements:
106
93
  - - "~>"
107
94
  - !ruby/object:Gem::Version
108
- version: '0.6'
95
+ version: '0.7'
109
96
  - !ruby/object:Gem::Dependency
110
97
  name: openstack
111
98
  requirement: !ruby/object:Gem::Requirement
@@ -130,16 +117,22 @@ dependencies:
130
117
  name: pg
131
118
  requirement: !ruby/object:Gem::Requirement
132
119
  requirements:
133
- - - "~>"
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '1.0'
123
+ - - "<"
134
124
  - !ruby/object:Gem::Version
135
- version: 1.0.0
125
+ version: '1.2'
136
126
  type: :runtime
137
127
  prerelease: false
138
128
  version_requirements: !ruby/object:Gem::Requirement
139
129
  requirements:
140
- - - "~>"
130
+ - - ">="
141
131
  - !ruby/object:Gem::Version
142
- version: 1.0.0
132
+ version: '1.0'
133
+ - - "<"
134
+ - !ruby/object:Gem::Version
135
+ version: '1.2'
143
136
  - !ruby/object:Gem::Dependency
144
137
  name: rdf
145
138
  requirement: !ruby/object:Gem::Requirement
@@ -204,44 +197,56 @@ dependencies:
204
197
  name: rest-client
205
198
  requirement: !ruby/object:Gem::Requirement
206
199
  requirements:
207
- - - "~>"
200
+ - - ">="
208
201
  - !ruby/object:Gem::Version
209
202
  version: '1.8'
203
+ - - "<"
204
+ - !ruby/object:Gem::Version
205
+ version: '3.0'
210
206
  type: :runtime
211
207
  prerelease: false
212
208
  version_requirements: !ruby/object:Gem::Requirement
213
209
  requirements:
214
- - - "~>"
210
+ - - ">="
215
211
  - !ruby/object:Gem::Version
216
212
  version: '1.8'
213
+ - - "<"
214
+ - !ruby/object:Gem::Version
215
+ version: '3.0'
217
216
  - !ruby/object:Gem::Dependency
218
217
  name: rollbar
219
218
  requirement: !ruby/object:Gem::Requirement
220
219
  requirements:
221
- - - "~>"
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '2.18'
223
+ - - "<"
222
224
  - !ruby/object:Gem::Version
223
- version: '2.14'
225
+ version: '4.0'
224
226
  type: :runtime
225
227
  prerelease: false
226
228
  version_requirements: !ruby/object:Gem::Requirement
227
229
  requirements:
228
- - - "~>"
230
+ - - ">="
231
+ - !ruby/object:Gem::Version
232
+ version: '2.18'
233
+ - - "<"
229
234
  - !ruby/object:Gem::Version
230
- version: '2.14'
235
+ version: '4.0'
231
236
  - !ruby/object:Gem::Dependency
232
237
  name: bundler
233
238
  requirement: !ruby/object:Gem::Requirement
234
239
  requirements:
235
240
  - - "~>"
236
241
  - !ruby/object:Gem::Version
237
- version: '1.14'
242
+ version: '2.0'
238
243
  type: :development
239
244
  prerelease: false
240
245
  version_requirements: !ruby/object:Gem::Requirement
241
246
  requirements:
242
247
  - - "~>"
243
248
  - !ruby/object:Gem::Version
244
- version: '1.14'
249
+ version: '2.0'
245
250
  - !ruby/object:Gem::Dependency
246
251
  name: coveralls
247
252
  requirement: !ruby/object:Gem::Requirement
@@ -262,14 +267,14 @@ dependencies:
262
267
  requirements:
263
268
  - - "~>"
264
269
  - !ruby/object:Gem::Version
265
- version: '5.2'
270
+ version: '8.0'
266
271
  type: :development
267
272
  prerelease: false
268
273
  version_requirements: !ruby/object:Gem::Requirement
269
274
  requirements:
270
275
  - - "~>"
271
276
  - !ruby/object:Gem::Version
272
- version: '5.2'
277
+ version: '8.0'
273
278
  - !ruby/object:Gem::Dependency
274
279
  name: pry
275
280
  requirement: !ruby/object:Gem::Requirement
@@ -290,20 +295,34 @@ dependencies:
290
295
  - - ">="
291
296
  - !ruby/object:Gem::Version
292
297
  version: 0.10.4
298
+ - !ruby/object:Gem::Dependency
299
+ name: pry-byebug
300
+ requirement: !ruby/object:Gem::Requirement
301
+ requirements:
302
+ - - "~>"
303
+ - !ruby/object:Gem::Version
304
+ version: '3.6'
305
+ type: :development
306
+ prerelease: false
307
+ version_requirements: !ruby/object:Gem::Requirement
308
+ requirements:
309
+ - - "~>"
310
+ - !ruby/object:Gem::Version
311
+ version: '3.6'
293
312
  - !ruby/object:Gem::Dependency
294
313
  name: rake
295
314
  requirement: !ruby/object:Gem::Requirement
296
315
  requirements:
297
316
  - - "~>"
298
317
  - !ruby/object:Gem::Version
299
- version: '12.0'
318
+ version: '13.0'
300
319
  type: :development
301
320
  prerelease: false
302
321
  version_requirements: !ruby/object:Gem::Requirement
303
322
  requirements:
304
323
  - - "~>"
305
324
  - !ruby/object:Gem::Version
306
- version: '12.0'
325
+ version: '13.0'
307
326
  - !ruby/object:Gem::Dependency
308
327
  name: rspec
309
328
  requirement: !ruby/object:Gem::Requirement
@@ -360,20 +379,34 @@ dependencies:
360
379
  - - "~>"
361
380
  - !ruby/object:Gem::Version
362
381
  version: '0.8'
382
+ - !ruby/object:Gem::Dependency
383
+ name: uuid
384
+ requirement: !ruby/object:Gem::Requirement
385
+ requirements:
386
+ - - "~>"
387
+ - !ruby/object:Gem::Version
388
+ version: 2.3.9
389
+ type: :development
390
+ prerelease: false
391
+ version_requirements: !ruby/object:Gem::Requirement
392
+ requirements:
393
+ - - "~>"
394
+ - !ruby/object:Gem::Version
395
+ version: 2.3.9
363
396
  - !ruby/object:Gem::Dependency
364
397
  name: vcr
365
398
  requirement: !ruby/object:Gem::Requirement
366
399
  requirements:
367
400
  - - "~>"
368
401
  - !ruby/object:Gem::Version
369
- version: '4.0'
402
+ version: '5.0'
370
403
  type: :development
371
404
  prerelease: false
372
405
  version_requirements: !ruby/object:Gem::Requirement
373
406
  requirements:
374
407
  - - "~>"
375
408
  - !ruby/object:Gem::Version
376
- version: '4.0'
409
+ version: '5.0'
377
410
  - !ruby/object:Gem::Dependency
378
411
  name: webmock
379
412
  requirement: !ruby/object:Gem::Requirement
@@ -391,6 +424,7 @@ dependencies:
391
424
  description:
392
425
  email:
393
426
  - murnagha@ualberta.ca
427
+ - orodrigu@ualberta.ca
394
428
  executables:
395
429
  - pushmi_pullyu
396
430
  extensions: []
@@ -398,11 +432,15 @@ extra_rdoc_files: []
398
432
  files:
399
433
  - ".coveralls.yml"
400
434
  - ".editorconfig"
435
+ - ".github/CODEOWNERS"
436
+ - ".github/PULL_REQUEST_TEMPLATE"
437
+ - ".github/workflows/ruby.yml"
401
438
  - ".gitignore"
402
439
  - ".hound.yml"
403
440
  - ".rspec"
404
441
  - ".rubocop.yml"
405
442
  - ".travis.yml"
443
+ - CHANGELOG.md
406
444
  - Dangerfile
407
445
  - Gemfile
408
446
  - LICENSE.txt
@@ -419,10 +457,6 @@ files:
419
457
  - lib/pushmi_pullyu/aip.rb
420
458
  - lib/pushmi_pullyu/aip/creator.rb
421
459
  - lib/pushmi_pullyu/aip/downloader.rb
422
- - lib/pushmi_pullyu/aip/fedora_fetcher.rb
423
- - lib/pushmi_pullyu/aip/file_list_creator.rb
424
- - lib/pushmi_pullyu/aip/owner_email_editor.rb
425
- - lib/pushmi_pullyu/aip/user.rb
426
460
  - lib/pushmi_pullyu/cli.rb
427
461
  - lib/pushmi_pullyu/logging.rb
428
462
  - lib/pushmi_pullyu/preservation_queue.rb
@@ -444,16 +478,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
444
478
  requirements:
445
479
  - - ">="
446
480
  - !ruby/object:Gem::Version
447
- version: 2.3.1
481
+ version: '2.5'
448
482
  required_rubygems_version: !ruby/object:Gem::Requirement
449
483
  requirements:
450
484
  - - ">="
451
485
  - !ruby/object:Gem::Version
452
486
  version: '0'
453
487
  requirements: []
454
- rubyforge_project:
455
- rubygems_version: 2.6.11
488
+ rubygems_version: 3.0.3
456
489
  signing_key:
457
490
  specification_version: 4
458
- summary: Ruby application to manage flow of content from Fedora into Swift for preservation
491
+ summary: Ruby application to manage flow of content from Jupiter into Swift for preservation
459
492
  test_files: []