darlingtonia 2.1.0 → 2.2.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 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