diff options
Diffstat (limited to 'app/services/projects/transfer_service.rb')
-rw-r--r-- | app/services/projects/transfer_service.rb | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/app/services/projects/transfer_service.rb b/app/services/projects/transfer_service.rb index 4a9d96d266c..642ec37619f 100644 --- a/app/services/projects/transfer_service.rb +++ b/app/services/projects/transfer_service.rb @@ -13,6 +13,14 @@ module Projects include Gitlab::ShellAdapter TransferError = Class.new(StandardError) + def log_project_transfer_success(project, new_namespace) + log_transfer(project, new_namespace, nil) + end + + def log_project_transfer_error(project, new_namespace, error_message) + log_transfer(project, new_namespace, error_message) + end + def execute(new_namespace) @new_namespace = new_namespace @@ -36,10 +44,15 @@ module Projects transfer(project) + log_project_transfer_success(project, @new_namespace) + true rescue Projects::TransferService::TransferError => ex project.reset project.errors.add(:new_namespace, ex.message) + + log_project_transfer_error(project, @new_namespace, ex.message) + false end @@ -47,6 +60,27 @@ module Projects attr_reader :old_path, :new_path, :new_namespace, :old_namespace + def log_transfer(project, new_namespace, error_message = nil) + action = error_message.nil? ? "was" : "was not" + + log_payload = { + message: "Project #{action} transferred to a new namespace", + project_id: project.id, + project_path: project.full_path, + project_namespace: project.namespace.full_path, + namespace_id: project.namespace_id, + new_namespace_id: new_namespace&.id, + new_project_namespace: new_namespace&.full_path, + error_message: error_message + } + + if error_message.nil? + ::Gitlab::AppLogger.info(log_payload) + else + ::Gitlab::AppLogger.error(log_payload) + end + end + # rubocop: disable CodeReuse/ActiveRecord def transfer(project) @old_path = project.full_path @@ -110,7 +144,7 @@ module Projects update_pending_builds - post_update_hooks(project) + post_update_hooks(project, @old_group) rescue Exception # rubocop:disable Lint/RescueException rollback_side_effects raise @@ -119,7 +153,7 @@ module Projects end # Overridden in EE - def post_update_hooks(project) + def post_update_hooks(project, _old_group) ensure_personal_project_owner_membership(project) invalidate_personal_projects_counts |