summaryrefslogtreecommitdiff
path: root/app/services
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-03-13 00:09:34 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-03-13 00:09:34 +0000
commit3cd08f4bf96cda3e9d3abf233095107832b17c20 (patch)
treedc09a618783a79d70f2a404374d4b850ccf9cc84 /app/services
parentdd4bee69b7d55620f7dc9db8c36b478bd4959755 (diff)
downloadgitlab-ce-3cd08f4bf96cda3e9d3abf233095107832b17c20.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services')
-rw-r--r--app/services/pod_logs/base_service.rb8
-rw-r--r--app/services/pod_logs/elasticsearch_service.rb28
-rw-r--r--app/services/projects/update_repository_storage_service.rb14
-rw-r--r--app/services/x509_certificate_revoke_service.rb9
4 files changed, 38 insertions, 21 deletions
diff --git a/app/services/pod_logs/base_service.rb b/app/services/pod_logs/base_service.rb
index 668ee6b88a8..d94d4e92eb6 100644
--- a/app/services/pod_logs/base_service.rb
+++ b/app/services/pod_logs/base_service.rb
@@ -10,8 +10,6 @@ module PodLogs
CACHE_KEY_GET_POD_LOG = 'get_pod_log'
K8S_NAME_MAX_LENGTH = 253
- SUCCESS_RETURN_KEYS = %i(status logs pod_name container_name pods).freeze
-
def id
cluster.id
end
@@ -49,6 +47,10 @@ module PodLogs
%w(pod_name container_name)
end
+ def success_return_keys
+ %i(status logs pod_name container_name pods)
+ end
+
def check_arguments(result)
return error(_('Cluster does not exist')) if cluster.nil?
return error(_('Namespace is empty')) if namespace.blank?
@@ -122,7 +124,7 @@ module PodLogs
end
def filter_return_keys(result)
- result.slice(*SUCCESS_RETURN_KEYS)
+ result.slice(*success_return_keys)
end
def filter_params(params)
diff --git a/app/services/pod_logs/elasticsearch_service.rb b/app/services/pod_logs/elasticsearch_service.rb
index cd56565ec61..3bb6e2bd846 100644
--- a/app/services/pod_logs/elasticsearch_service.rb
+++ b/app/services/pod_logs/elasticsearch_service.rb
@@ -10,6 +10,7 @@ module PodLogs
:check_container_name,
:check_times,
:check_search,
+ :check_cursor,
:pod_logs,
:filter_return_keys
@@ -18,7 +19,11 @@ module PodLogs
private
def valid_params
- %w(pod_name container_name search start end)
+ super + %w(search start end cursor)
+ end
+
+ def success_return_keys
+ super + %i(cursor)
end
def check_times(result)
@@ -36,19 +41,28 @@ module PodLogs
success(result)
end
+ def check_cursor(result)
+ result[:cursor] = params['cursor'] if params.key?('cursor')
+
+ success(result)
+ end
+
def pod_logs(result)
client = cluster&.application_elastic_stack&.elasticsearch_client
return error(_('Unable to connect to Elasticsearch')) unless client
- result[:logs] = ::Gitlab::Elasticsearch::Logs.new(client).pod_logs(
+ response = ::Gitlab::Elasticsearch::Logs.new(client).pod_logs(
namespace,
result[:pod_name],
- result[:container_name],
- result[:search],
- result[:start],
- result[:end]
+ container_name: result[:container_name],
+ search: result[:search],
+ start_time: result[:start],
+ end_time: result[:end],
+ cursor: result[:cursor]
)
+ result.merge!(response)
+
success(result)
rescue Elasticsearch::Transport::Transport::ServerError => e
::Gitlab::ErrorTracking.track_exception(e)
@@ -58,6 +72,8 @@ module PodLogs
# there is no method on the exception other than the class name to determine the type of error encountered.
status_code: e.class.name.split('::').last
})
+ rescue ::Gitlab::Elasticsearch::Logs::InvalidCursor
+ error(_('Invalid cursor value provided'))
end
end
end
diff --git a/app/services/projects/update_repository_storage_service.rb b/app/services/projects/update_repository_storage_service.rb
index 1565b534b19..0adfd4f8fd7 100644
--- a/app/services/projects/update_repository_storage_service.rb
+++ b/app/services/projects/update_repository_storage_service.rb
@@ -5,19 +5,12 @@ module Projects
include Gitlab::ShellAdapter
Error = Class.new(StandardError)
- RepositoryAlreadyMoved = Class.new(StandardError)
def initialize(project)
@project = project
end
def execute(new_repository_storage_key)
- # Raising an exception is a little heavy handed but this behavior (doing
- # nothing if the repo is already on the right storage) prevents data
- # loss, so it is valuable for us to be able to observe it via the
- # exception.
- raise RepositoryAlreadyMoved if project.repository_storage == new_repository_storage_key
-
mirror_repositories(new_repository_storage_key)
mark_old_paths_for_archive
@@ -30,7 +23,7 @@ module Projects
success
- rescue Error => e
+ rescue Error, ArgumentError, Gitlab::Git::BaseError => e
project.update(repository_read_only: false)
Gitlab::ErrorTracking.track_exception(e, project_path: project.full_path)
@@ -65,10 +58,7 @@ module Projects
raw_repository.gl_repository,
full_path)
- unless new_repository.fetch_repository_as_mirror(raw_repository)
- raise Error, s_('UpdateRepositoryStorage|Failed to fetch %{type} repository as mirror') % { type: type.name }
- end
-
+ new_repository.replicate(raw_repository)
new_checksum = new_repository.checksum
if checksum != new_checksum
diff --git a/app/services/x509_certificate_revoke_service.rb b/app/services/x509_certificate_revoke_service.rb
new file mode 100644
index 00000000000..fdd0dd74a59
--- /dev/null
+++ b/app/services/x509_certificate_revoke_service.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class X509CertificateRevokeService
+ def execute(certificate)
+ return unless certificate.revoked?
+
+ certificate.x509_commit_signatures.update_all(verification_status: :unverified)
+ end
+end