Commit 08ce213c authored by Ahmad Sherif's avatar Ahmad Sherif

Migrate Workhorse SendBlob to Gitaly

parent 64701b51
...@@ -62,10 +62,21 @@ module Gitlab ...@@ -62,10 +62,21 @@ module Gitlab
end end
def send_git_blob(repository, blob) def send_git_blob(repository, blob)
params = { params = if Gitlab::GitalyClient.feature_enabled?(:project_raw_show)
'RepoPath' => repository.path_to_repo, {
'BlobId' => blob.id '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, SEND_DATA_HEADER,
...@@ -192,6 +203,13 @@ module Gitlab ...@@ -192,6 +203,13 @@ module Gitlab
def encode(hash) def encode(hash)
Base64.urlsafe_encode64(JSON.dump(hash)) Base64.urlsafe_encode64(JSON.dump(hash))
end 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 end
end end
...@@ -317,4 +317,42 @@ describe Gitlab::Workhorse, lib: true do ...@@ -317,4 +317,42 @@ describe Gitlab::Workhorse, lib: true do
end end
end 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 end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment