Use RestoreCustomHooks RPC in restore rake task
This commit is contained in:
parent
717a46dd0a
commit
59a8c79f05
2
Gemfile
2
Gemfile
|
@ -418,7 +418,7 @@ group :ed25519 do
|
|||
end
|
||||
|
||||
# Gitaly GRPC client
|
||||
gem 'gitaly-proto', '~> 0.100.0', require: 'gitaly'
|
||||
gem 'gitaly-proto', '~> 0.101.0', require: 'gitaly'
|
||||
gem 'grpc', '~> 1.11.0'
|
||||
|
||||
# Locked until https://github.com/google/protobuf/issues/4210 is closed
|
||||
|
|
|
@ -283,7 +283,7 @@ GEM
|
|||
gettext_i18n_rails (>= 0.7.1)
|
||||
po_to_json (>= 1.0.0)
|
||||
rails (>= 3.2.0)
|
||||
gitaly-proto (0.100.0)
|
||||
gitaly-proto (0.101.0)
|
||||
google-protobuf (~> 3.1)
|
||||
grpc (~> 1.10)
|
||||
github-linguist (5.3.3)
|
||||
|
@ -1039,7 +1039,7 @@ DEPENDENCIES
|
|||
gettext (~> 3.2.2)
|
||||
gettext_i18n_rails (~> 1.8.0)
|
||||
gettext_i18n_rails_js (~> 1.3)
|
||||
gitaly-proto (~> 0.100.0)
|
||||
gitaly-proto (~> 0.101.0)
|
||||
github-linguist (~> 5.3.3)
|
||||
gitlab-flowdock-git-hook (~> 1.0.1)
|
||||
gitlab-gollum-lib (~> 4.2)
|
||||
|
|
|
@ -112,18 +112,31 @@ module Backup
|
|||
end
|
||||
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})
|
||||
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
|
||||
|
||||
output, status = Gitlab::Popen.popen(cmd)
|
||||
unless status.zero?
|
||||
progress_warn(project, cmd.join(' '), output)
|
||||
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)
|
||||
in_path(path_to_tars(project)) do |dir|
|
||||
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
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue