Migrate Workhorse SendBlob to Gitaly
This commit is contained in:
parent
64701b51ae
commit
08ce213c41
3 changed files with 61 additions and 5 deletions
|
@ -1 +1 @@
|
|||
2.3.0
|
||||
3.0.0
|
||||
|
|
|
@ -62,10 +62,21 @@ module Gitlab
|
|||
end
|
||||
|
||||
def send_git_blob(repository, blob)
|
||||
params = {
|
||||
'RepoPath' => repository.path_to_repo,
|
||||
'BlobId' => blob.id
|
||||
}
|
||||
params = if Gitlab::GitalyClient.feature_enabled?(:project_raw_show)
|
||||
{
|
||||
'GitalyServer' => gitaly_server_hash(repository),
|
||||
'GetBlobRequest' => {
|
||||
repository: repository.gitaly_repository.to_h,
|
||||
oid: blob.id,
|
||||
limit: -1
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
'RepoPath' => repository.path_to_repo,
|
||||
'BlobId' => blob.id
|
||||
}
|
||||
end
|
||||
|
||||
[
|
||||
SEND_DATA_HEADER,
|
||||
|
@ -192,6 +203,13 @@ module Gitlab
|
|||
def encode(hash)
|
||||
Base64.urlsafe_encode64(JSON.dump(hash))
|
||||
end
|
||||
|
||||
def gitaly_server_hash(repository)
|
||||
{
|
||||
address: Gitlab::GitalyClient.address(repository.project.repository_storage),
|
||||
token: Gitlab::GitalyClient.token(repository.project.repository_storage)
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -317,4 +317,42 @@ describe Gitlab::Workhorse, lib: true do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '.send_git_blob' do
|
||||
include FakeBlobHelpers
|
||||
|
||||
let(:blob) { fake_blob }
|
||||
|
||||
subject { described_class.send_git_blob(repository, blob) }
|
||||
|
||||
context 'when Gitaly project_raw_show feature is enabled' do
|
||||
it 'sets the header correctly' do
|
||||
key, command, params = decode_workhorse_header(subject)
|
||||
|
||||
expect(key).to eq('Gitlab-Workhorse-Send-Data')
|
||||
expect(command).to eq('git-blob')
|
||||
expect(params).to eq({
|
||||
'GitalyServer' => {
|
||||
address: Gitlab::GitalyClient.address(project.repository_storage),
|
||||
token: Gitlab::GitalyClient.token(project.repository_storage)
|
||||
},
|
||||
'GetBlobRequest' => {
|
||||
repository: repository.gitaly_repository.to_h,
|
||||
oid: blob.id,
|
||||
limit: -1
|
||||
}
|
||||
}.deep_stringify_keys)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when Gitaly project_raw_show feature is disabled', skip_gitaly_mock: true do
|
||||
it 'sets the header correctly' do
|
||||
key, command, params = decode_workhorse_header(subject)
|
||||
|
||||
expect(key).to eq('Gitlab-Workhorse-Send-Data')
|
||||
expect(command).to eq('git-blob')
|
||||
expect(params).to eq('RepoPath' => repository.path_to_repo, 'BlobId' => blob.id)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue