diff options
Diffstat (limited to 'app/services/projects/move_deploy_keys_projects_service.rb')
-rw-r--r-- | app/services/projects/move_deploy_keys_projects_service.rb | 11 |
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 |