Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/api/helpers/kubernetes/agent_helpers.rb')
-rw-r--r--lib/api/helpers/kubernetes/agent_helpers.rb72
1 files changed, 62 insertions, 10 deletions
diff --git a/lib/api/helpers/kubernetes/agent_helpers.rb b/lib/api/helpers/kubernetes/agent_helpers.rb
index aa4f4310e1d..eca26c023cf 100644
--- a/lib/api/helpers/kubernetes/agent_helpers.rb
+++ b/lib/api/helpers/kubernetes/agent_helpers.rb
@@ -21,19 +21,13 @@ module API
strong_memoize_attr :agent
def gitaly_info(project)
- gitaly_features = Feature::Gitaly.server_feature_flags
-
- Gitlab::GitalyClient.connection_data(project.repository_storage).merge(features: gitaly_features)
+ Gitlab::GitalyClient.connection_data(project.repository_storage)
end
def gitaly_repository(project)
project.repository.gitaly_repository.to_h
end
- def check_feature_enabled
- not_found!('Internal API not found') unless Feature.enabled?(:kubernetes_agent_internal_api, type: :ops)
- end
-
def check_agent_token
unauthorized! unless agent_token
@@ -47,9 +41,9 @@ module API
def increment_unique_events
events = params[:unique_counters]&.slice(
:agent_users_using_ci_tunnel,
- :k8s_api_proxy_requests_unique_users_via_ci_access, :k8s_api_proxy_requests_unique_agents_via_ci_access,
- :k8s_api_proxy_requests_unique_users_via_user_access, :k8s_api_proxy_requests_unique_agents_via_user_access,
- :k8s_api_proxy_requests_unique_users_via_pat_access, :k8s_api_proxy_requests_unique_agents_via_pat_access,
+ :k8s_api_proxy_requests_unique_agents_via_ci_access,
+ :k8s_api_proxy_requests_unique_agents_via_user_access,
+ :k8s_api_proxy_requests_unique_agents_via_pat_access,
:flux_git_push_notified_unique_projects
)
@@ -58,6 +52,41 @@ module API
end
end
+ def track_events
+ event_lists = params[:events]&.slice(
+ :k8s_api_proxy_requests_unique_users_via_ci_access,
+ :k8s_api_proxy_requests_unique_users_via_user_access,
+ :k8s_api_proxy_requests_unique_users_via_pat_access
+ )
+ return if event_lists.blank?
+
+ users, projects = load_users_and_projects(event_lists)
+ event_lists.each do |event_name, events|
+ track_events_for(event_name, events, users, projects)
+ end
+ end
+
+ def track_unique_user_events
+ events = params[:unique_counters]&.slice(
+ :k8s_api_proxy_requests_unique_users_via_ci_access,
+ :k8s_api_proxy_requests_unique_users_via_user_access,
+ :k8s_api_proxy_requests_unique_users_via_pat_access
+ )
+ return if events.blank?
+
+ unique_user_ids = events.values.flatten.uniq
+ users = User.id_in(unique_user_ids).index_by(&:id)
+
+ events.each do |event, user_ids|
+ user_ids.each do |user_id|
+ user = users[user_id]
+ next if user.nil?
+
+ Gitlab::InternalEvents.track_event(event, user: user)
+ end
+ end
+ end
+
def increment_count_events
events = params[:counters]&.slice(
:gitops_sync, :k8s_api_proxy_request, :flux_git_push_notifications_total,
@@ -113,6 +142,29 @@ module API
PersonalAccessToken.find_by_token(params[:access_key])
end
strong_memoize_attr :access_token
+
+ private
+
+ def load_users_and_projects(event_lists)
+ all_events = event_lists.values.flatten
+ unique_user_ids = all_events.pluck('user_id').compact.uniq # rubocop:disable CodeReuse/ActiveRecord -- this pluck isn't from ActiveRecord, it's from ActiveSupport
+ unique_project_ids = all_events.pluck('project_id').compact.uniq # rubocop:disable CodeReuse/ActiveRecord -- this pluck isn't from ActiveRecord, it's from ActiveSupport
+ users = User.id_in(unique_user_ids).index_by(&:id)
+ projects = Project.id_in(unique_project_ids).index_by(&:id)
+ [users, projects]
+ end
+
+ def track_events_for(event_name, events, users, projects)
+ events.each do |event|
+ next if event.blank?
+
+ user = users[event[:user_id]]
+ project = projects[event[:project_id]]
+ next if user.nil? || project.nil?
+
+ Gitlab::InternalEvents.track_event(event_name, user: user, project: project)
+ end
+ end
end
end
end