diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-02-17 06:08:59 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-02-17 06:08:59 +0300 |
commit | 38c3d3255398d615cf93867cb82902c3d2cb65a5 (patch) | |
tree | 5cc74f663afedac5125a59f81e2a4a571c61cb49 /app | |
parent | 668e319631855d6d9396a203ded1fa5bcb986f1f (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
9 files changed, 72 insertions, 1 deletions
diff --git a/app/controllers/admin/application_settings_controller.rb b/app/controllers/admin/application_settings_controller.rb index eb3de936fad..7f7d38a09c5 100644 --- a/app/controllers/admin/application_settings_controller.rb +++ b/app/controllers/admin/application_settings_controller.rb @@ -238,6 +238,7 @@ class Admin::ApplicationSettingsController < Admin::ApplicationController *::ApplicationSettingsHelper.visible_attributes, *::ApplicationSettingsHelper.external_authorization_service_attributes, *ApplicationSetting.repository_storages_weighted_attributes, + *ApplicationSetting.kroki_formats_attributes.keys.map { |key| "kroki_formats_#{key}".to_sym }, :lets_encrypt_notification_email, :lets_encrypt_terms_of_service_accepted, :domain_denylist_file, diff --git a/app/helpers/application_settings_helper.rb b/app/helpers/application_settings_helper.rb index b3b90c79076..30ae535b06f 100644 --- a/app/helpers/application_settings_helper.rb +++ b/app/helpers/application_settings_helper.rb @@ -26,6 +26,16 @@ module ApplicationSettingsHelper end end + def kroki_available_formats + ApplicationSetting.kroki_formats_attributes.map do |key, value| + { + name: "kroki_formats_#{key}", + label: value[:label], + value: @application_setting.kroki_formats[key] || false + } + end + end + def storage_weights ApplicationSetting.repository_storages_weighted_attributes.map do |attribute| storage = attribute.to_s.delete_prefix('repository_storages_weighted_') @@ -259,6 +269,7 @@ module ApplicationSettingsHelper :personal_access_token_prefix, :kroki_enabled, :kroki_url, + :kroki_formats, :plantuml_enabled, :plantuml_url, :polling_interval_multiplier, diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb index 6d375a19ffb..33c058dab96 100644 --- a/app/models/application_setting.rb +++ b/app/models/application_setting.rb @@ -29,6 +29,21 @@ class ApplicationSetting < ApplicationRecord @repository_storages_weighted_atributes ||= Gitlab.config.repositories.storages.keys.map { |k| "repository_storages_weighted_#{k}".to_sym }.freeze end + def self.kroki_formats_attributes + { + blockdiag: { + label: 'BlockDiag (includes BlockDiag, SeqDiag, ActDiag, NwDiag, PacketDiag and RackDiag)' + }, + bpmn: { + label: 'BPMN' + }, + excalidraw: { + label: 'Excalidraw' + } + } + end + + store_accessor :kroki_formats, *ApplicationSetting.kroki_formats_attributes.keys, prefix: true store_accessor :repository_storages_weighted, *Gitlab.config.repositories.storages.keys, prefix: true # Include here so it can override methods from @@ -54,6 +69,7 @@ class ApplicationSetting < ApplicationRecord default_value_for :id, 1 default_value_for :repository_storages_weighted, {} + default_value_for :kroki_formats, {} chronic_duration_attr_writer :archive_builds_in_human_readable, :archive_builds_in_seconds @@ -135,6 +151,8 @@ class ApplicationSetting < ApplicationRecord validate :validate_kroki_url, if: :kroki_enabled + validates :kroki_formats, json_schema: { filename: 'application_setting_kroki_formats' } + validates :plantuml_url, presence: true, if: :plantuml_enabled @@ -570,6 +588,25 @@ class ApplicationSetting < ApplicationRecord end end + kroki_formats_attributes.keys.each do |key| + define_method :"kroki_formats_#{key}=" do |value| + super(::Gitlab::Utils.to_boolean(value)) + end + end + + def kroki_format_supported?(diagram_type) + case diagram_type + when 'excalidraw' + return kroki_formats_excalidraw + when 'bpmn' + return kroki_formats_bpmn + end + + return kroki_formats_blockdiag if ::Gitlab::Kroki::BLOCKDIAG_FORMATS.include?(diagram_type) + + ::AsciidoctorExtensions::Kroki::SUPPORTED_DIAGRAM_NAMES.include?(diagram_type) + end + private def parsed_grafana_url diff --git a/app/models/application_setting_implementation.rb b/app/models/application_setting_implementation.rb index e5284d15a49..2911ae6b1c8 100644 --- a/app/models/application_setting_implementation.rb +++ b/app/models/application_setting_implementation.rb @@ -176,6 +176,7 @@ module ApplicationSettingImplementation container_registry_expiration_policies_worker_capacity: 0, kroki_enabled: false, kroki_url: nil, + kroki_formats: { blockdiag: false, bpmn: false, excalidraw: false }, rate_limiting_response_text: nil } end diff --git a/app/services/container_expiration_policies/cleanup_service.rb b/app/services/container_expiration_policies/cleanup_service.rb index 83a4d422a4f..69e5620d986 100644 --- a/app/services/container_expiration_policies/cleanup_service.rb +++ b/app/services/container_expiration_policies/cleanup_service.rb @@ -4,7 +4,7 @@ module ContainerExpirationPolicies class CleanupService attr_reader :repository - SERVICE_RESULT_FIELDS = %i[original_size before_truncate_size after_truncate_size before_delete_size].freeze + SERVICE_RESULT_FIELDS = %i[original_size before_truncate_size after_truncate_size before_delete_size deleted_size].freeze def initialize(repository) @repository = repository diff --git a/app/services/projects/container_repository/cleanup_tags_service.rb b/app/services/projects/container_repository/cleanup_tags_service.rb index af0107436c8..793d2fec033 100644 --- a/app/services/projects/container_repository/cleanup_tags_service.rb +++ b/app/services/projects/container_repository/cleanup_tags_service.rb @@ -25,6 +25,7 @@ module Projects result[:before_truncate_size] = before_truncate_size result[:after_truncate_size] = after_truncate_size result[:before_delete_size] = tags.size + result[:deleted_size] = result[:deleted]&.size result[:status] = :error if before_truncate_size != after_truncate_size end diff --git a/app/validators/json_schemas/application_setting_kroki_formats.json b/app/validators/json_schemas/application_setting_kroki_formats.json new file mode 100644 index 00000000000..460dc74069f --- /dev/null +++ b/app/validators/json_schemas/application_setting_kroki_formats.json @@ -0,0 +1,10 @@ +{ + "description": "Kroki formats", + "type": "object", + "properties": { + "bpmn": { "type": "boolean" }, + "excalidraw": { "type": "boolean" }, + "blockdiag": { "type": "boolean" } + }, + "additionalProperties": false +} diff --git a/app/views/admin/application_settings/_kroki.html.haml b/app/views/admin/application_settings/_kroki.html.haml index 23848fb8b9b..cd57d4cca65 100644 --- a/app/views/admin/application_settings/_kroki.html.haml +++ b/app/views/admin/application_settings/_kroki.html.haml @@ -21,5 +21,13 @@ = f.text_field :kroki_url, class: 'form-control gl-form-input', placeholder: 'http://your-kroki-instance:8000' .form-text.text-muted = (_('When Kroki is enabled, GitLab sends diagrams to an instance of Kroki to display them as images. You can use the free public cloud instance %{kroki_public_url} or you can %{install_link} on your own infrastructure. Once you\'ve installed Kroki, make sure to update the server URL to point to your instance.') % { kroki_public_url: '<code>https://kroki.io</code>', install_link: link_to('install Kroki', 'https://docs.kroki.io/kroki/setup/install/', target: '_blank') }).html_safe + .form-group + = f.label :kroki_formats, 'Additional diagram formats', class: 'label-bold' + .form-text.text-muted + = (_('Using additional formats requires starting the companion containers. Make sure that all %{kroki_images} are running.') % { kroki_images: link_to('required containers', 'https://docs.kroki.io/kroki/setup/install/#_images', target: '_blank') }).html_safe + - kroki_available_formats.each do |format| + .form-check + = f.check_box format[:name], class: 'form-check-input' + = f.label format[:name], format[:label], class: 'form-check-label' = f.submit _('Save changes'), class: "btn gl-button btn-success" diff --git a/app/workers/container_expiration_policies/cleanup_container_repository_worker.rb b/app/workers/container_expiration_policies/cleanup_container_repository_worker.rb index b4afe53d4bc..53220a7afed 100644 --- a/app/workers/container_expiration_policies/cleanup_container_repository_worker.rb +++ b/app/workers/container_expiration_policies/cleanup_container_repository_worker.rb @@ -18,6 +18,7 @@ module ContainerExpirationPolicies cleanup_tags_service_before_truncate_size cleanup_tags_service_after_truncate_size cleanup_tags_service_before_delete_size + cleanup_tags_service_deleted_size ].freeze def perform_work @@ -117,6 +118,7 @@ module ContainerExpirationPolicies after_truncate_size && before_truncate_size != after_truncate_size log_extra_metadata_on_done(:cleanup_tags_service_truncated, !!truncated) + log_extra_metadata_on_done(:running_jobs_count, running_jobs_count) end end end |