diff options
author | Robert Speicher <robert@gitlab.com> | 2017-07-08 00:48:12 +0000 |
---|---|---|
committer | Robert Speicher <robert@gitlab.com> | 2017-07-08 00:48:12 +0000 |
commit | 42481d1b437f9502dc776b1ba7cb1276d5e4e984 (patch) | |
tree | a96cde72f1b84d5f518cb83540cd7560022db8cb /lib | |
parent | bf23d6c610c0d656bd76c16d348b72de39eb8687 (diff) | |
parent | 8b074b4e78731fa060dac1174e0b0ebc69411c96 (diff) | |
download | gitlab-ce-42481d1b437f9502dc776b1ba7cb1276d5e4e984.tar.gz |
Merge branch 'gitaly-internal-allowed-send-repo' into 'master'
Send Gitaly Repository with /api/internal/allowed
See merge request !12452
Diffstat (limited to 'lib')
-rw-r--r-- | lib/api/helpers/internal_helpers.rb | 35 | ||||
-rw-r--r-- | lib/api/internal.rb | 3 |
2 files changed, 31 insertions, 7 deletions
diff --git a/lib/api/helpers/internal_helpers.rb b/lib/api/helpers/internal_helpers.rb index 5e9cf5e68b1..ecb79317093 100644 --- a/lib/api/helpers/internal_helpers.rb +++ b/lib/api/helpers/internal_helpers.rb @@ -1,6 +1,11 @@ module API module Helpers module InternalHelpers + SSH_GITALY_FEATURES = { + 'git-receive-pack' => :ssh_receive_pack, + 'git-upload-pack' => :ssh_upload_pack + }.freeze + def wiki? set_project unless defined?(@wiki) @wiki @@ -10,7 +15,7 @@ module API set_project unless defined?(@project) @project end - + def redirected_path @redirected_path end @@ -54,15 +59,33 @@ module API Gitlab::GlRepository.gl_repository(project, wiki?) end - # Return the repository full path so that gitlab-shell has it when - # handling ssh commands - def repository_path + # Return the repository depending on whether we want the wiki or the + # regular repository + def repository if wiki? - project.wiki.repository.path_to_repo + project.wiki.repository else - project.repository.path_to_repo + project.repository end end + + # Return the repository full path so that gitlab-shell has it when + # handling ssh commands + def repository_path + repository.path_to_repo + end + + # Return the Gitaly Address if it is enabled + def gitaly_payload(action) + feature = SSH_GITALY_FEATURES[action] + return unless feature && Gitlab::GitalyClient.feature_enabled?(feature) + + { + repository: repository.gitaly_repository, + address: Gitlab::GitalyClient.address(project.repository_storage), + token: Gitlab::GitalyClient.token(project.repository_storage) + } + end end end end diff --git a/lib/api/internal.rb b/lib/api/internal.rb index f1c79970ba4..ef2c08e902c 100644 --- a/lib/api/internal.rb +++ b/lib/api/internal.rb @@ -47,7 +47,8 @@ module API { status: true, gl_repository: gl_repository, - repository_path: repository_path + repository_path: repository_path, + gitaly: gitaly_payload(params[:action]) } end |