Commit 9673458e authored by Sean McGivern's avatar Sean McGivern

Merge branch 'zj-create-repo-opt-out' into 'master'

Move CreateRepository to OPT_OUT for Gitaly

See merge request gitlab-org/gitlab-ce!17740
parents 937a99a4 7d02292a
...@@ -1083,7 +1083,7 @@ class Project < ActiveRecord::Base ...@@ -1083,7 +1083,7 @@ class Project < ActiveRecord::Base
# Forked import is handled asynchronously # Forked import is handled asynchronously
return if forked? && !force return if forked? && !force
if gitlab_shell.add_repository(repository_storage, disk_path) if gitlab_shell.create_repository(repository_storage, disk_path)
repository.after_create repository.after_create
true true
else else
......
...@@ -169,7 +169,7 @@ class ProjectWiki ...@@ -169,7 +169,7 @@ class ProjectWiki
private private
def create_repo!(raw_repository) def create_repo!(raw_repository)
gitlab_shell.add_repository(project.repository_storage, disk_path) gitlab_shell.create_repository(project.repository_storage, disk_path)
raise CouldNotCreateWikiError unless raw_repository.exists? raise CouldNotCreateWikiError unless raw_repository.exists?
......
...@@ -69,13 +69,14 @@ module Gitlab ...@@ -69,13 +69,14 @@ module Gitlab
# name - project disk path # name - project disk path
# #
# Ex. # Ex.
# add_repository("/path/to/storage", "gitlab/gitlab-ci") # create_repository("/path/to/storage", "gitlab/gitlab-ci")
# #
def add_repository(storage, name) def create_repository(storage, name)
relative_path = name.dup relative_path = name.dup
relative_path << '.git' unless relative_path.end_with?('.git') relative_path << '.git' unless relative_path.end_with?('.git')
gitaly_migrate(:create_repository) do |is_enabled| gitaly_migrate(:create_repository,
status: Gitlab::GitalyClient::MigrationStatus::OPT_OUT) do |is_enabled|
if is_enabled if is_enabled
repository = Gitlab::Git::Repository.new(storage, relative_path, '') repository = Gitlab::Git::Repository.new(storage, relative_path, '')
repository.gitaly_repository_client.create_repository repository.gitaly_repository_client.create_repository
...@@ -85,7 +86,7 @@ module Gitlab ...@@ -85,7 +86,7 @@ module Gitlab
Gitlab::Git::Repository.create(repo_path, bare: true, symlink_hooks_to: gitlab_shell_hooks_path) Gitlab::Git::Repository.create(repo_path, bare: true, symlink_hooks_to: gitlab_shell_hooks_path)
end end
end end
rescue => err rescue => err # Once the Rugged codes gets removes this can be improved
Rails.logger.error("Failed to add repository #{storage}/#{name}: #{err}") Rails.logger.error("Failed to add repository #{storage}/#{name}: #{err}")
false false
end end
...@@ -487,8 +488,8 @@ module Gitlab ...@@ -487,8 +488,8 @@ module Gitlab
Gitlab.config.gitlab_shell.git_timeout Gitlab.config.gitlab_shell.git_timeout
end end
def gitaly_migrate(method, &block) def gitaly_migrate(method, status: Gitlab::GitalyClient::MigrationStatus::OPT_IN, &block)
Gitlab::GitalyClient.migrate(method, &block) Gitlab::GitalyClient.migrate(method, status: status, &block)
rescue GRPC::NotFound, GRPC::BadStatus => e rescue GRPC::NotFound, GRPC::BadStatus => e
# Old Popen code returns [Error, output] to the caller, so we # Old Popen code returns [Error, output] to the caller, so we
# need to do the same here... # need to do the same here...
......
...@@ -69,7 +69,7 @@ namespace :gitlab do ...@@ -69,7 +69,7 @@ namespace :gitlab do
if File.exist?(path_to_repo) if File.exist?(path_to_repo)
print '-' print '-'
else else
if Gitlab::Shell.new.add_repository(project.repository_storage, if Gitlab::Shell.new.create_repository(project.repository_storage,
project.disk_path) project.disk_path)
print '.' print '.'
else else
......
...@@ -61,7 +61,7 @@ describe ::Gitlab::BareRepositoryImport::Repository do ...@@ -61,7 +61,7 @@ describe ::Gitlab::BareRepositoryImport::Repository do
let(:wiki_path) { File.join(root_path, "#{hashed_path}.wiki.git") } let(:wiki_path) { File.join(root_path, "#{hashed_path}.wiki.git") }
before do before do
gitlab_shell.add_repository(repository_storage, hashed_path) gitlab_shell.create_repository(repository_storage, hashed_path)
repository = Rugged::Repository.new(repo_path) repository = Rugged::Repository.new(repo_path)
repository.config['gitlab.fullpath'] = 'to/repo' repository.config['gitlab.fullpath'] = 'to/repo'
end end
......
...@@ -681,7 +681,7 @@ describe Gitlab::Git::Repository, seed_helper: true do ...@@ -681,7 +681,7 @@ describe Gitlab::Git::Repository, seed_helper: true do
subject { new_repository.fetch_repository_as_mirror(repository) } subject { new_repository.fetch_repository_as_mirror(repository) }
before do before do
Gitlab::Shell.new.add_repository('default', 'my_project') Gitlab::Shell.new.create_repository('default', 'my_project')
end end
after do after do
......
...@@ -20,7 +20,7 @@ describe Gitlab::Shell do ...@@ -20,7 +20,7 @@ describe Gitlab::Shell do
it { is_expected.to respond_to :add_key } it { is_expected.to respond_to :add_key }
it { is_expected.to respond_to :remove_key } it { is_expected.to respond_to :remove_key }
it { is_expected.to respond_to :add_repository } it { is_expected.to respond_to :create_repository }
it { is_expected.to respond_to :remove_repository } it { is_expected.to respond_to :remove_repository }
it { is_expected.to respond_to :fork_repository } it { is_expected.to respond_to :fork_repository }
...@@ -402,8 +402,8 @@ describe Gitlab::Shell do ...@@ -402,8 +402,8 @@ describe Gitlab::Shell do
allow(Gitlab.config.gitlab_shell).to receive(:git_timeout).and_return(800) allow(Gitlab.config.gitlab_shell).to receive(:git_timeout).and_return(800)
end end
describe '#add_repository' do describe '#create_repository' do
shared_examples '#add_repository' do shared_examples '#create_repository' do
let(:repository_storage) { 'default' } let(:repository_storage) { 'default' }
let(:repository_storage_path) { Gitlab.config.repositories.storages[repository_storage]['path'] } let(:repository_storage_path) { Gitlab.config.repositories.storages[repository_storage]['path'] }
let(:repo_name) { 'project/path' } let(:repo_name) { 'project/path' }
...@@ -414,7 +414,7 @@ describe Gitlab::Shell do ...@@ -414,7 +414,7 @@ describe Gitlab::Shell do
end end
it 'creates a repository' do it 'creates a repository' do
expect(gitlab_shell.add_repository(repository_storage, repo_name)).to be_truthy expect(gitlab_shell.create_repository(repository_storage, repo_name)).to be_truthy
expect(File.stat(created_path).mode & 0o777).to eq(0o770) expect(File.stat(created_path).mode & 0o777).to eq(0o770)
...@@ -426,19 +426,19 @@ describe Gitlab::Shell do ...@@ -426,19 +426,19 @@ describe Gitlab::Shell do
it 'returns false when the command fails' do it 'returns false when the command fails' do
FileUtils.mkdir_p(File.dirname(created_path)) FileUtils.mkdir_p(File.dirname(created_path))
# This file will block the creation of the repo's .git directory. That # This file will block the creation of the repo's .git directory. That
# should cause #add_repository to fail. # should cause #create_repository to fail.
FileUtils.touch(created_path) FileUtils.touch(created_path)
expect(gitlab_shell.add_repository(repository_storage, repo_name)).to be_falsy expect(gitlab_shell.create_repository(repository_storage, repo_name)).to be_falsy
end end
end end
context 'with gitaly' do context 'with gitaly' do
it_behaves_like '#add_repository' it_behaves_like '#create_repository'
end end
context 'without gitaly', :skip_gitaly_mock do context 'without gitaly', :skip_gitaly_mock do
it_behaves_like '#add_repository' it_behaves_like '#create_repository'
end end
end end
......
...@@ -1378,7 +1378,7 @@ describe Project do ...@@ -1378,7 +1378,7 @@ describe Project do
context 'using a regular repository' do context 'using a regular repository' do
it 'creates the repository' do it 'creates the repository' do
expect(shell).to receive(:add_repository) expect(shell).to receive(:create_repository)
.with(project.repository_storage, project.disk_path) .with(project.repository_storage, project.disk_path)
.and_return(true) .and_return(true)
...@@ -1388,7 +1388,7 @@ describe Project do ...@@ -1388,7 +1388,7 @@ describe Project do
end end
it 'adds an error if the repository could not be created' do it 'adds an error if the repository could not be created' do
expect(shell).to receive(:add_repository) expect(shell).to receive(:create_repository)
.with(project.repository_storage, project.disk_path) .with(project.repository_storage, project.disk_path)
.and_return(false) .and_return(false)
...@@ -1402,7 +1402,7 @@ describe Project do ...@@ -1402,7 +1402,7 @@ describe Project do
context 'using a forked repository' do context 'using a forked repository' do
it 'does nothing' do it 'does nothing' do
expect(project).to receive(:forked?).and_return(true) expect(project).to receive(:forked?).and_return(true)
expect(shell).not_to receive(:add_repository) expect(shell).not_to receive(:create_repository)
project.create_repository project.create_repository
end end
...@@ -1421,7 +1421,7 @@ describe Project do ...@@ -1421,7 +1421,7 @@ describe Project do
allow(project).to receive(:repository_exists?) allow(project).to receive(:repository_exists?)
.and_return(false) .and_return(false)
allow(shell).to receive(:add_repository) allow(shell).to receive(:create_repository)
.with(project.repository_storage_path, project.disk_path) .with(project.repository_storage_path, project.disk_path)
.and_return(true) .and_return(true)
...@@ -1445,7 +1445,7 @@ describe Project do ...@@ -1445,7 +1445,7 @@ describe Project do
allow(project).to receive(:repository_exists?) allow(project).to receive(:repository_exists?)
.and_return(false) .and_return(false)
expect(shell).to receive(:add_repository) expect(shell).to receive(:create_repository)
.with(project.repository_storage, project.disk_path) .with(project.repository_storage, project.disk_path)
.and_return(true) .and_return(true)
......
...@@ -74,7 +74,7 @@ describe ProjectWiki do ...@@ -74,7 +74,7 @@ describe ProjectWiki do
# Create a fresh project which will not have a wiki # Create a fresh project which will not have a wiki
project_wiki = described_class.new(create(:project), user) project_wiki = described_class.new(create(:project), user)
gitlab_shell = double(:gitlab_shell) gitlab_shell = double(:gitlab_shell)
allow(gitlab_shell).to receive(:add_repository) allow(gitlab_shell).to receive(:create_repository)
allow(project_wiki).to receive(:gitlab_shell).and_return(gitlab_shell) allow(project_wiki).to receive(:gitlab_shell).and_return(gitlab_shell)
expect { project_wiki.send(:wiki) }.to raise_exception(ProjectWiki::CouldNotCreateWikiError) expect { project_wiki.send(:wiki) }.to raise_exception(ProjectWiki::CouldNotCreateWikiError)
......
...@@ -164,7 +164,7 @@ describe Projects::CreateService, '#execute' do ...@@ -164,7 +164,7 @@ describe Projects::CreateService, '#execute' do
context 'with legacy storage' do context 'with legacy storage' do
before do before do
gitlab_shell.add_repository(repository_storage, "#{user.namespace.full_path}/existing") gitlab_shell.create_repository(repository_storage, "#{user.namespace.full_path}/existing")
end end
after do after do
...@@ -200,7 +200,7 @@ describe Projects::CreateService, '#execute' do ...@@ -200,7 +200,7 @@ describe Projects::CreateService, '#execute' do
end end
before do before do
gitlab_shell.add_repository(repository_storage, hashed_path) gitlab_shell.create_repository(repository_storage, hashed_path)
end end
after do after do
......
...@@ -108,7 +108,7 @@ describe Projects::ForkService do ...@@ -108,7 +108,7 @@ describe Projects::ForkService do
let(:repository_storage_path) { Gitlab.config.repositories.storages[repository_storage]['path'] } let(:repository_storage_path) { Gitlab.config.repositories.storages[repository_storage]['path'] }
before do before do
gitlab_shell.add_repository(repository_storage, "#{@to_user.namespace.full_path}/#{@from_project.path}") gitlab_shell.create_repository(repository_storage, "#{@to_user.namespace.full_path}/#{@from_project.path}")
end end
after do after do
......
...@@ -151,7 +151,7 @@ describe Projects::TransferService do ...@@ -151,7 +151,7 @@ describe Projects::TransferService do
before do before do
group.add_owner(user) group.add_owner(user)
unless gitlab_shell.add_repository(repository_storage, "#{group.full_path}/#{project.path}") unless gitlab_shell.create_repository(repository_storage, "#{group.full_path}/#{project.path}")
raise 'failed to add repository' raise 'failed to add repository'
end end
......
...@@ -196,7 +196,7 @@ describe Projects::UpdateService do ...@@ -196,7 +196,7 @@ describe Projects::UpdateService do
let(:project) { create(:project, :legacy_storage, :repository, creator: user, namespace: user.namespace) } let(:project) { create(:project, :legacy_storage, :repository, creator: user, namespace: user.namespace) }
before do before do
gitlab_shell.add_repository(repository_storage, "#{user.namespace.full_path}/existing") gitlab_shell.create_repository(repository_storage, "#{user.namespace.full_path}/existing")
end end
after do after do
......
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