diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-28 21:09:07 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-28 21:09:07 +0300 |
commit | 1c8fa70f9d0818e2a82089c8643a6e455bca47fd (patch) | |
tree | f339f97de0425270bdd909e2f4d378927b6e0a18 /app/services | |
parent | 736d36d8597d0d1ec1b47644e6d091c3f4a78f45 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services')
-rw-r--r-- | app/services/concerns/deploy_token_methods.rb | 11 | ||||
-rw-r--r-- | app/services/deploy_tokens/create_service.rb | 11 | ||||
-rw-r--r-- | app/services/groups/deploy_tokens/create_service.rb | 13 | ||||
-rw-r--r-- | app/services/projects/deploy_tokens/create_service.rb | 13 | ||||
-rw-r--r-- | app/services/snippets/create_service.rb | 51 |
5 files changed, 79 insertions, 20 deletions
diff --git a/app/services/concerns/deploy_token_methods.rb b/app/services/concerns/deploy_token_methods.rb new file mode 100644 index 00000000000..c0208b16623 --- /dev/null +++ b/app/services/concerns/deploy_token_methods.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module DeployTokenMethods + def create_deploy_token_for(entity, params) + params[:deploy_token_type] = DeployToken.deploy_token_types["#{entity.class.name.downcase}_type".to_sym] + + entity.deploy_tokens.create(params) do |deploy_token| + deploy_token.username = params[:username].presence + end + end +end diff --git a/app/services/deploy_tokens/create_service.rb b/app/services/deploy_tokens/create_service.rb deleted file mode 100644 index 327a1dbf408..00000000000 --- a/app/services/deploy_tokens/create_service.rb +++ /dev/null @@ -1,11 +0,0 @@ -# frozen_string_literal: true - -module DeployTokens - class CreateService < BaseService - def execute - @project.deploy_tokens.create(params) do |deploy_token| - deploy_token.username = params[:username].presence - end - end - end -end diff --git a/app/services/groups/deploy_tokens/create_service.rb b/app/services/groups/deploy_tokens/create_service.rb new file mode 100644 index 00000000000..8c42b56ebb0 --- /dev/null +++ b/app/services/groups/deploy_tokens/create_service.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +module Groups + module DeployTokens + class CreateService < BaseService + include DeployTokenMethods + + def execute + create_deploy_token_for(@group, params) + end + end + end +end diff --git a/app/services/projects/deploy_tokens/create_service.rb b/app/services/projects/deploy_tokens/create_service.rb new file mode 100644 index 00000000000..51cb68dfb10 --- /dev/null +++ b/app/services/projects/deploy_tokens/create_service.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +module Projects + module DeployTokens + class CreateService < BaseService + include DeployTokenMethods + + def execute + create_deploy_token_for(@project, params) + end + end + end +end diff --git a/app/services/snippets/create_service.rb b/app/services/snippets/create_service.rb index 7ded185a6f9..cc645c514b7 100644 --- a/app/services/snippets/create_service.rb +++ b/app/services/snippets/create_service.rb @@ -4,6 +4,8 @@ module Snippets class CreateService < Snippets::BaseService include SpamCheckMethods + CreateRepositoryError = Class.new(StandardError) + def execute filter_spam_check_params @@ -23,13 +25,7 @@ module Snippets spam_check(snippet, current_user) - snippet_saved = snippet.with_transaction_returning_status do - (snippet.save && snippet.store_mentions!).tap do |saved| - create_repository_for(snippet, current_user) if saved - end - end - - if snippet_saved + if save_and_commit(snippet) UserAgentDetailService.new(snippet, @request).create Gitlab::UsageDataCounters::SnippetCounter.count(:create) @@ -41,8 +37,45 @@ module Snippets private - def create_repository_for(snippet, user) - snippet.create_repository if Feature.enabled?(:version_snippets, user) + def save_and_commit(snippet) + snippet.with_transaction_returning_status do + (snippet.save && snippet.store_mentions!).tap do |saved| + break false unless saved + + if Feature.enabled?(:version_snippets, current_user) + create_repository_for(snippet) + create_commit(snippet) + end + end + rescue => e # Rescuing all because we can receive Creation exceptions, GRPC exceptions, Git exceptions, ... + snippet.errors.add(:base, e.message) + + # If the commit action failed we need to remove the repository if exists + if snippet.repository_exists? + Repositories::DestroyService.new(snippet.repository).execute + end + + false + end + end + + def create_repository_for(snippet) + snippet.create_repository + + raise CreateRepositoryError, 'Repository could not be created' unless snippet.repository_exists? + end + + def create_commit(snippet) + commit_attrs = { + branch_name: 'master', + message: 'Initial commit' + } + + snippet.snippet_repository.multi_files_action(current_user, snippet_files, commit_attrs) + end + + def snippet_files + [{ file_path: params[:file_name], content: params[:content] }] end end end |