# -*- coding: utf-8 -*- include Tengine::Core::SafeUpdatable # スケジュール管理ドライバ driver :schedule_driver do on :'start.execution.job.tengine' do exec = Tengine::Job::Signal.new(event).execution name = exec.name_as_resource status = Tengine::Core::Schedule::SCHEDULED if exec.actual_base_timeout_alert && !exec.actual_base_timeout_alert.zero? t1 = Time.now + (exec.actual_base_timeout_alert * 60.0) Tengine::Core::Schedule.safely( safemode(Tengine::Core::Schedule.collection) ).create( event_type_name: "alert.execution.job.tengine", scheduled_at: t1, source_name: name, status: status , properties: event.properties ) end if exec.actual_base_timeout_termination && !exec.actual_base_timeout_termination.zero? t2 = Time.now + (exec.actual_base_timeout_termination * 60.0) Tengine::Core::Schedule.safely( safemode(Tengine::Core::Schedule.collection) ).create( event_type_name: "stop.execution.job.tengine", scheduled_at: t2, source_name: name, status: status, properties: event.properties.merge(stop_reason: 'timeout') ) end submit end on :'start.execution.job.tengine.failed.tengined' do e = event f = e.properties or next g = f["original_event"] or next h = g["properties"] or next i = h["execution_id"] or next orig = Tengine::Core::EventWrapper.new(Tengine::Core::Event.new(g)) # this object shall noe be persisted exec = Tengine::Job::Signal.new(orig).execution name = exec.name_as_resource status = Tengine::Core::Schedule::SCHEDULED if exec.actual_base_timeout_alert && !exec.actual_base_timeout_alert.zero? && Tengine::Core::Schedule.where(event_type_name: "alert.execution.job.tengine", source_name: name).count.zero? t1 = Time.now + (exec.actual_base_timeout_alert * 60.0) Tengine::Core::Schedule.safely( safemode(Tengine::Core::Schedule.collection) ).create( event_type_name: "alert.execution.job.tengine", scheduled_at: t1, source_name: name, status: status , properties: orig.properties ) end if exec.actual_base_timeout_termination && !exec.actual_base_timeout_termination.zero? && Tengine::Core::Schedule.where(event_type_name: "stop.execution.job.tengine", source_name: name).count.zero? t2 = Time.now + (exec.actual_base_timeout_termination * 60.0) Tengine::Core::Schedule.safely( safemode(Tengine::Core::Schedule.collection) ).create( event_type_name: "stop.execution.job.tengine", scheduled_at: t2, source_name: name, status: status, properties: orig.properties.merge(stop_reason: 'timeout') ) end submit end on :'success.execution.job.tengine' do name = Tengine::Job::Signal.new(event).execution.name_as_resource Tengine::Core::Schedule.safely( safemode(Tengine::Core::Schedule.collection) ).where( source_name: name, status: Tengine::Core::Schedule::SCHEDULED ).update_all(status: Tengine::Core::Schedule::INVALID) submit end on :'error.execution.job.tengine' do name = Tengine::Job::Signal.new(event).execution.name_as_resource Tengine::Core::Schedule.safely( safemode(Tengine::Core::Schedule.collection) ).where( source_name: name, status: Tengine::Core::Schedule::SCHEDULED ).update_all(status: Tengine::Core::Schedule::INVALID) submit end end