Skip to content
Snippets Groups Projects
Commit 08ce213c authored by Ahmad Sherif's avatar Ahmad Sherif
Browse files

Migrate Workhorse SendBlob to Gitaly

parent 64701b51
No related branches found
No related tags found
No related merge requests found
2.3.0
3.0.0
Loading
Loading
@@ -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,
Loading
Loading
@@ -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
Loading
Loading
@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment