diff options
author | Ahmad Hassan <ahmad.hassan612@gmail.com> | 2018-06-04 15:15:54 +0200 |
---|---|---|
committer | Ahmad Hassan <ahmad.hassan612@gmail.com> | 2018-06-07 14:26:20 +0200 |
commit | 59a8c79f0598d4afafbebeb7e3786a03e555f85d (patch) | |
tree | 4287de9681a99264071a39e6b7b4c131ffbb9773 /lib | |
parent | 717a46dd0a865d33b00cc94ec7252e706c8cd4eb (diff) | |
download | gitlab-ce-59a8c79f0598d4afafbebeb7e3786a03e555f85d.tar.gz |
Use RestoreCustomHooks RPC in restore rake task
Diffstat (limited to 'lib')
-rw-r--r-- | lib/backup/repository.rb | 33 | ||||
-rw-r--r-- | lib/gitlab/gitaly_client/repository_service.rb | 22 |
2 files changed, 45 insertions, 10 deletions
diff --git a/lib/backup/repository.rb b/lib/backup/repository.rb index 1b1c83d9fb3..0119c5d6851 100644 --- a/lib/backup/repository.rb +++ b/lib/backup/repository.rb @@ -112,18 +112,31 @@ module Backup end end + def local_restore_custom_hooks(project, dir) + path_to_project_repo = Gitlab::GitalyClient::StorageSettings.allow_disk_access do + path_to_repo(project) + end + cmd = %W(tar -xf #{path_to_tars(project, dir)} -C #{path_to_project_repo} #{dir}) + output, status = Gitlab::Popen.popen(cmd) + unless status.zero? + progress_warn(project, cmd.join(' '), output) + end + end + + def gitaly_restore_custom_hooks(project, dir) + custom_hooks_path = path_to_tars(project, dir) + Gitlab::GitalyClient::RepositoryService.new(project.repository) + .restore_custom_hooks(custom_hooks_path) + end + def restore_custom_hooks(project) - # TODO: Need to find a way to do this for gitaly - # Gitaly migration issue: https://gitlab.com/gitlab-org/gitaly/issues/1195 in_path(path_to_tars(project)) do |dir| - path_to_project_repo = Gitlab::GitalyClient::StorageSettings.allow_disk_access do - path_to_repo(project) - end - cmd = %W(tar -xf #{path_to_tars(project, dir)} -C #{path_to_project_repo} #{dir}) - - output, status = Gitlab::Popen.popen(cmd) - unless status.zero? - progress_warn(project, cmd.join(' '), output) + gitaly_migrate(:restore_custom_hooks) do |is_enabled| + if is_enabled + local_restore_custom_hooks(project, dir) + else + gitaly_restore_custom_hooks(project, dir) + end end end end diff --git a/lib/gitlab/gitaly_client/repository_service.rb b/lib/gitlab/gitaly_client/repository_service.rb index ee01f5a5bd9..7323cb65c29 100644 --- a/lib/gitlab/gitaly_client/repository_service.rb +++ b/lib/gitlab/gitaly_client/repository_service.rb @@ -235,6 +235,28 @@ module Gitlab ) end + def restore_custom_hooks(custom_hooks_path) + request = Gitaly::RestoreCustomHooksRequest.new(repository: @gitaly_repo) + enum = Enumerator.new do |y| + File.open(custom_hooks_path, 'rb') do |f| + while data = f.read(MAX_MSG_SIZE) + request.data = data + + y.yield request + request = Gitaly::RestoreCustomHooksRequest.new + end + end + end + + GitalyClient.call( + @storage, + :repository_service, + :restore_custom_hooks, + enum, + timeout: GitalyClient.default_timeout + ) + end + def create_from_snapshot(http_url, http_auth) request = Gitaly::CreateRepositoryFromSnapshotRequest.new( repository: @gitaly_repo, |