eco-helpers 2.1.8 → 2.1.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -1
- data/eco-helpers.gemspec +2 -2
- data/lib/eco/api/session/batch/job.rb +31 -5
- data/lib/eco/api/session/batch/jobs.rb +4 -4
- data/lib/eco/api/session.rb +2 -2
- data/lib/eco/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dac932bad9c679aa2f0c5aaa3a5c33ed16f04bde3ca37c55e6b19ae2cae6a418
|
4
|
+
data.tar.gz: 7d533e95f2738ba4633ac4e62ea06ff414de63b059fbc5f532b2fde4d5940233
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3bfb8e874d539c0a8d24ba1a4858130fb48c2a6e905f425bf7ca530d29c05bb01fd371a8d0fa58a9c736bd82f18409867461c6e3f3e2405a5135a700ad4f7784
|
7
|
+
data.tar.gz: a707033b2e34ca9fbc5c98514319a5d2d034aa8f37d6fd7b81ffa2d0eaddd516c9aac4471393284334225c03b7c75cdcc0cc2ac8938530cb8d53e5de23f52d68
|
data/CHANGELOG.md
CHANGED
@@ -1,12 +1,23 @@
|
|
1
1
|
# Change Log
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
|
4
|
-
## [2.1.
|
4
|
+
## [2.1.10] - 2022-11-xx
|
5
5
|
|
6
6
|
### Added
|
7
7
|
### Changed
|
8
8
|
### Fixed
|
9
9
|
|
10
|
+
## [2.1.9] - 2022-11-29
|
11
|
+
|
12
|
+
### Changed
|
13
|
+
- upgrade `ecoportal-api-v2` **gem** dependency
|
14
|
+
- upgrade `ecoportal-api-graphql` **gem** dependency
|
15
|
+
|
16
|
+
### Fixed
|
17
|
+
- `Eco::API::Session::Batch::Job`
|
18
|
+
- Ability to skip prefilter of entries with no `id` on `:update`
|
19
|
+
- Enhanced error tracking (bug resilience)
|
20
|
+
|
10
21
|
## [2.1.8] - 2022-11-18
|
11
22
|
|
12
23
|
### Added
|
data/eco-helpers.gemspec
CHANGED
@@ -31,8 +31,8 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_development_dependency "redcarpet", ">= 3.5.1", "< 3.6"
|
32
32
|
|
33
33
|
spec.add_dependency 'ecoportal-api', '>= 0.8.5', '< 0.9'
|
34
|
-
spec.add_dependency 'ecoportal-api-v2', '>= 0.9.
|
35
|
-
spec.add_dependency 'ecoportal-api-graphql', '>= 0.1.
|
34
|
+
spec.add_dependency 'ecoportal-api-v2', '>= 0.9.7', '< 0.10'
|
35
|
+
spec.add_dependency 'ecoportal-api-graphql', '>= 0.1.11', '< 0.2'
|
36
36
|
spec.add_dependency 'aws-sdk-s3', '>= 1.83.0', '< 2'
|
37
37
|
spec.add_dependency 'aws-sdk-ses', '>= 1.36.0', '< 2'
|
38
38
|
spec.add_dependency 'dotenv', '>= 2.7.6', '< 2.8'
|
@@ -34,7 +34,10 @@ module Eco
|
|
34
34
|
# @param type [Symbol] a valid batch operation.
|
35
35
|
# @param usecase [Eco::API::UseCases::UseCase, nil] when provided: `usecase` that generated this `batch job`.
|
36
36
|
# This is necessary to know the `options` used to run the usecase, which could modify the `Batch::Job` behviour.
|
37
|
-
|
37
|
+
# @param accept_update_with_no_id [Boolean] temporary contingency
|
38
|
+
# This parameter has been added due to a bug on server side.
|
39
|
+
# An external_id is still required.
|
40
|
+
def initialize(e, name:, type:, sets:, usecase: nil, accept_update_with_no_id: false)
|
38
41
|
raise "A name is required to refer a job. Given: #{name}" if !name
|
39
42
|
raise "Type should be one of #{self.class.types}. Given: #{type}" unless self.class.valid_type?(type)
|
40
43
|
raise "Sets should be some of #{self.class.sets}. Given: #{sets}" unless self.class.valid_sets?(sets)
|
@@ -46,6 +49,7 @@ module Eco
|
|
46
49
|
@sets = [sets].flatten.compact
|
47
50
|
@usecase = usecase
|
48
51
|
@feedback = Eco::API::Session::Batch::Feedback.new(job: self)
|
52
|
+
@accept_update_with_no_id = accept_update_with_no_id
|
49
53
|
reset
|
50
54
|
end
|
51
55
|
|
@@ -244,12 +248,18 @@ module Eco
|
|
244
248
|
# - The contingency above wouldn't be necessary if the server worked perfectly.
|
245
249
|
def processed_queue
|
246
250
|
pre_filtered = @queue.select do |entry|
|
251
|
+
by_pass_filter = false
|
247
252
|
if unexisting = entry.new? && !entry.id && type != :create
|
248
253
|
ref = Eco::API::Session::Batch::Feedback.person_ref(entry)
|
249
|
-
msg = "Job ('#{name}':#{type}):
|
254
|
+
msg = "Job ('#{name}':#{type}): "
|
255
|
+
if (by_pass_filter = entry.external_id && @accept_update_with_no_id)
|
256
|
+
msg << "entry errored on creation (failed creation) but will try with person code: #{ref}"
|
257
|
+
else
|
258
|
+
msg << "excluded unexisting entry (failed creation): #{ref}"
|
259
|
+
end
|
250
260
|
session.logger.warn(msg)
|
251
261
|
end
|
252
|
-
!unexisting
|
262
|
+
!unexisting || by_pass_filter
|
253
263
|
end
|
254
264
|
pre_filtered.each {|e| @callbacks[e].call(e) if @callbacks.key?(e) }
|
255
265
|
apply_policies(api_included(pre_filtered)).select do |e|
|
@@ -321,9 +331,25 @@ module Eco
|
|
321
331
|
status.queue.map do |entry|
|
322
332
|
if status.success?(entry)
|
323
333
|
if type == :create && entry.respond_to?(:id=)
|
324
|
-
entry.id = status[entry].body["id"]
|
334
|
+
entry.id = status[entry].body["id"].tap do |id|
|
335
|
+
if id.to_s.strip.empty?
|
336
|
+
ref = Eco::API::Session::Batch::Feedback.person_ref(entry)
|
337
|
+
msg = "Entry has been created but API did not return its 'id': #{ref}"
|
338
|
+
if response = status[entry]
|
339
|
+
msg << " (Response - status: #{response.status.code}; body: #{response.body.pretty_inspect})"
|
340
|
+
end
|
341
|
+
logger.error(msg)
|
342
|
+
end
|
343
|
+
end
|
344
|
+
end
|
345
|
+
if entry.respond_to?(:consolidate!)
|
346
|
+
entry.consolidate!
|
347
|
+
if entry.respond_to?(:dirty?) && entry.dirty? && entry.respond_to?(:as_update)
|
348
|
+
msg = "After consolidate there's still a dirty model:\n"
|
349
|
+
msg << entry.as_update.pretty_inspect
|
350
|
+
logger.debug(msg)
|
351
|
+
end
|
325
352
|
end
|
326
|
-
entry.consolidate! if entry.respond_to?(:consolidate!)
|
327
353
|
#else # do not entry.reset! (keep track on changes still)
|
328
354
|
end
|
329
355
|
end
|
@@ -49,9 +49,9 @@ module Eco
|
|
49
49
|
# - the block should only be passed when creating the job
|
50
50
|
# @param [see @Eco::API::Session::Batch::Jobs#new]
|
51
51
|
# @return [Eco::API::Session::Batch::Job]
|
52
|
-
def job(name, type: nil, sets: nil, usecase: nil, &block)
|
52
|
+
def job(name, type: nil, sets: nil, usecase: nil, accept_update_with_no_id: false, &block)
|
53
53
|
fatal "Can't give a job post-launch callback &block to an already existing job" if exists?(name)
|
54
|
-
new(name, type: type, sets: sets, usecase: usecase, &block) unless exists?(name)
|
54
|
+
new(name, type: type, sets: sets, usecase: usecase, accept_update_with_no_id: accept_update_with_no_id, &block) unless exists?(name)
|
55
55
|
self[name]
|
56
56
|
end
|
57
57
|
|
@@ -61,10 +61,10 @@ module Eco
|
|
61
61
|
# @yieldparam job [Eco::API::Session::Batch::Job] the job we have launched against the server.
|
62
62
|
# @yieldparam status [Eco::API::Session::Batch::Status] the status of the batch job launch.
|
63
63
|
# @return [Eco::API::Session::Batch::Job]
|
64
|
-
def new(name, type:, sets:, usecase: nil, &block)
|
64
|
+
def new(name, type:, sets:, usecase: nil, accept_update_with_no_id: false, &block)
|
65
65
|
fatal "Can't create job named '#{name}' because it already exists." if exists?(name)
|
66
66
|
|
67
|
-
Batch::Job.new(enviro, name: name, type: type, sets: sets, usecase: usecase).tap do |job|
|
67
|
+
Batch::Job.new(enviro, name: name, type: type, sets: sets, usecase: usecase, accept_update_with_no_id: accept_update_with_no_id).tap do |job|
|
68
68
|
add(job, &block)
|
69
69
|
end
|
70
70
|
end
|
data/lib/eco/api/session.rb
CHANGED
@@ -251,8 +251,8 @@ module Eco
|
|
251
251
|
# Shortcut to create a job of certain type within a group
|
252
252
|
# @param [see @Eco::API::Session::Batch::Jobs#new]
|
253
253
|
# @return [Eco::API::Session::Batch::Job]
|
254
|
-
def new_job(group, name, type, usecase, sets = [:core, :details, :account], &block)
|
255
|
-
job_group(group).new(name, usecase: usecase, type: type, sets: sets, &block)
|
254
|
+
def new_job(group, name, type, usecase, sets = [:core, :details, :account], accept_update_with_no_id = false, &block)
|
255
|
+
job_group(group).new(name, usecase: usecase, type: type, sets: sets, accept_update_with_no_id: accept_update_with_no_id, &block)
|
256
256
|
end
|
257
257
|
|
258
258
|
# @see Eco::API::Session::Batch::JobsGroups#launch
|
data/lib/eco/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eco-helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oscar Segura
|
@@ -136,7 +136,7 @@ dependencies:
|
|
136
136
|
requirements:
|
137
137
|
- - ">="
|
138
138
|
- !ruby/object:Gem::Version
|
139
|
-
version: 0.9.
|
139
|
+
version: 0.9.7
|
140
140
|
- - "<"
|
141
141
|
- !ruby/object:Gem::Version
|
142
142
|
version: '0.10'
|
@@ -146,7 +146,7 @@ dependencies:
|
|
146
146
|
requirements:
|
147
147
|
- - ">="
|
148
148
|
- !ruby/object:Gem::Version
|
149
|
-
version: 0.9.
|
149
|
+
version: 0.9.7
|
150
150
|
- - "<"
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0.10'
|
@@ -156,7 +156,7 @@ dependencies:
|
|
156
156
|
requirements:
|
157
157
|
- - ">="
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version: 0.1.
|
159
|
+
version: 0.1.11
|
160
160
|
- - "<"
|
161
161
|
- !ruby/object:Gem::Version
|
162
162
|
version: '0.2'
|
@@ -166,7 +166,7 @@ dependencies:
|
|
166
166
|
requirements:
|
167
167
|
- - ">="
|
168
168
|
- !ruby/object:Gem::Version
|
169
|
-
version: 0.1.
|
169
|
+
version: 0.1.11
|
170
170
|
- - "<"
|
171
171
|
- !ruby/object:Gem::Version
|
172
172
|
version: '0.2'
|