10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/legion/extensions/conditioner/runners/conflict_resolver.rb', line 10
def resolve(conditions:, competing_conditions: nil, **payload)
primary = Legion::Extensions::Conditioner::Condition.new(conditions: conditions,
values: payload)
resolution = if competing_conditions.nil?
primary.valid? ? 'primary' : 'none'
elsif primary.valid?
'primary'
else
secondary = Legion::Extensions::Conditioner::Condition.new(
conditions: competing_conditions,
values: payload
)
if secondary.valid?
'secondary'
else
'none'
end
end
status = resolution == 'none' ? 'conditioner.failed' : 'task.queued'
task_update(payload[:task_id], status, **payload) unless payload[:task_id].nil?
{ success: true, valid: resolution != 'none', resolution: resolution }
rescue StandardError => e
log.log_exception(e, component_type: :runner)
task_update(payload[:task_id], 'conditioner.exception', **payload) unless payload[:task_id].nil?
end
|