pushmi_pullyu 1.0.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []