40 lines
1.1 KiB
Ruby
40 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# DEPRECATED: To be removed as part of https://gitlab.com/groups/gitlab-org/-/epics/5877
|
|
module Clusters
|
|
module Applications
|
|
class ScheduleUpdateService
|
|
BACKOFF_DELAY = 2.minutes
|
|
|
|
attr_accessor :application, :project
|
|
|
|
def initialize(cluster_prometheus_adapter, project)
|
|
@application = cluster_prometheus_adapter&.cluster&.application_prometheus
|
|
@project = project
|
|
end
|
|
|
|
def execute
|
|
return unless application
|
|
return if application.externally_installed?
|
|
|
|
if recently_scheduled?
|
|
worker_class.perform_in(BACKOFF_DELAY, application.name, application.id, project.id, Time.current)
|
|
else
|
|
worker_class.perform_async(application.name, application.id, project.id, Time.current)
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def worker_class
|
|
::ClusterUpdateAppWorker
|
|
end
|
|
|
|
def recently_scheduled?
|
|
return false unless application.last_update_started_at
|
|
|
|
application.last_update_started_at.utc >= Time.current.utc - BACKOFF_DELAY
|
|
end
|
|
end
|
|
end
|
|
end
|