diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-13 18:08:52 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-13 18:08:52 +0300 |
commit | 0ab47b994caa80c5587f33dc818626b66cfdafe2 (patch) | |
tree | 5ef3976d2f84e3368903a67ba2dbd87a74b9a43c /app/services | |
parent | 1308dc5eb484ab0f8064989fc551ebdb4b1a7976 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services')
6 files changed, 88 insertions, 13 deletions
diff --git a/app/services/boards/list_service.rb b/app/services/boards/list_service.rb index c6dfd62804f..729bca6580e 100644 --- a/app/services/boards/list_service.rb +++ b/app/services/boards/list_service.rb @@ -5,13 +5,7 @@ module Boards def execute(create_default_board: true) create_board! if create_default_board && parent.boards.empty? - if parent.multiple_issue_boards_available? - boards - else - # When multiple issue boards are not available - # a user is only allowed to view the default shown board - first_board - end + find_boards end private @@ -27,5 +21,18 @@ module Boards def create_board! Boards::CreateService.new(parent, current_user).execute end + + def find_boards + found = + if parent.multiple_issue_boards_available? + boards + else + # When multiple issue boards are not available + # a user is only allowed to view the default shown board + first_board + end + + params[:board_id].present? ? [found.find(params[:board_id])] : found + end end end diff --git a/app/services/container_expiration_policy_service.rb b/app/services/container_expiration_policy_service.rb index 5d141d4d64d..82274fd8668 100644 --- a/app/services/container_expiration_policy_service.rb +++ b/app/services/container_expiration_policy_service.rb @@ -6,9 +6,11 @@ class ContainerExpirationPolicyService < BaseService container_expiration_policy.container_repositories.find_each do |container_repository| CleanupContainerRepositoryWorker.perform_async( - current_user.id, + nil, container_repository.id, - container_expiration_policy.attributes.except("created_at", "updated_at") + container_expiration_policy.attributes + .except('created_at', 'updated_at') + .merge(container_expiration_policy: true) ) end end diff --git a/app/services/metrics/dashboard/self_monitoring_dashboard_service.rb b/app/services/metrics/dashboard/self_monitoring_dashboard_service.rb new file mode 100644 index 00000000000..d705c3f3ce5 --- /dev/null +++ b/app/services/metrics/dashboard/self_monitoring_dashboard_service.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +# Fetches the self monitoring metrics dashboard and formats the output. +# Use Gitlab::Metrics::Dashboard::Finder to retrieve dashboards. +module Metrics + module Dashboard + class SelfMonitoringDashboardService < ::Metrics::Dashboard::PredefinedDashboardService + DASHBOARD_PATH = 'config/prometheus/self_monitoring_default.yml' + DASHBOARD_NAME = 'Default' + + SEQUENCE = [ + STAGES::ProjectMetricsInserter, + STAGES::EndpointInserter, + STAGES::Sorter + ].freeze + + class << self + def valid_params?(params) + matching_dashboard?(params[:dashboard_path]) || self_monitoring_project?(params) + end + + def all_dashboard_paths(_project) + [{ + path: DASHBOARD_PATH, + display_name: DASHBOARD_NAME, + default: true, + system_dashboard: false + }] + end + + def self_monitoring_project?(params) + params[:dashboard_path].nil? && params[:environment]&.project&.self_monitoring? + end + end + end + end +end diff --git a/app/services/projects/container_repository/cleanup_tags_service.rb b/app/services/projects/container_repository/cleanup_tags_service.rb index b995df12e56..046745d725e 100644 --- a/app/services/projects/container_repository/cleanup_tags_service.rb +++ b/app/services/projects/container_repository/cleanup_tags_service.rb @@ -5,7 +5,7 @@ module Projects class CleanupTagsService < BaseService def execute(container_repository) return error('feature disabled') unless can_use? - return error('access denied') unless can_admin? + return error('access denied') unless can_destroy? tags = container_repository.tags tags_by_digest = group_by_digest(tags) @@ -82,8 +82,10 @@ module Projects end end - def can_admin? - can?(current_user, :admin_container_image, project) + def can_destroy? + return true if params['container_expiration_policy'] + + can?(current_user, :destroy_container_image, project) end def can_use? diff --git a/app/services/projects/container_repository/delete_tags_service.rb b/app/services/projects/container_repository/delete_tags_service.rb index d19f275e928..21081bd077f 100644 --- a/app/services/projects/container_repository/delete_tags_service.rb +++ b/app/services/projects/container_repository/delete_tags_service.rb @@ -42,7 +42,7 @@ module Projects # Deletes the dummy image # All created tag digests are the same since they all have the same dummy image. # a single delete is sufficient to remove all tags with it - if deleted_tags.any? && container_repository.delete_tag_by_digest(deleted_tags.values.first) + if deleted_tags.any? && container_repository.delete_tag_by_digest(deleted_tags.each_value.first) success(deleted: deleted_tags.keys) else error('could not delete tags') diff --git a/app/services/users/block_service.rb b/app/services/users/block_service.rb new file mode 100644 index 00000000000..9c393832d8f --- /dev/null +++ b/app/services/users/block_service.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +module Users + class BlockService < BaseService + def initialize(current_user) + @current_user = current_user + end + + def execute(user) + if user.block + after_block_hook(user) + success + else + messages = user.errors.full_messages + error(messages.uniq.join('. ')) + end + end + + private + + def after_block_hook(user) + # overriden by EE module + end + end +end + +Users::BlockService.prepend_if_ee('EE::Users::BlockService') |