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
path: root/lib
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-01-14 00:07:39 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-01-14 00:07:39 +0300
commit74a89b1221eaf780374bd1d4c5b2ee4a0f488908 (patch)
tree27dbcfdbc4216e9bee04b9be9c974d86744d51ba /lib
parentb0abae12affecc466aeb10889e8a6c000d6f67f5 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib')
-rw-r--r--lib/api/api.rb1
-rw-r--r--lib/api/deployments.rb20
-rw-r--r--lib/api/entities/error_tracking.rb13
-rw-r--r--lib/api/error_tracking.rb28
-rw-r--r--lib/api/helpers/merge_requests_helpers.rb68
-rw-r--r--lib/api/merge_requests.rb32
-rw-r--r--lib/gitlab/app_json_logger.rb9
-rw-r--r--lib/gitlab/app_logger.rb12
-rw-r--r--lib/gitlab/app_text_logger.rb13
-rw-r--r--lib/gitlab/multi_destination_logger.rb49
10 files changed, 211 insertions, 34 deletions
diff --git a/lib/api/api.rb b/lib/api/api.rb
index 555639a4b62..1aee4fd30ee 100644
--- a/lib/api/api.rb
+++ b/lib/api/api.rb
@@ -117,6 +117,7 @@ module API
mount ::API::DeployKeys
mount ::API::Deployments
mount ::API::Environments
+ mount ::API::ErrorTracking
mount ::API::Events
mount ::API::Features
mount ::API::Files
diff --git a/lib/api/deployments.rb b/lib/api/deployments.rb
index 84d1d8a0aac..62bda64896b 100644
--- a/lib/api/deployments.rb
+++ b/lib/api/deployments.rb
@@ -127,6 +127,26 @@ module API
render_validation_error!(deployment)
end
end
+
+ helpers Helpers::MergeRequestsHelpers
+
+ desc 'Get all merge requests of a deployment' do
+ detail 'This feature was introduced in GitLab 12.7.'
+ success Entities::MergeRequestBasic
+ end
+ params do
+ requires :deployment_id, type: Integer, desc: 'The deployment ID'
+ use :merge_requests_base_params
+ end
+
+ get ':id/deployments/:deployment_id/merge_requests' do
+ authorize! :read_deployment, user_project
+
+ mr_params = declared_params.merge(deployment_id: params[:deployment_id])
+ merge_requests = MergeRequestsFinder.new(current_user, mr_params).execute
+
+ present merge_requests, { with: Entities::MergeRequestBasic, current_user: current_user }
+ end
end
end
end
diff --git a/lib/api/entities/error_tracking.rb b/lib/api/entities/error_tracking.rb
new file mode 100644
index 00000000000..0180572a6cc
--- /dev/null
+++ b/lib/api/entities/error_tracking.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ module ErrorTracking
+ class ProjectSetting < Grape::Entity
+ expose :project_name
+ expose :sentry_external_url
+ expose :api_url
+ end
+ end
+ end
+end
diff --git a/lib/api/error_tracking.rb b/lib/api/error_tracking.rb
new file mode 100644
index 00000000000..f92f1326daa
--- /dev/null
+++ b/lib/api/error_tracking.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+module API
+ class ErrorTracking < Grape::API
+ before { authenticate! }
+
+ params do
+ requires :id, type: String, desc: 'The ID of a project'
+ end
+
+ resource :projects, requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do
+ desc 'Get error tracking settings for the project' do
+ detail 'This feature was introduced in GitLab 12.7.'
+ success Entities::ErrorTracking::ProjectSetting
+ end
+
+ get ':id/error_tracking/settings' do
+ authorize! :admin_operations, user_project
+
+ setting = user_project.error_tracking_setting
+
+ not_found!('Error Tracking Setting') unless setting
+
+ present setting, with: Entities::ErrorTracking::ProjectSetting
+ end
+ end
+ end
+end
diff --git a/lib/api/helpers/merge_requests_helpers.rb b/lib/api/helpers/merge_requests_helpers.rb
new file mode 100644
index 00000000000..0126d7a3756
--- /dev/null
+++ b/lib/api/helpers/merge_requests_helpers.rb
@@ -0,0 +1,68 @@
+# frozen_string_literal: true
+
+module API
+ module Helpers
+ module MergeRequestsHelpers
+ extend Grape::API::Helpers
+ include ::API::Helpers::CustomValidators
+
+ params :merge_requests_base_params do
+ optional :state,
+ type: String,
+ values: %w[opened closed locked merged all],
+ default: 'all',
+ desc: 'Return opened, closed, locked, merged, or all merge requests'
+ optional :order_by,
+ type: String,
+ values: %w[created_at updated_at],
+ default: 'created_at',
+ desc: 'Return merge requests ordered by `created_at` or `updated_at` fields.'
+ optional :sort,
+ type: String,
+ values: %w[asc desc],
+ default: 'desc',
+ desc: 'Return merge requests sorted in `asc` or `desc` order.'
+ optional :milestone, type: String, desc: 'Return merge requests for a specific milestone'
+ optional :labels,
+ type: Array[String],
+ coerce_with: Validations::Types::LabelsList.coerce,
+ desc: 'Comma-separated list of label names'
+ optional :with_labels_details, type: Boolean, desc: 'Return titles of labels and other details', default: false
+ optional :created_after, type: DateTime, desc: 'Return merge requests created after the specified time'
+ optional :created_before, type: DateTime, desc: 'Return merge requests created before the specified time'
+ optional :updated_after, type: DateTime, desc: 'Return merge requests updated after the specified time'
+ optional :updated_before, type: DateTime, desc: 'Return merge requests updated before the specified time'
+ optional :view,
+ type: String,
+ values: %w[simple],
+ desc: 'If simple, returns the `iid`, URL, title, description, and basic state of merge request'
+ optional :author_id, type: Integer, desc: 'Return merge requests which are authored by the user with the given ID'
+ optional :assignee_id,
+ types: [Integer, String],
+ integer_none_any: true,
+ desc: 'Return merge requests which are assigned to the user with the given ID'
+ optional :scope,
+ type: String,
+ values: %w[created-by-me assigned-to-me created_by_me assigned_to_me all],
+ desc: 'Return merge requests for the given scope: `created_by_me`, `assigned_to_me` or `all`'
+ optional :my_reaction_emoji, type: String, desc: 'Return issues reacted by the authenticated user by the given emoji'
+ optional :source_branch, type: String, desc: 'Return merge requests with the given source branch'
+ optional :source_project_id, type: Integer, desc: 'Return merge requests with the given source project id'
+ optional :target_branch, type: String, desc: 'Return merge requests with the given target branch'
+ optional :search,
+ type: String,
+ desc: 'Search merge requests for text present in the title, description, or any combination of these'
+ optional :in, type: String, desc: '`title`, `description`, or a string joining them with comma'
+ optional :wip, type: String, values: %w[yes no], desc: 'Search merge requests for WIP in the title'
+ end
+
+ params :optional_scope_param do
+ optional :scope,
+ type: String,
+ values: %w[created-by-me assigned-to-me created_by_me assigned_to_me all],
+ default: 'created_by_me',
+ desc: 'Return merge requests for the given scope: `created_by_me`, `assigned_to_me` or `all`'
+ end
+ end
+ end
+end
diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb
index 8e65fe2b7a2..9ac268e5b31 100644
--- a/lib/api/merge_requests.rb
+++ b/lib/api/merge_requests.rb
@@ -7,6 +7,7 @@ module API
before { authenticate_non_get! }
helpers ::Gitlab::IssuableMetadata
+ helpers Helpers::MergeRequestsHelpers
# EE::API::MergeRequests would override the following helpers
helpers do
@@ -107,33 +108,7 @@ module API
end
params :merge_requests_params do
- optional :state, type: String, values: %w[opened closed locked merged all], default: 'all',
- desc: 'Return opened, closed, locked, merged, or all merge requests'
- optional :order_by, type: String, values: %w[created_at updated_at], default: 'created_at',
- desc: 'Return merge requests ordered by `created_at` or `updated_at` fields.'
- optional :sort, type: String, values: %w[asc desc], default: 'desc',
- desc: 'Return merge requests sorted in `asc` or `desc` order.'
- optional :milestone, type: String, desc: 'Return merge requests for a specific milestone'
- optional :labels, type: Array[String], coerce_with: Validations::Types::LabelsList.coerce, desc: 'Comma-separated list of label names'
- optional :with_labels_details, type: Boolean, desc: 'Return titles of labels and other details', default: false
- optional :created_after, type: DateTime, desc: 'Return merge requests created after the specified time'
- optional :created_before, type: DateTime, desc: 'Return merge requests created before the specified time'
- optional :updated_after, type: DateTime, desc: 'Return merge requests updated after the specified time'
- optional :updated_before, type: DateTime, desc: 'Return merge requests updated before the specified time'
- optional :view, type: String, values: %w[simple], desc: 'If simple, returns the `iid`, URL, title, description, and basic state of merge request'
- optional :author_id, type: Integer, desc: 'Return merge requests which are authored by the user with the given ID'
- optional :assignee_id, types: [Integer, String], integer_none_any: true,
- desc: 'Return merge requests which are assigned to the user with the given ID'
- optional :scope, type: String, values: %w[created-by-me assigned-to-me created_by_me assigned_to_me all],
- desc: 'Return merge requests for the given scope: `created_by_me`, `assigned_to_me` or `all`'
- optional :my_reaction_emoji, type: String, desc: 'Return issues reacted by the authenticated user by the given emoji'
- optional :source_branch, type: String, desc: 'Return merge requests with the given source branch'
- optional :source_project_id, type: Integer, desc: 'Return merge requests with the given source project id'
- optional :target_branch, type: String, desc: 'Return merge requests with the given target branch'
- optional :search, type: String, desc: 'Search merge requests for text present in the title, description, or any combination of these'
- optional :in, type: String, desc: '`title`, `description`, or a string joining them with comma'
- optional :wip, type: String, values: %w[yes no], desc: 'Search merge requests for WIP in the title'
-
+ use :merge_requests_base_params
use :optional_merge_requests_search_params
use :pagination
end
@@ -145,8 +120,7 @@ module API
end
params do
use :merge_requests_params
- optional :scope, type: String, values: %w[created-by-me assigned-to-me created_by_me assigned_to_me all], default: 'created_by_me',
- desc: 'Return merge requests for the given scope: `created_by_me`, `assigned_to_me` or `all`'
+ use :optional_scope_param
end
get do
authenticate! unless params[:scope] == 'all'
diff --git a/lib/gitlab/app_json_logger.rb b/lib/gitlab/app_json_logger.rb
new file mode 100644
index 00000000000..e29b205e1bf
--- /dev/null
+++ b/lib/gitlab/app_json_logger.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+module Gitlab
+ class AppJsonLogger < Gitlab::JsonLogger
+ def self.file_name_noext
+ 'application_json'
+ end
+ end
+end
diff --git a/lib/gitlab/app_logger.rb b/lib/gitlab/app_logger.rb
index 5edec8b3efe..3f5e9adf925 100644
--- a/lib/gitlab/app_logger.rb
+++ b/lib/gitlab/app_logger.rb
@@ -1,13 +1,15 @@
# frozen_string_literal: true
module Gitlab
- class AppLogger < Gitlab::Logger
- def self.file_name_noext
- 'application'
+ class AppLogger < Gitlab::MultiDestinationLogger
+ LOGGERS = [Gitlab::AppTextLogger, Gitlab::AppJsonLogger].freeze
+
+ def self.loggers
+ LOGGERS
end
- def format_message(severity, timestamp, progname, msg)
- "#{timestamp.to_s(:long)}: #{msg}\n"
+ def self.primary_logger
+ Gitlab::AppTextLogger
end
end
end
diff --git a/lib/gitlab/app_text_logger.rb b/lib/gitlab/app_text_logger.rb
new file mode 100644
index 00000000000..59ac57b2bb4
--- /dev/null
+++ b/lib/gitlab/app_text_logger.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+module Gitlab
+ class AppTextLogger < Gitlab::Logger
+ def self.file_name_noext
+ 'application'
+ end
+
+ def format_message(severity, timestamp, progname, msg)
+ "#{timestamp.to_s(:long)}: #{msg}\n"
+ end
+ end
+end
diff --git a/lib/gitlab/multi_destination_logger.rb b/lib/gitlab/multi_destination_logger.rb
new file mode 100644
index 00000000000..b6b19e81389
--- /dev/null
+++ b/lib/gitlab/multi_destination_logger.rb
@@ -0,0 +1,49 @@
+# frozen_string_literal: true
+
+module Gitlab
+ class MultiDestinationLogger < ::Logger
+ def close
+ loggers.each(&:close)
+ end
+
+ def self.debug(message)
+ loggers.each { |logger| logger.build.debug(message) }
+ end
+
+ def self.error(message)
+ loggers.each { |logger| logger.build.error(message) }
+ end
+
+ def self.warn(message)
+ loggers.each { |logger| logger.build.warn(message) }
+ end
+
+ def self.info(message)
+ loggers.each { |logger| logger.build.info(message) }
+ end
+
+ def self.read_latest
+ primary_logger.read_latest
+ end
+
+ def self.file_name
+ primary_logger.file_name
+ end
+
+ def self.full_log_path
+ primary_logger.full_log_path
+ end
+
+ def self.file_name_noext
+ primary_logger.file_name_noext
+ end
+
+ def self.loggers
+ raise NotImplementedError
+ end
+
+ def self.primary_logger
+ raise NotImplementedError
+ end
+ end
+end