Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/projects/move_deploy_keys_projects_service.rb')
-rw-r--r--app/services/projects/move_deploy_keys_projects_service.rb11
1 files changed, 10 insertions, 1 deletions
diff --git a/app/services/projects/move_deploy_keys_projects_service.rb b/app/services/projects/move_deploy_keys_projects_service.rb
index 98ba5eb3f13..a45b78db383 100644
--- a/app/services/projects/move_deploy_keys_projects_service.rb
+++ b/app/services/projects/move_deploy_keys_projects_service.rb
@@ -5,6 +5,10 @@ module Projects
def execute(source_project, remove_remaining_elements: true)
return unless super
+ # The SHA256 fingerprint should be there, but just in case it isn't
+ # we want to make sure it's generated. Otherwise we might delete keys.
+ ensure_sha256_fingerprints
+
Project.transaction do
move_deploy_keys_projects
remove_remaining_deploy_keys_projects if remove_remaining_elements
@@ -15,6 +19,11 @@ module Projects
private
+ def ensure_sha256_fingerprints
+ @project.deploy_keys.each(&:ensure_sha256_fingerprint!)
+ source_project.deploy_keys.each(&:ensure_sha256_fingerprint!)
+ end
+
def move_deploy_keys_projects
non_existent_deploy_keys_projects.update_all(project_id: @project.id)
end
@@ -23,7 +32,7 @@ module Projects
def non_existent_deploy_keys_projects
source_project.deploy_keys_projects
.joins(:deploy_key)
- .where.not(keys: { fingerprint: @project.deploy_keys.select(:fingerprint) })
+ .where.not(keys: { fingerprint_sha256: @project.deploy_keys.select(:fingerprint_sha256) })
end
# rubocop: enable CodeReuse/ActiveRecord