pushmi_pullyu 1.0.3 → 2.0.1

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
@@ -48,7 +49,6 @@ class PushmiPullyu::CLI
48
49
  setup_signal_traps
49
50
 
50
51
  setup_log
51
- setup_db_connection
52
52
  print_banner
53
53
 
54
54
  run_tick_loop
@@ -60,6 +60,19 @@ class PushmiPullyu::CLI
60
60
  Rollbar.configure do |config|
61
61
  config.enabled = false unless options[:rollbar][:token].present?
62
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
+
63
76
  if options[:rollbar][:proxy_host].present?
64
77
  config.proxy = {}
65
78
  config.proxy[:host] = options[:rollbar][:proxy_host]
@@ -169,26 +182,29 @@ class PushmiPullyu::CLI
169
182
  end
170
183
 
171
184
  def run_preservation_cycle
172
- item = queue.wait_next_item
173
- return unless item.present?
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?
174
191
 
175
192
  # add additional information about the error context to errors that occur while processing this item.
176
- Rollbar.scoped(noid: item) do
177
- begin
178
- # Download AIP from Fedora, bag and tar AIP directory and cleanup after block code
179
- PushmiPullyu::AIP.create(item) do |aip_filename, aip_directory|
180
- # Push tarred AIP to swift API
181
- deposited_file = swift.deposit_file(aip_filename, options[:swift][:container])
182
- # Log successful preservation event to the log files
183
- PushmiPullyu::Logging.log_preservation_event(deposited_file, aip_directory)
184
- end
185
- # rubocop:disable Lint/RescueException
186
- rescue Exception => e
187
- Rollbar.error(e)
188
- logger.error(e)
189
- # TODO: we could re-raise here and let the daemon die on any preservation error, or just log the issue and
190
- # 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)
191
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.
192
208
  # rubocop:enable Lint/RescueException
193
209
  end
194
210
  end
@@ -264,12 +280,4 @@ class PushmiPullyu::CLI
264
280
  end
265
281
  end
266
282
 
267
- def setup_db_connection
268
- ActiveRecord::Base.establish_connection(database_configuration)
269
- end
270
-
271
- def database_configuration
272
- PushmiPullyu.options[:database][:url]
273
- end
274
-
275
283
  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.3'.freeze
2
+ VERSION = '2.0.1'.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
34
  spec.add_runtime_dependency 'rest-client', '>= 1.8', '< 3.0'
36
- spec.add_runtime_dependency 'rollbar', '~> 2.14'
35
+ spec.add_runtime_dependency 'rollbar', '>= 2.18', '< 4.0'
36
+ spec.add_runtime_dependency 'uuid', '~> 2.3.9'
37
37
 
38
- spec.add_development_dependency 'bundler', '~> 1.14'
38
+ spec.add_development_dependency 'bundler', '~> 2.0'
39
39
  spec.add_development_dependency 'coveralls', '~> 0.8'
40
- spec.add_development_dependency 'danger', '~> 5.2'
40
+ spec.add_development_dependency 'danger', '~> 8.0'
41
41
  spec.add_development_dependency 'pry', '~> 0.10', '>= 0.10.4'
42
- spec.add_development_dependency 'rake', '~> 12.0'
42
+ spec.add_development_dependency 'pry-byebug', '~> 3.6'
43
+ spec.add_development_dependency 'rake', '~> 13.0'
43
44
  spec.add_development_dependency 'rspec', '~> 3.0'
44
45
  spec.add_development_dependency 'rubocop', '~> 0.51'
45
46
  spec.add_development_dependency 'rubocop-rspec', '~> 1.10'
46
47
  spec.add_development_dependency 'timecop', '~> 0.8'
47
- spec.add_development_dependency 'vcr', '~> 4.0'
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.3
4
+ version: 2.0.1
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-23 00:00:00.000000000 Z
12
+ date: 2021-02-02 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
@@ -222,32 +215,52 @@ dependencies:
222
215
  version: '3.0'
223
216
  - !ruby/object:Gem::Dependency
224
217
  name: rollbar
218
+ requirement: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '2.18'
223
+ - - "<"
224
+ - !ruby/object:Gem::Version
225
+ version: '4.0'
226
+ type: :runtime
227
+ prerelease: false
228
+ version_requirements: !ruby/object:Gem::Requirement
229
+ requirements:
230
+ - - ">="
231
+ - !ruby/object:Gem::Version
232
+ version: '2.18'
233
+ - - "<"
234
+ - !ruby/object:Gem::Version
235
+ version: '4.0'
236
+ - !ruby/object:Gem::Dependency
237
+ name: uuid
225
238
  requirement: !ruby/object:Gem::Requirement
226
239
  requirements:
227
240
  - - "~>"
228
241
  - !ruby/object:Gem::Version
229
- version: '2.14'
242
+ version: 2.3.9
230
243
  type: :runtime
231
244
  prerelease: false
232
245
  version_requirements: !ruby/object:Gem::Requirement
233
246
  requirements:
234
247
  - - "~>"
235
248
  - !ruby/object:Gem::Version
236
- version: '2.14'
249
+ version: 2.3.9
237
250
  - !ruby/object:Gem::Dependency
238
251
  name: bundler
239
252
  requirement: !ruby/object:Gem::Requirement
240
253
  requirements:
241
254
  - - "~>"
242
255
  - !ruby/object:Gem::Version
243
- version: '1.14'
256
+ version: '2.0'
244
257
  type: :development
245
258
  prerelease: false
246
259
  version_requirements: !ruby/object:Gem::Requirement
247
260
  requirements:
248
261
  - - "~>"
249
262
  - !ruby/object:Gem::Version
250
- version: '1.14'
263
+ version: '2.0'
251
264
  - !ruby/object:Gem::Dependency
252
265
  name: coveralls
253
266
  requirement: !ruby/object:Gem::Requirement
@@ -268,14 +281,14 @@ dependencies:
268
281
  requirements:
269
282
  - - "~>"
270
283
  - !ruby/object:Gem::Version
271
- version: '5.2'
284
+ version: '8.0'
272
285
  type: :development
273
286
  prerelease: false
274
287
  version_requirements: !ruby/object:Gem::Requirement
275
288
  requirements:
276
289
  - - "~>"
277
290
  - !ruby/object:Gem::Version
278
- version: '5.2'
291
+ version: '8.0'
279
292
  - !ruby/object:Gem::Dependency
280
293
  name: pry
281
294
  requirement: !ruby/object:Gem::Requirement
@@ -296,20 +309,34 @@ dependencies:
296
309
  - - ">="
297
310
  - !ruby/object:Gem::Version
298
311
  version: 0.10.4
312
+ - !ruby/object:Gem::Dependency
313
+ name: pry-byebug
314
+ requirement: !ruby/object:Gem::Requirement
315
+ requirements:
316
+ - - "~>"
317
+ - !ruby/object:Gem::Version
318
+ version: '3.6'
319
+ type: :development
320
+ prerelease: false
321
+ version_requirements: !ruby/object:Gem::Requirement
322
+ requirements:
323
+ - - "~>"
324
+ - !ruby/object:Gem::Version
325
+ version: '3.6'
299
326
  - !ruby/object:Gem::Dependency
300
327
  name: rake
301
328
  requirement: !ruby/object:Gem::Requirement
302
329
  requirements:
303
330
  - - "~>"
304
331
  - !ruby/object:Gem::Version
305
- version: '12.0'
332
+ version: '13.0'
306
333
  type: :development
307
334
  prerelease: false
308
335
  version_requirements: !ruby/object:Gem::Requirement
309
336
  requirements:
310
337
  - - "~>"
311
338
  - !ruby/object:Gem::Version
312
- version: '12.0'
339
+ version: '13.0'
313
340
  - !ruby/object:Gem::Dependency
314
341
  name: rspec
315
342
  requirement: !ruby/object:Gem::Requirement
@@ -372,14 +399,14 @@ dependencies:
372
399
  requirements:
373
400
  - - "~>"
374
401
  - !ruby/object:Gem::Version
375
- version: '4.0'
402
+ version: '5.0'
376
403
  type: :development
377
404
  prerelease: false
378
405
  version_requirements: !ruby/object:Gem::Requirement
379
406
  requirements:
380
407
  - - "~>"
381
408
  - !ruby/object:Gem::Version
382
- version: '4.0'
409
+ version: '5.0'
383
410
  - !ruby/object:Gem::Dependency
384
411
  name: webmock
385
412
  requirement: !ruby/object:Gem::Requirement
@@ -397,6 +424,7 @@ dependencies:
397
424
  description:
398
425
  email:
399
426
  - murnagha@ualberta.ca
427
+ - orodrigu@ualberta.ca
400
428
  executables:
401
429
  - pushmi_pullyu
402
430
  extensions: []
@@ -404,11 +432,15 @@ extra_rdoc_files: []
404
432
  files:
405
433
  - ".coveralls.yml"
406
434
  - ".editorconfig"
435
+ - ".github/CODEOWNERS"
436
+ - ".github/PULL_REQUEST_TEMPLATE"
437
+ - ".github/workflows/ruby.yml"
407
438
  - ".gitignore"
408
439
  - ".hound.yml"
409
440
  - ".rspec"
410
441
  - ".rubocop.yml"
411
442
  - ".travis.yml"
443
+ - CHANGELOG.md
412
444
  - Dangerfile
413
445
  - Gemfile
414
446
  - LICENSE.txt
@@ -425,10 +457,6 @@ files:
425
457
  - lib/pushmi_pullyu/aip.rb
426
458
  - lib/pushmi_pullyu/aip/creator.rb
427
459
  - lib/pushmi_pullyu/aip/downloader.rb
428
- - lib/pushmi_pullyu/aip/fedora_fetcher.rb
429
- - lib/pushmi_pullyu/aip/file_list_creator.rb
430
- - lib/pushmi_pullyu/aip/owner_email_editor.rb
431
- - lib/pushmi_pullyu/aip/user.rb
432
460
  - lib/pushmi_pullyu/cli.rb
433
461
  - lib/pushmi_pullyu/logging.rb
434
462
  - lib/pushmi_pullyu/preservation_queue.rb
@@ -450,16 +478,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
450
478
  requirements:
451
479
  - - ">="
452
480
  - !ruby/object:Gem::Version
453
- version: 2.3.1
481
+ version: '2.5'
454
482
  required_rubygems_version: !ruby/object:Gem::Requirement
455
483
  requirements:
456
484
  - - ">="
457
485
  - !ruby/object:Gem::Version
458
486
  version: '0'
459
487
  requirements: []
460
- rubyforge_project:
461
- rubygems_version: 2.6.11
488
+ rubygems_version: 3.0.3
462
489
  signing_key:
463
490
  specification_version: 4
464
- 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
465
492
  test_files: []