2020-04-22 19:07:51 +05:30
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module Clusters
|
|
|
|
module Applications
|
|
|
|
class ScheduleUpdateService
|
|
|
|
BACKOFF_DELAY = 2.minutes
|
|
|
|
|
|
|
|
attr_accessor :application, :project
|
|
|
|
|
|
|
|
def initialize(application, project)
|
|
|
|
@application = application
|
|
|
|
@project = project
|
|
|
|
end
|
|
|
|
|
|
|
|
def execute
|
|
|
|
return unless application
|
|
|
|
|
|
|
|
if recently_scheduled?
|
2020-05-24 23:13:21 +05:30
|
|
|
worker_class.perform_in(BACKOFF_DELAY, application.name, application.id, project.id, Time.current)
|
2020-04-22 19:07:51 +05:30
|
|
|
else
|
2020-05-24 23:13:21 +05:30
|
|
|
worker_class.perform_async(application.name, application.id, project.id, Time.current)
|
2020-04-22 19:07:51 +05:30
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def worker_class
|
|
|
|
::ClusterUpdateAppWorker
|
|
|
|
end
|
|
|
|
|
|
|
|
def recently_scheduled?
|
|
|
|
return false unless application.last_update_started_at
|
|
|
|
|
2020-05-24 23:13:21 +05:30
|
|
|
application.last_update_started_at.utc >= Time.current.utc - BACKOFF_DELAY
|
2020-04-22 19:07:51 +05:30
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|