diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-01-13 21:07:39 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-01-13 21:07:39 +0000 |
commit | 74a89b1221eaf780374bd1d4c5b2ee4a0f488908 (patch) | |
tree | 27dbcfdbc4216e9bee04b9be9c974d86744d51ba /lib | |
parent | b0abae12affecc466aeb10889e8a6c000d6f67f5 (diff) | |
download | gitlab-ce-74a89b1221eaf780374bd1d4c5b2ee4a0f488908.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib')
-rw-r--r-- | lib/api/api.rb | 1 | ||||
-rw-r--r-- | lib/api/deployments.rb | 20 | ||||
-rw-r--r-- | lib/api/entities/error_tracking.rb | 13 | ||||
-rw-r--r-- | lib/api/error_tracking.rb | 28 | ||||
-rw-r--r-- | lib/api/helpers/merge_requests_helpers.rb | 68 | ||||
-rw-r--r-- | lib/api/merge_requests.rb | 32 | ||||
-rw-r--r-- | lib/gitlab/app_json_logger.rb | 9 | ||||
-rw-r--r-- | lib/gitlab/app_logger.rb | 12 | ||||
-rw-r--r-- | lib/gitlab/app_text_logger.rb | 13 | ||||
-rw-r--r-- | lib/gitlab/multi_destination_logger.rb | 49 |
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 |