From bc39a89088ab732730ecb6713ee8fb2a874069ba Mon Sep 17 00:00:00 2001 From: Ben King Date: Mon, 14 Aug 2023 23:04:07 +0000 Subject: [PATCH 1/9] Add configurable API requests setting Maximum authenticated requests to the project/:id/jobs endpoint has now been set as a configurable value for Self-Managed instances in the Administration Area. By default this remains at a recommended value of 600 authenticated requests per minute. Changelog: added --- app/helpers/application_settings_helper.rb | 3 ++- app/models/application_setting.rb | 1 + .../application_setting_implementation.rb | 3 ++- .../application_settings/_ip_limits.html.haml | 5 ++++ ...ndex_rate_limit_to_application_settings.rb | 27 +++++++++++++++++++ db/schema_migrations/20230814045150 | 1 + lib/gitlab/application_rate_limiter.rb | 2 +- 7 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 db/migrate/20230814045150_add_jobs_index_rate_limit_to_application_settings.rb create mode 100644 db/schema_migrations/20230814045150 diff --git a/app/helpers/application_settings_helper.rb b/app/helpers/application_settings_helper.rb index ef91915ce38a5f..0411d24834fa32 100644 --- a/app/helpers/application_settings_helper.rb +++ b/app/helpers/application_settings_helper.rb @@ -507,7 +507,8 @@ def visible_attributes :allow_account_deletion, :gitlab_shell_operation_limit, :namespace_aggregation_schedule_lease_duration_in_seconds, - :ci_max_total_yaml_size_bytes + :ci_max_total_yaml_size_bytes, + :jobs_index_rate_limit ].tap do |settings| next if Gitlab.com? diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb index c7088908de81b1..d425414731ee6f 100644 --- a/app/models/application_setting.rb +++ b/app/models/application_setting.rb @@ -651,6 +651,7 @@ def self.kroki_formats_attributes validates :throttle_authenticated_deprecated_api_period_in_seconds validates :throttle_protected_paths_requests_per_period validates :throttle_protected_paths_period_in_seconds + validates :jobs_index_rate_limit end with_options(numericality: { only_integer: true, greater_than_or_equal_to: 0 }) do diff --git a/app/models/application_setting_implementation.rb b/app/models/application_setting_implementation.rb index 8ed24257d61664..14a9c4c332b5fb 100644 --- a/app/models/application_setting_implementation.rb +++ b/app/models/application_setting_implementation.rb @@ -268,7 +268,8 @@ def defaults # rubocop:disable Metrics/AbcSize gitlab_dedicated_instance: false, ci_max_includes: 150, allow_account_deletion: true, - gitlab_shell_operation_limit: 600 + gitlab_shell_operation_limit: 600, + jobs_index_rate_limit: 600 }.tap do |hsh| hsh.merge!(non_production_defaults) unless Rails.env.production? end diff --git a/app/views/admin/application_settings/_ip_limits.html.haml b/app/views/admin/application_settings/_ip_limits.html.haml index 614b4076b87510..f71cc8ace29d36 100644 --- a/app/views/admin/application_settings/_ip_limits.html.haml +++ b/app/views/admin/application_settings/_ip_limits.html.haml @@ -55,6 +55,11 @@ .form-group = f.label :throttle_authenticated_web_period_in_seconds, _('Authenticated web rate limit period in seconds'), class: 'label-bold' = f.number_field :throttle_authenticated_web_period_in_seconds, class: 'form-control gl-form-input' + + %fieldset + .form-group + = f.label :"jobs_index_rate_limit", html_escape(_('Maximum authenticated requests to %{code_open}project/:id/jobs%{code_close} per minute')) % { code_open: ''.html_safe, code_close: ''.html_safe }, class: 'label-bold' + = f.number_field :"jobs_index_rate_limit", class: 'form-control gl-form-input' %fieldset %legend.h5.gl-border-none diff --git a/db/migrate/20230814045150_add_jobs_index_rate_limit_to_application_settings.rb b/db/migrate/20230814045150_add_jobs_index_rate_limit_to_application_settings.rb new file mode 100644 index 00000000000000..00be6ab0ec8cb4 --- /dev/null +++ b/db/migrate/20230814045150_add_jobs_index_rate_limit_to_application_settings.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +# See https://docs.gitlab.com/ee/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class AddJobsIndexRateLimitToApplicationSettings < Gitlab::Database::Migration[2.1] + # When using the methods "add_concurrent_index" or "remove_concurrent_index" + # you must disable the use of transactions + # as these methods can not run in an existing transaction. + # When using "add_concurrent_index" or "remove_concurrent_index" methods make sure + # that either of them is the _only_ method called in the migration, + # any other changes should go in a separate migration. + # This ensures that upon failure _only_ the index creation or removing fails + # and can be retried or reverted easily. + # + # To disable transactions uncomment the following line and remove these + # comments: + # disable_ddl_transaction! + # + # Configure the `gitlab_schema` to perform data manipulation (DML). + # Visit: https://docs.gitlab.com/ee/development/database/migrations_for_multiple_databases.html + # restrict_gitlab_migration gitlab_schema: :gitlab_main + + def change + add_column :application_settings, :jobs_index_rate_limit, :integer, default: 600, null: false + end +end diff --git a/db/schema_migrations/20230814045150 b/db/schema_migrations/20230814045150 new file mode 100644 index 00000000000000..abac6edc144609 --- /dev/null +++ b/db/schema_migrations/20230814045150 @@ -0,0 +1 @@ +218b30bf9e844ec19b9388980aa5d505fc860a5fb1ad6340e620c1ac90fd799a \ No newline at end of file diff --git a/lib/gitlab/application_rate_limiter.rb b/lib/gitlab/application_rate_limiter.rb index eeaab633bb64aa..58827bc09c49ba 100644 --- a/lib/gitlab/application_rate_limiter.rb +++ b/lib/gitlab/application_rate_limiter.rb @@ -58,8 +58,8 @@ def rate_limits # rubocop:disable Metrics/AbcSize fetch_google_ip_list: { threshold: 10, interval: 1.minute }, project_fork_sync: { threshold: 10, interval: 30.minutes }, ai_action: { threshold: 160, interval: 8.hours }, - jobs_index: { threshold: 600, interval: 1.minute }, vertex_embeddings_api: { threshold: 450, interval: 1.minute }, + jobs_index: { threshold: -> { application_settings.jobs_index_rate_limit}, interval: 1.minute }, bulk_import: { threshold: 6, interval: 1.minute }, projects_api_rate_limit_unauthenticated: { threshold: -> { application_settings.projects_api_rate_limit_unauthenticated }, interval: 10.minutes -- GitLab From 3143bed6b7d4282eabd8a6c9a5859eb9edfb0564 Mon Sep 17 00:00:00 2001 From: Ben King Date: Fri, 25 Aug 2023 14:24:40 +1000 Subject: [PATCH 2/9] Fix linting and pipeline errors --- app/views/admin/application_settings/_ip_limits.html.haml | 6 +++--- db/structure.sql | 1 + lib/gitlab/application_rate_limiter.rb | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/views/admin/application_settings/_ip_limits.html.haml b/app/views/admin/application_settings/_ip_limits.html.haml index f71cc8ace29d36..dbef0dece75f04 100644 --- a/app/views/admin/application_settings/_ip_limits.html.haml +++ b/app/views/admin/application_settings/_ip_limits.html.haml @@ -55,11 +55,11 @@ .form-group = f.label :throttle_authenticated_web_period_in_seconds, _('Authenticated web rate limit period in seconds'), class: 'label-bold' = f.number_field :throttle_authenticated_web_period_in_seconds, class: 'form-control gl-form-input' - + %fieldset .form-group - = f.label :"jobs_index_rate_limit", html_escape(_('Maximum authenticated requests to %{code_open}project/:id/jobs%{code_close} per minute')) % { code_open: ''.html_safe, code_close: ''.html_safe }, class: 'label-bold' - = f.number_field :"jobs_index_rate_limit", class: 'form-control gl-form-input' + = f.label :jobs_index_rate_limit, html_escape(_('Maximum authenticated requests to %{code_open}project/:id/jobs%{code_close} per minute')) % { code_open: ''.html_safe, code_close: ''.html_safe }, class: 'label-bold' + = f.number_field :jobs_index_rate_limit, class: 'form-control gl-form-input' %fieldset %legend.h5.gl-border-none diff --git a/db/structure.sql b/db/structure.sql index 57e38bbfd1f05d..e1416c08572829 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -11851,6 +11851,7 @@ CREATE TABLE application_settings ( container_registry_db_enabled boolean DEFAULT false NOT NULL, encrypted_vertex_ai_access_token bytea, encrypted_vertex_ai_access_token_iv bytea, + jobs_index_rate_limit integer DEFAULT 600 NOT NULL, CONSTRAINT app_settings_container_reg_cleanup_tags_max_list_size_positive CHECK ((container_registry_cleanup_tags_service_max_list_size >= 0)), CONSTRAINT app_settings_container_registry_pre_import_tags_rate_positive CHECK ((container_registry_pre_import_tags_rate >= (0)::numeric)), CONSTRAINT app_settings_dep_proxy_ttl_policies_worker_capacity_positive CHECK ((dependency_proxy_ttl_group_policy_worker_capacity >= 0)), diff --git a/lib/gitlab/application_rate_limiter.rb b/lib/gitlab/application_rate_limiter.rb index 58827bc09c49ba..f9540746e0e86d 100644 --- a/lib/gitlab/application_rate_limiter.rb +++ b/lib/gitlab/application_rate_limiter.rb @@ -59,7 +59,7 @@ def rate_limits # rubocop:disable Metrics/AbcSize project_fork_sync: { threshold: 10, interval: 30.minutes }, ai_action: { threshold: 160, interval: 8.hours }, vertex_embeddings_api: { threshold: 450, interval: 1.minute }, - jobs_index: { threshold: -> { application_settings.jobs_index_rate_limit}, interval: 1.minute }, + jobs_index: { threshold: -> { application_settings.jobs_index_rate_limit }, interval: 1.minute }, bulk_import: { threshold: 6, interval: 1.minute }, projects_api_rate_limit_unauthenticated: { threshold: -> { application_settings.projects_api_rate_limit_unauthenticated }, interval: 10.minutes -- GitLab From 25ea809faa3deb81db7d7ec149411a656d82a8c3 Mon Sep 17 00:00:00 2001 From: Ben King Date: Fri, 25 Aug 2023 15:01:52 +1000 Subject: [PATCH 3/9] Fix spec and locale failures --- locale/gitlab.pot | 3 +++ spec/features/admin/admin_settings_spec.rb | 3 +++ spec/requests/api/ci/jobs_spec.rb | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 80c8ab86e71848..f55f9e716e4e76 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -28771,6 +28771,9 @@ msgstr "" msgid "Maximum authenticated API requests per rate limit period per user" msgstr "" +msgid "Maximum authenticated requests to %{code_open}project/:id/jobs%{code_close} per minute" +msgstr "" + msgid "Maximum authenticated web requests per rate limit period per user" msgstr "" diff --git a/spec/features/admin/admin_settings_spec.rb b/spec/features/admin/admin_settings_spec.rb index f372940a1e7f51..9e9a76330623a4 100644 --- a/spec/features/admin/admin_settings_spec.rb +++ b/spec/features/admin/admin_settings_spec.rb @@ -730,6 +730,8 @@ fill_in 'Maximum authenticated web requests per rate limit period per user', with: 700 fill_in 'Authenticated web rate limit period in seconds', with: 800 + fill_in "Maximum authenticated requests to project/:id/jobs per minute", with: 1000 + fill_in 'Plain-text response to send to clients that hit a rate limit', with: 'Custom message' click_button 'Save changes' @@ -750,6 +752,7 @@ throttle_authenticated_web_enabled: true, throttle_authenticated_web_requests_per_period: 700, throttle_authenticated_web_period_in_seconds: 800, + jobs_index_rate_limit: 1000, rate_limiting_response_text: 'Custom message' ) end diff --git a/spec/requests/api/ci/jobs_spec.rb b/spec/requests/api/ci/jobs_spec.rb index 19ac673308b5ca..41e35de189e036 100644 --- a/spec/requests/api/ci/jobs_spec.rb +++ b/spec/requests/api/ci/jobs_spec.rb @@ -556,7 +556,7 @@ def go before do allow_next_instance_of(Gitlab::ApplicationRateLimiter::BaseStrategy) do |strategy| - threshold = Gitlab::ApplicationRateLimiter.rate_limits[:jobs_index][:threshold] + threshold = Gitlab::ApplicationRateLimiter.rate_limits[:jobs_index][:threshold].call allow(strategy).to receive(:increment).and_return(threshold + 1) end -- GitLab From 21beb9a3a56b56bc48b896e98c4ab8f9b17fc8be Mon Sep 17 00:00:00 2001 From: Ben King Date: Wed, 30 Aug 2023 02:29:41 +0000 Subject: [PATCH 4/9] Remove commented lines --- ...ndex_rate_limit_to_application_settings.rb | 20 ------------------- 1 file changed, 20 deletions(-) diff --git a/db/migrate/20230814045150_add_jobs_index_rate_limit_to_application_settings.rb b/db/migrate/20230814045150_add_jobs_index_rate_limit_to_application_settings.rb index 00be6ab0ec8cb4..2a408f475a206f 100644 --- a/db/migrate/20230814045150_add_jobs_index_rate_limit_to_application_settings.rb +++ b/db/migrate/20230814045150_add_jobs_index_rate_limit_to_application_settings.rb @@ -1,26 +1,6 @@ # frozen_string_literal: true -# See https://docs.gitlab.com/ee/development/migration_style_guide.html -# for more information on how to write migrations for GitLab. - class AddJobsIndexRateLimitToApplicationSettings < Gitlab::Database::Migration[2.1] - # When using the methods "add_concurrent_index" or "remove_concurrent_index" - # you must disable the use of transactions - # as these methods can not run in an existing transaction. - # When using "add_concurrent_index" or "remove_concurrent_index" methods make sure - # that either of them is the _only_ method called in the migration, - # any other changes should go in a separate migration. - # This ensures that upon failure _only_ the index creation or removing fails - # and can be retried or reverted easily. - # - # To disable transactions uncomment the following line and remove these - # comments: - # disable_ddl_transaction! - # - # Configure the `gitlab_schema` to perform data manipulation (DML). - # Visit: https://docs.gitlab.com/ee/development/database/migrations_for_multiple_databases.html - # restrict_gitlab_migration gitlab_schema: :gitlab_main - def change add_column :application_settings, :jobs_index_rate_limit, :integer, default: 600, null: false end -- GitLab From 0ad9dce2c28fabd69c9aa8def96d586eb1f82ae6 Mon Sep 17 00:00:00 2001 From: Ben King Date: Tue, 19 Sep 2023 23:54:15 +0000 Subject: [PATCH 5/9] Update column name --- app/helpers/application_settings_helper.rb | 2 +- app/models/application_setting.rb | 2 +- app/models/application_setting_implementation.rb | 2 +- app/views/admin/application_settings/_ip_limits.html.haml | 4 ++-- ...45150_add_jobs_index_rate_limit_to_application_settings.rb | 2 +- db/structure.sql | 2 +- lib/gitlab/application_rate_limiter.rb | 2 +- spec/features/admin/admin_settings_spec.rb | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/helpers/application_settings_helper.rb b/app/helpers/application_settings_helper.rb index 0411d24834fa32..0fd232a6088898 100644 --- a/app/helpers/application_settings_helper.rb +++ b/app/helpers/application_settings_helper.rb @@ -508,7 +508,7 @@ def visible_attributes :gitlab_shell_operation_limit, :namespace_aggregation_schedule_lease_duration_in_seconds, :ci_max_total_yaml_size_bytes, - :jobs_index_rate_limit + :project_jobs_api_rate_limit ].tap do |settings| next if Gitlab.com? diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb index d425414731ee6f..bf1916460ea41c 100644 --- a/app/models/application_setting.rb +++ b/app/models/application_setting.rb @@ -651,7 +651,7 @@ def self.kroki_formats_attributes validates :throttle_authenticated_deprecated_api_period_in_seconds validates :throttle_protected_paths_requests_per_period validates :throttle_protected_paths_period_in_seconds - validates :jobs_index_rate_limit + validates :project_jobs_api_rate_limit end with_options(numericality: { only_integer: true, greater_than_or_equal_to: 0 }) do diff --git a/app/models/application_setting_implementation.rb b/app/models/application_setting_implementation.rb index 14a9c4c332b5fb..18f1a53f8aaea7 100644 --- a/app/models/application_setting_implementation.rb +++ b/app/models/application_setting_implementation.rb @@ -269,7 +269,7 @@ def defaults # rubocop:disable Metrics/AbcSize ci_max_includes: 150, allow_account_deletion: true, gitlab_shell_operation_limit: 600, - jobs_index_rate_limit: 600 + project_jobs_api_rate_limit: 600 }.tap do |hsh| hsh.merge!(non_production_defaults) unless Rails.env.production? end diff --git a/app/views/admin/application_settings/_ip_limits.html.haml b/app/views/admin/application_settings/_ip_limits.html.haml index dbef0dece75f04..da301d8acd6e4f 100644 --- a/app/views/admin/application_settings/_ip_limits.html.haml +++ b/app/views/admin/application_settings/_ip_limits.html.haml @@ -58,8 +58,8 @@ %fieldset .form-group - = f.label :jobs_index_rate_limit, html_escape(_('Maximum authenticated requests to %{code_open}project/:id/jobs%{code_close} per minute')) % { code_open: ''.html_safe, code_close: ''.html_safe }, class: 'label-bold' - = f.number_field :jobs_index_rate_limit, class: 'form-control gl-form-input' + = f.label :project_jobs_api_rate_limit, html_escape(_('Maximum authenticated requests to %{code_open}project/:id/jobs%{code_close} per minute')) % { code_open: ''.html_safe, code_close: ''.html_safe }, class: 'label-bold' + = f.number_field :project_jobs_api_rate_limit, class: 'form-control gl-form-input' %fieldset %legend.h5.gl-border-none diff --git a/db/migrate/20230814045150_add_jobs_index_rate_limit_to_application_settings.rb b/db/migrate/20230814045150_add_jobs_index_rate_limit_to_application_settings.rb index 2a408f475a206f..08e0a7252ce782 100644 --- a/db/migrate/20230814045150_add_jobs_index_rate_limit_to_application_settings.rb +++ b/db/migrate/20230814045150_add_jobs_index_rate_limit_to_application_settings.rb @@ -2,6 +2,6 @@ class AddJobsIndexRateLimitToApplicationSettings < Gitlab::Database::Migration[2.1] def change - add_column :application_settings, :jobs_index_rate_limit, :integer, default: 600, null: false + add_column :application_settings, :project_jobs_api_rate_limit, :integer, default: 600, null: false end end diff --git a/db/structure.sql b/db/structure.sql index e1416c08572829..c60135f2c34946 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -11851,7 +11851,7 @@ CREATE TABLE application_settings ( container_registry_db_enabled boolean DEFAULT false NOT NULL, encrypted_vertex_ai_access_token bytea, encrypted_vertex_ai_access_token_iv bytea, - jobs_index_rate_limit integer DEFAULT 600 NOT NULL, + project_jobs_api_rate_limit integer DEFAULT 600 NOT NULL, CONSTRAINT app_settings_container_reg_cleanup_tags_max_list_size_positive CHECK ((container_registry_cleanup_tags_service_max_list_size >= 0)), CONSTRAINT app_settings_container_registry_pre_import_tags_rate_positive CHECK ((container_registry_pre_import_tags_rate >= (0)::numeric)), CONSTRAINT app_settings_dep_proxy_ttl_policies_worker_capacity_positive CHECK ((dependency_proxy_ttl_group_policy_worker_capacity >= 0)), diff --git a/lib/gitlab/application_rate_limiter.rb b/lib/gitlab/application_rate_limiter.rb index f9540746e0e86d..bf3f5b61825a4d 100644 --- a/lib/gitlab/application_rate_limiter.rb +++ b/lib/gitlab/application_rate_limiter.rb @@ -59,7 +59,7 @@ def rate_limits # rubocop:disable Metrics/AbcSize project_fork_sync: { threshold: 10, interval: 30.minutes }, ai_action: { threshold: 160, interval: 8.hours }, vertex_embeddings_api: { threshold: 450, interval: 1.minute }, - jobs_index: { threshold: -> { application_settings.jobs_index_rate_limit }, interval: 1.minute }, + jobs_index: { threshold: -> { application_settings.project_jobs_api_rate_limit }, interval: 1.minute }, bulk_import: { threshold: 6, interval: 1.minute }, projects_api_rate_limit_unauthenticated: { threshold: -> { application_settings.projects_api_rate_limit_unauthenticated }, interval: 10.minutes diff --git a/spec/features/admin/admin_settings_spec.rb b/spec/features/admin/admin_settings_spec.rb index 9e9a76330623a4..0f77a69f54b72b 100644 --- a/spec/features/admin/admin_settings_spec.rb +++ b/spec/features/admin/admin_settings_spec.rb @@ -752,7 +752,7 @@ throttle_authenticated_web_enabled: true, throttle_authenticated_web_requests_per_period: 700, throttle_authenticated_web_period_in_seconds: 800, - jobs_index_rate_limit: 1000, + project_jobs_api_rate_limit: 1000, rate_limiting_response_text: 'Custom message' ) end -- GitLab From b728530cc72c711f5ea173dafe034a283a5ae639 Mon Sep 17 00:00:00 2001 From: Ben King Date: Thu, 28 Sep 2023 04:15:08 +0000 Subject: [PATCH 6/9] Update API application settings --- lib/api/settings.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/api/settings.rb b/lib/api/settings.rb index 9616efbfe3778c..9120421fadf6cd 100644 --- a/lib/api/settings.rb +++ b/lib/api/settings.rb @@ -224,6 +224,7 @@ def filter_attributes_using_license(attrs) requires :slack_app_verification_token, type: String, desc: 'The verification token of the GitLab for Slack app. This method of authentication is deprecated by Slack and used only for authenticating slash commands from the app' end optional :namespace_aggregation_schedule_lease_duration_in_seconds, type: Integer, desc: 'Maximum duration (in seconds) between refreshes of namespace statistics (Default: 300)' + optional :project_jobs_api_rate_limit, type: Integer, desc: 'Maximum authenticated requests to /project/:id/jobs per minute' Gitlab::SSHPublicKey.supported_types.each do |type| optional :"#{type}_key_restriction", -- GitLab From 71b8ef73235c55cb624eb5290c37826a0773336f Mon Sep 17 00:00:00 2001 From: Ben King Date: Wed, 4 Oct 2023 22:26:39 +0000 Subject: [PATCH 7/9] Use safe formatting --- app/views/admin/application_settings/_ip_limits.html.haml | 2 +- locale/gitlab.pot | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/admin/application_settings/_ip_limits.html.haml b/app/views/admin/application_settings/_ip_limits.html.haml index da301d8acd6e4f..3541fb642e5210 100644 --- a/app/views/admin/application_settings/_ip_limits.html.haml +++ b/app/views/admin/application_settings/_ip_limits.html.haml @@ -58,7 +58,7 @@ %fieldset .form-group - = f.label :project_jobs_api_rate_limit, html_escape(_('Maximum authenticated requests to %{code_open}project/:id/jobs%{code_close} per minute')) % { code_open: ''.html_safe, code_close: ''.html_safe }, class: 'label-bold' + = f.label :project_jobs_api_rate_limit, safe_format('Maximum authenticated requests to %{open}project/:id/jobs%{close} per minute',tag_pair(tag.code, :open, :close)), class: 'label-bold' = f.number_field :project_jobs_api_rate_limit, class: 'form-control gl-form-input' %fieldset diff --git a/locale/gitlab.pot b/locale/gitlab.pot index f55f9e716e4e76..11454961a575cd 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -28771,7 +28771,7 @@ msgstr "" msgid "Maximum authenticated API requests per rate limit period per user" msgstr "" -msgid "Maximum authenticated requests to %{code_open}project/:id/jobs%{code_close} per minute" +msgid "Maximum authenticated requests to %{open}project/:id/jobs%{close} per minute" msgstr "" msgid "Maximum authenticated web requests per rate limit period per user" -- GitLab From 3b8eaa5493e03b82db6192c9e82c1f37814b0fe8 Mon Sep 17 00:00:00 2001 From: Ben King Date: Wed, 4 Oct 2023 22:28:16 +0000 Subject: [PATCH 8/9] Resolve HAML linting --- app/views/admin/application_settings/_ip_limits.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/admin/application_settings/_ip_limits.html.haml b/app/views/admin/application_settings/_ip_limits.html.haml index 3541fb642e5210..cba37527606a38 100644 --- a/app/views/admin/application_settings/_ip_limits.html.haml +++ b/app/views/admin/application_settings/_ip_limits.html.haml @@ -58,7 +58,7 @@ %fieldset .form-group - = f.label :project_jobs_api_rate_limit, safe_format('Maximum authenticated requests to %{open}project/:id/jobs%{close} per minute',tag_pair(tag.code, :open, :close)), class: 'label-bold' + = f.label :project_jobs_api_rate_limit, safe_format('Maximum authenticated requests to %{open}project/:id/jobs%{close} per minute', tag_pair(tag.code, :open, :close)), class: 'label-bold' = f.number_field :project_jobs_api_rate_limit, class: 'form-control gl-form-input' %fieldset -- GitLab From 13fe0eefa4269f541de76a4a9788a9d3ae0e0c77 Mon Sep 17 00:00:00 2001 From: Ben King Date: Wed, 4 Oct 2023 23:04:54 +0000 Subject: [PATCH 9/9] Run extractor on pot file --- locale/gitlab.pot | 3 --- 1 file changed, 3 deletions(-) diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 11454961a575cd..80c8ab86e71848 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -28771,9 +28771,6 @@ msgstr "" msgid "Maximum authenticated API requests per rate limit period per user" msgstr "" -msgid "Maximum authenticated requests to %{open}project/:id/jobs%{close} per minute" -msgstr "" - msgid "Maximum authenticated web requests per rate limit period per user" msgstr "" -- GitLab