summaryrefslogtreecommitdiff
path: root/app/services/pod_logs
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/pod_logs
parentdd4bee69b7d55620f7dc9db8c36b478bd4959755 (diff)
downloadgitlab-ce-3cd08f4bf96cda3e9d3abf233095107832b17c20.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services/pod_logs')
-rw-r--r--app/services/pod_logs/base_service.rb8
-rw-r--r--app/services/pod_logs/elasticsearch_service.rb28
2 files changed, 27 insertions, 9 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