From 8c7f4e9d5f36cff46365a7f8c4b9c21578c1e781 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 18 Jun 2020 11:18:50 +0000 Subject: Add latest changes from gitlab-org/gitlab@13-1-stable-ee --- lib/api/project_repository_storage_moves.rb | 57 ++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 2 deletions(-) (limited to 'lib/api/project_repository_storage_moves.rb') diff --git a/lib/api/project_repository_storage_moves.rb b/lib/api/project_repository_storage_moves.rb index 1a63e984fbf..5de623102fb 100644 --- a/lib/api/project_repository_storage_moves.rb +++ b/lib/api/project_repository_storage_moves.rb @@ -24,11 +24,64 @@ module API detail 'This feature was introduced in GitLab 13.0.' success Entities::ProjectRepositoryStorageMove end - get ':id' do - storage_move = ProjectRepositoryStorageMove.find(params[:id]) + params do + requires :repository_storage_move_id, type: Integer, desc: 'The ID of a project repository storage move' + end + get ':repository_storage_move_id' do + storage_move = ProjectRepositoryStorageMove.find(params[:repository_storage_move_id]) + + present storage_move, with: Entities::ProjectRepositoryStorageMove, current_user: current_user + end + end + + params do + requires :id, type: String, desc: 'The ID of a project' + end + resource :projects, requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do + desc 'Get a list of all project repository storage moves' do + detail 'This feature was introduced in GitLab 13.1.' + success Entities::ProjectRepositoryStorageMove + end + params do + use :pagination + end + get ':id/repository_storage_moves' do + storage_moves = user_project.repository_storage_moves.with_projects.order_created_at_desc + + present paginate(storage_moves), with: Entities::ProjectRepositoryStorageMove, current_user: current_user + end + + desc 'Get a project repository storage move' do + detail 'This feature was introduced in GitLab 13.1.' + success Entities::ProjectRepositoryStorageMove + end + params do + requires :repository_storage_move_id, type: Integer, desc: 'The ID of a project repository storage move' + end + get ':id/repository_storage_moves/:repository_storage_move_id' do + storage_move = user_project.repository_storage_moves.find(params[:repository_storage_move_id]) present storage_move, with: Entities::ProjectRepositoryStorageMove, current_user: current_user end + + desc 'Schedule a project repository storage move' do + detail 'This feature was introduced in GitLab 13.1.' + success Entities::ProjectRepositoryStorageMove + end + params do + requires :destination_storage_name, type: String, desc: 'The destination storage shard' + end + post ':id/repository_storage_moves' do + storage_move = user_project.repository_storage_moves.build( + declared_params.merge(source_storage_name: user_project.repository_storage) + ) + + if storage_move.schedule + present storage_move, with: Entities::ProjectRepositoryStorageMove, current_user: current_user + else + render_validation_error!(storage_move) + end + end end end end -- cgit v1.2.3