debian-mirror-gitlab/app/workers/repository_remove_remote_worker.rb

41 lines
986 B
Ruby
Raw Normal View History

2018-11-08 19:23:39 +05:30
# frozen_string_literal: true
2020-04-08 14:13:33 +05:30
class RepositoryRemoveRemoteWorker # rubocop:disable Scalability/IdempotentWorker
2018-10-15 14:42:47 +05:30
include ApplicationWorker
include ExclusiveLeaseGuard
2019-12-21 20:55:43 +05:30
feature_category :source_code_management
2020-06-23 00:09:42 +05:30
loggable_arguments 1
2019-12-21 20:55:43 +05:30
2018-10-15 14:42:47 +05:30
LEASE_TIMEOUT = 1.hour
attr_reader :project, :remote_name
def perform(project_id, remote_name)
@remote_name = remote_name
@project = Project.find_by_id(project_id)
return unless @project
logger.info("Removing remote #{remote_name} from project #{project.id}")
try_obtain_lease do
remove_remote = @project.repository.remove_remote(remote_name)
if remove_remote
logger.info("Remote #{remote_name} was successfully removed from project #{project.id}")
else
logger.error("Could not remove remote #{remote_name} from project #{project.id}")
end
end
end
def lease_timeout
LEASE_TIMEOUT
end
def lease_key
"remove_remote_#{project.id}_#{remote_name}"
end
end