Commit ffecea6a authored by Sean McGivern's avatar Sean McGivern

Merge branch 'revert-gl-repository' into 'master'

Revert gl-repository changes

Closes gitlab-ee#2822

See merge request !142
parents 4539a066 c6ed2b05
v5.1.1
- Revert "Remove old `project` parameter, use `gl_repository` instead"
v5.1.0 v5.1.0
- Add `gitlab-keys list-key-ids` subcommand for iterating over key IDs to find keys that should be deleted - Add `gitlab-keys list-key-ids` subcommand for iterating over key IDs to find keys that should be deleted
......
...@@ -67,13 +67,11 @@ class GitlabNet ...@@ -67,13 +67,11 @@ class GitlabNet
JSON.parse(resp.body) rescue {} JSON.parse(resp.body) rescue {}
end end
def merge_request_urls(gl_repository, changes) def merge_request_urls(gl_repository, repo_path, changes)
changes = changes.join("\n") unless changes.kind_of?(String) changes = changes.join("\n") unless changes.kind_of?(String)
changes = changes.encode('UTF-8', 'ASCII', invalid: :replace, replace: '') changes = changes.encode('UTF-8', 'ASCII', invalid: :replace, replace: '')
url = "#{host}/merge_request_urls?" \ url = "#{host}/merge_request_urls?project=#{URI.escape(repo_path)}&changes=#{URI.escape(changes)}"
"gl_repository=#{URI.escape(gl_repository)}&" \ url += "&gl_repository=#{URI.escape(gl_repository)}" if gl_repository
"changes=#{URI.escape(changes)}"
resp = get(url) resp = get(url)
JSON.parse(resp.body) rescue [] JSON.parse(resp.body) rescue []
end end
...@@ -98,8 +96,9 @@ class GitlabNet ...@@ -98,8 +96,9 @@ class GitlabNet
{} {}
end end
def notify_post_receive(gl_repository) def notify_post_receive(gl_repository, repo_path)
resp = post("#{host}/notify_post_receive", gl_repository: gl_repository) params = { gl_repository: gl_repository, project: repo_path }
resp = post("#{host}/notify_post_receive", params)
resp.code == '200' resp.code == '200'
rescue rescue
......
...@@ -33,11 +33,11 @@ class GitlabPostReceive ...@@ -33,11 +33,11 @@ class GitlabPostReceive
end end
merge_request_urls = GitlabMetrics.measure("merge-request-urls") do merge_request_urls = GitlabMetrics.measure("merge-request-urls") do
api.merge_request_urls(gl_repository, changes) api.merge_request_urls(@gl_repository, @repo_path, @changes)
end end
print_merge_request_links(merge_request_urls) print_merge_request_links(merge_request_urls)
api.notify_post_receive(gl_repository) api.notify_post_receive(gl_repository, repo_path)
rescue GitlabNet::ApiUnreachableError rescue GitlabNet::ApiUnreachableError
nil nil
end end
...@@ -107,11 +107,14 @@ class GitlabPostReceive ...@@ -107,11 +107,14 @@ class GitlabPostReceive
def update_redis def update_redis
# Encode changes as base64 so we don't run into trouble with non-UTF-8 input. # Encode changes as base64 so we don't run into trouble with non-UTF-8 input.
changes = Base64.encode64(@changes) changes = Base64.encode64(@changes)
# TODO: Change to `@gl_repository` in next release.
# See https://gitlab.com/gitlab-org/gitlab-shell/merge_requests/130#note_28747613
project_identifier = @gl_repository || @repo_path
queue = "#{config.redis_namespace}:queue:post_receive" queue = "#{config.redis_namespace}:queue:post_receive"
msg = JSON.dump({ msg = JSON.dump({
'class' => 'PostReceive', 'class' => 'PostReceive',
'args' => [@gl_repository, @actor, changes], 'args' => [project_identifier, @actor, changes],
'jid' => @jid, 'jid' => @jid,
'enqueued_at' => Time.now.to_f 'enqueued_at' => Time.now.to_f
}) })
......
...@@ -97,13 +97,20 @@ describe GitlabNet, vcr: true do ...@@ -97,13 +97,20 @@ describe GitlabNet, vcr: true do
describe :merge_request_urls do describe :merge_request_urls do
let(:gl_repository) { "project-1" } let(:gl_repository) { "project-1" }
let(:repo_path) { "/path/to/my/repo.git" }
let(:changes) { "123456 789012 refs/heads/test\n654321 210987 refs/tags/tag" } let(:changes) { "123456 789012 refs/heads/test\n654321 210987 refs/tags/tag" }
let(:encoded_changes) { "123456%20789012%20refs/heads/test%0A654321%20210987%20refs/tags/tag" } let(:encoded_changes) { "123456%20789012%20refs/heads/test%0A654321%20210987%20refs/tags/tag" }
it "sends the given arguments as encoded URL parameters" do it "sends the given arguments as encoded URL parameters" do
gitlab_net.should_receive(:get).with("#{host}/merge_request_urls?gl_repository=#{gl_repository}&changes=#{encoded_changes}") gitlab_net.should_receive(:get).with("#{host}/merge_request_urls?project=#{repo_path}&changes=#{encoded_changes}&gl_repository=#{gl_repository}")
gitlab_net.merge_request_urls(gl_repository, changes) gitlab_net.merge_request_urls(gl_repository, repo_path, changes)
end
it "omits the gl_repository parameter if it's nil" do
gitlab_net.should_receive(:get).with("#{host}/merge_request_urls?project=#{repo_path}&changes=#{encoded_changes}")
gitlab_net.merge_request_urls(nil, repo_path, changes)
end end
end end
...@@ -158,20 +165,21 @@ describe GitlabNet, vcr: true do ...@@ -158,20 +165,21 @@ describe GitlabNet, vcr: true do
describe '#notify_post_receive' do describe '#notify_post_receive' do
let(:gl_repository) { 'project-1' } let(:gl_repository) { 'project-1' }
let(:repo_path) { '/path/to/my/repo.git' }
let(:params) do let(:params) do
{ gl_repository: gl_repository } { gl_repository: gl_repository, project: repo_path }
end end
it 'sets the arguments as form parameters' do it 'sets the arguments as form parameters' do
VCR.use_cassette('notify-post-receive') do VCR.use_cassette('notify-post-receive') do
Net::HTTP::Post.any_instance.should_receive(:set_form_data).with(hash_including(params)) Net::HTTP::Post.any_instance.should_receive(:set_form_data).with(hash_including(params))
gitlab_net.notify_post_receive(gl_repository) gitlab_net.notify_post_receive(gl_repository, repo_path)
end end
end end
it 'returns true if notification was succesful' do it 'returns true if notification was succesful' do
VCR.use_cassette('notify-post-receive') do VCR.use_cassette('notify-post-receive') do
expect(gitlab_net.notify_post_receive(gl_repository)).to be_true expect(gitlab_net.notify_post_receive(gl_repository, repo_path)).to be_true
end end
end end
end end
......
...@@ -19,7 +19,7 @@ describe GitlabPostReceive do ...@@ -19,7 +19,7 @@ describe GitlabPostReceive do
before do before do
GitlabConfig.any_instance.stub(repos_path: repository_path) GitlabConfig.any_instance.stub(repos_path: repository_path)
GitlabNet.any_instance.stub(broadcast_message: { }) GitlabNet.any_instance.stub(broadcast_message: { })
GitlabNet.any_instance.stub(:merge_request_urls).with(gl_repository, wrongly_encoded_changes) { [] } GitlabNet.any_instance.stub(:merge_request_urls).with(gl_repository, repo_path, wrongly_encoded_changes) { [] }
GitlabNet.any_instance.stub(notify_post_receive: true) GitlabNet.any_instance.stub(notify_post_receive: true)
expect(Time).to receive(:now).and_return(enqueued_at) expect(Time).to receive(:now).and_return(enqueued_at)
end end
...@@ -37,7 +37,7 @@ describe GitlabPostReceive do ...@@ -37,7 +37,7 @@ describe GitlabPostReceive do
context 'Without broad cast message' do context 'Without broad cast message' do
context 'pushing new branch' do context 'pushing new branch' do
before do before do
GitlabNet.any_instance.stub(:merge_request_urls).with(gl_repository, wrongly_encoded_changes) do GitlabNet.any_instance.stub(:merge_request_urls).with(gl_repository, repo_path, wrongly_encoded_changes) do
[{ [{
"branch_name" => "new_branch", "branch_name" => "new_branch",
"url" => "http://localhost/dzaporozhets/gitlab-ci/merge_requests/new?merge_request%5Bsource_branch%5D=new_branch", "url" => "http://localhost/dzaporozhets/gitlab-ci/merge_requests/new?merge_request%5Bsource_branch%5D=new_branch",
...@@ -64,7 +64,7 @@ describe GitlabPostReceive do ...@@ -64,7 +64,7 @@ describe GitlabPostReceive do
context 'pushing existing branch with merge request created' do context 'pushing existing branch with merge request created' do
before do before do
GitlabNet.any_instance.stub(:merge_request_urls).with(gl_repository, wrongly_encoded_changes) do GitlabNet.any_instance.stub(:merge_request_urls).with(gl_repository, repo_path, wrongly_encoded_changes) do
[{ [{
"branch_name" => "feature_branch", "branch_name" => "feature_branch",
"url" => "http://localhost/dzaporozhets/gitlab-ci/merge_requests/1", "url" => "http://localhost/dzaporozhets/gitlab-ci/merge_requests/1",
...@@ -92,7 +92,7 @@ describe GitlabPostReceive do ...@@ -92,7 +92,7 @@ describe GitlabPostReceive do
context 'show broadcast message and merge request link' do context 'show broadcast message and merge request link' do
before do before do
GitlabNet.any_instance.stub(:merge_request_urls).with(gl_repository, wrongly_encoded_changes) do GitlabNet.any_instance.stub(:merge_request_urls).with(gl_repository, repo_path, wrongly_encoded_changes) do
[{ [{
"branch_name" => "new_branch", "branch_name" => "new_branch",
"url" => "http://localhost/dzaporozhets/gitlab-ci/merge_requests/new?merge_request%5Bsource_branch%5D=new_branch", "url" => "http://localhost/dzaporozhets/gitlab-ci/merge_requests/new?merge_request%5Bsource_branch%5D=new_branch",
...@@ -146,6 +146,19 @@ describe GitlabPostReceive do ...@@ -146,6 +146,19 @@ describe GitlabPostReceive do
gitlab_post_receive.exec gitlab_post_receive.exec
end end
context 'when gl_repository is nil' do
let(:gl_repository) { nil }
it "pushes a Sidekiq job with the repository path" do
expect(redis_client).to receive(:rpush).with(
'resque:gitlab:queue:post_receive',
%Q/{"class":"PostReceive","args":["#{repo_path}","#{actor}",#{base64_changes.inspect}],"jid":"#{gitlab_post_receive.jid}","enqueued_at":#{enqueued_at.to_f}}/
).and_return(true)
gitlab_post_receive.exec
end
end
end end
context 'reference counter' do context 'reference counter' do
...@@ -179,7 +192,7 @@ describe GitlabPostReceive do ...@@ -179,7 +192,7 @@ describe GitlabPostReceive do
context 'post_receive notification' do context 'post_receive notification' do
it 'calls the api to notify the execution of the hook' do it 'calls the api to notify the execution of the hook' do
expect_any_instance_of(GitlabNet).to receive(:notify_post_receive). expect_any_instance_of(GitlabNet).to receive(:notify_post_receive).
with(gl_repository) with(gl_repository, repo_path)
gitlab_post_receive.exec gitlab_post_receive.exec
end end
......
...@@ -41,6 +41,6 @@ http_interactions: ...@@ -41,6 +41,6 @@ http_interactions:
body: body:
encoding: UTF-8 encoding: UTF-8
string: '200' string: '200'
http_version: http_version:
recorded_at: Wed, 21 Jun 2017 12:47:48 GMT recorded_at: Wed, 21 Jun 2017 12:47:48 GMT
recorded_with: VCR 2.4.0 recorded_with: VCR 2.4.0
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