darlingtonia 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 145bf822e40f94c82cf2a0c61213e964a8f5e780209703e9506fa6ce35466612
4
- data.tar.gz: ed804197a3ccad1047da9b8c8127603e38814c03d799325bb9c317938de71c88
3
+ metadata.gz: d7c349e432568a10f8f77a939d0464e511466f0bc7ae30f7d7f5ff134a1bb656
4
+ data.tar.gz: 5a89d7d2e778e35ab4213af0648c5c99857f264851f50a40dfbfa76f1440a79a
5
5
  SHA512:
6
- metadata.gz: dbaec8b01d54cb94859e1630fec14b84082c981e25143646eb1aa58ab4dbb5e0bbebcb4954457799dccdac0d8cc20f78b315486f2f2d38bfa709bf209df70980
7
- data.tar.gz: d5ce22c9e01ba293513d7398fa5af18bb5cfcfe1df67dc6313ebb70cce13c655dd8c1b0998042a1b823014337b2e2ae7980b288f5168a0d4d4caa5077d32701e
6
+ metadata.gz: 7ef901a03b12a77bf06ffb61622d4ff606c3369d872c1bc72f8bf8975c96faa9450b1826cda254c915afef0a03ebd1908db00e818ddc6d1087a1aeb83a823c9f
7
+ data.tar.gz: ac6bd1de71971065ec2432c27ad786e810f306f54271fd1d800117706479745b93b98b2e3115be806227becd01aaecbb570ae0a366370d231bc6d9a2b3ec6222
@@ -1,3 +1,10 @@
1
+ 2.2.0 - Tue Feb 12, 2019
2
+
3
+ * Improved default logging
4
+ * logs are more easily parsed, e.g., by splunk
5
+ * logs contain summary information
6
+ * option to pass in a batch_id to track successes and failures per batch
7
+
1
8
  2.1.0 - Tue Feb 12, 2019
2
9
 
3
10
  * Map a variety of values for 'visibility' to their Hyrax approved equivalents
@@ -13,6 +13,18 @@ module Darlingtonia
13
13
  # @return [String] The fedora ID for a Collection.
14
14
  attr_accessor :collection_id
15
15
 
16
+ # @!attribute [rw] batch_id
17
+ # @return [String] an id number associated with the process that kicked off this import run
18
+ attr_accessor :batch_id
19
+
20
+ # @!attribute [rw] success_count
21
+ # @return [String] the number of records this importer has successfully created
22
+ attr_accessor :success_count
23
+
24
+ # @!attribute [rw] failure_count
25
+ # @return [String] the number of records this importer has failed to create
26
+ attr_accessor :failure_count
27
+
16
28
  # @param attributes [Hash] Attributes that come
17
29
  # from the UI or importer rather than from
18
30
  # the CSV/mapper.
@@ -23,8 +35,10 @@ module Darlingtonia
23
35
  info_stream: Darlingtonia.config.default_info_stream,
24
36
  attributes: {})
25
37
  self.collection_id = attributes[:collection_id]
38
+ self.batch_id = attributes[:batch_id]
26
39
  set_depositor(attributes[:depositor_id])
27
-
40
+ @success_count = 0
41
+ @failure_count = 0
28
42
  super(error_stream: error_stream, info_stream: info_stream)
29
43
  end
30
44
 
@@ -137,8 +151,8 @@ module Darlingtonia
137
151
  # Create an object using the Hyrax actor stack
138
152
  # We assume the object was created as expected if the actor stack returns true.
139
153
  def create_for(record:)
140
- info_stream << 'Creating record: ' \
141
- "#{record.respond_to?(:title) ? record.title : record}."
154
+ info_stream << "event: record_import_started, batch_id: #{batch_id}, collection_id: #{collection_id}, record_title: #{record.respond_to?(:title) ? record.title : record}"
155
+
142
156
  additional_attrs = {
143
157
  uploaded_files: create_upload_files(record),
144
158
  depositor: @depositor.user_key
@@ -156,14 +170,14 @@ module Darlingtonia
156
170
  attrs)
157
171
 
158
172
  if Hyrax::CurationConcern.actor.create(actor_env)
159
- info_stream << "Record created at: #{created.id}"
173
+ info_stream << "event: record_created, batch_id: #{batch_id}, record_id: #{created.id}, collection_id: #{collection_id}, record_title: #{attrs[:title].first}"
174
+ @success_count += 1
160
175
  else
161
176
  created.errors.each do |attr, msg|
162
- error_stream << "Validation failed: #{attr.capitalize}. #{msg}"
177
+ error_stream << "event: validation_failed, batch_id: #{batch_id}, collection_id: #{collection_id}, attribute: #{attr.capitalize}, message: #{msg}, record_title: #{attrs[:title].first}"
163
178
  end
179
+ @failure_count += 1
164
180
  end
165
-
166
- info_stream << "Record created at: #{created.id}"
167
181
  end
168
182
  end
169
183
  end
@@ -34,6 +34,7 @@ module Darlingtonia
34
34
  def initialize(parser:, record_importer: RecordImporter.new)
35
35
  self.parser = parser
36
36
  self.record_importer = record_importer
37
+ @info_stream = Darlingtonia.config.default_info_stream
37
38
  end
38
39
 
39
40
  ##
@@ -42,6 +43,7 @@ module Darlingtonia
42
43
  # @return [void]
43
44
  def import
44
45
  records.each { |record| record_importer.import(record: record) }
46
+ @info_stream << "event: finish_import, batch_id: #{record_importer.batch_id}, successful_record_count: #{record_importer.success_count}, failed_record_count: #{record_importer.failure_count}"
45
47
  end
46
48
  end
47
49
  end
@@ -7,7 +7,13 @@ module Darlingtonia
7
7
  # @return [#<<]
8
8
  # @!attribute [rw] info_stream
9
9
  # @return [#<<]
10
- attr_accessor :error_stream, :info_stream
10
+ # @!attribute [rw] batch_id
11
+ # @return [String] an optional batch id for this import run
12
+ # @!attribute [rw] success_count
13
+ # @return [Integer] a count of the records that were successfully created
14
+ # @!attribute [rw] failure_count
15
+ # @return [Integer] a count of the records that failed import
16
+ attr_accessor :error_stream, :info_stream, :batch_id, :success_count, :failure_count
11
17
 
12
18
  ##
13
19
  # @param error_stream [#<<]
@@ -53,7 +53,28 @@ module Darlingtonia
53
53
  #
54
54
  # @see Parser#validate
55
55
  class Validator
56
+ ##
57
+ # A representation of an error encountered in validation.
56
58
  Error = Struct.new(:validator, :name, :description, :lineno) do
59
+ ##
60
+ # @!attribute [rw] validator
61
+ # @return [#to_s] the validator that generated this error
62
+ # @!attribute [rw] name
63
+ # @return [#to_s] a short descriptive name for the given error
64
+ # @!attribute [rw] description
65
+ # @return [#to_s] a long form description or message
66
+ # @!attribute [rw] lineno
67
+ # @return [#to_s] the line number, or other indication of the location
68
+ # where the error was encountered
69
+
70
+ ##
71
+ # @return [Boolean]
72
+ def validator_error?
73
+ true
74
+ end
75
+
76
+ ##
77
+ # @return [String]
57
78
  def to_s
58
79
  "#{name}: #{description} (#{validator})"
59
80
  end
@@ -79,16 +100,18 @@ module Darlingtonia
79
100
  errors.map { |error| error_stream << error }
80
101
  end
81
102
  end
82
- # rubocop:enable Lint/UnusedMethodArgument
83
103
 
84
104
  private
85
105
 
106
+ # rubocop:disable Lint/UnusedMethodArgument
107
+
86
108
  ##
87
109
  # @return [Enumerator<Error>]
88
110
  #
89
- # rubocop:disable Lint/UnusedMethodArgument
90
111
  def run_validation(parser:)
91
112
  [].to_enum
92
113
  end
114
+
115
+ # rubocop:enable Lint/UnusedMethodArgument
93
116
  end
94
117
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Darlingtonia
4
- VERSION = '2.1.0'
4
+ VERSION = '2.2.0'
5
5
  end
@@ -12,6 +12,8 @@ describe Darlingtonia::Importer do
12
12
 
13
13
  let(:fake_record_importer) do
14
14
  Class.new do
15
+ attr_accessor :batch_id, :success_count, :failure_count
16
+
15
17
  def import(record:)
16
18
  records << record.attributes
17
19
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: darlingtonia
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Data Curation Experts
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-12 00:00:00.000000000 Z
11
+ date: 2019-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active-fedora