CE port of Move EE specific lines in API::Settings
This commit is contained in:
parent
c18136ae48
commit
72e1123691
3 changed files with 25 additions and 47 deletions
19
lib/api/helpers/settings_helpers.rb
Normal file
19
lib/api/helpers/settings_helpers.rb
Normal file
|
@ -0,0 +1,19 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module API
|
||||
module Helpers
|
||||
module SettingsHelpers
|
||||
extend ActiveSupport::Concern
|
||||
extend Grape::API::Helpers
|
||||
|
||||
params :optional_params_ee do
|
||||
end
|
||||
|
||||
def self.optional_attributes
|
||||
[*::ApplicationSettingsHelper.visible_attributes,
|
||||
*::ApplicationSettingsHelper.external_authorization_service_attributes,
|
||||
:performance_bar_allowed_group_id].freeze
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -4,6 +4,8 @@ module API
|
|||
class Settings < Grape::API
|
||||
before { authenticated_as_admin! }
|
||||
|
||||
helpers Helpers::SettingsHelpers
|
||||
|
||||
helpers do
|
||||
def current_settings
|
||||
@current_setting ||=
|
||||
|
@ -136,54 +138,10 @@ module API
|
|||
desc: "Restrictions on the complexity of uploaded #{type.upcase} keys. A value of #{ApplicationSetting::FORBIDDEN_KEY_VALUE} disables all #{type.upcase} keys."
|
||||
end
|
||||
|
||||
if Gitlab.ee?
|
||||
optional :elasticsearch_aws, type: Boolean, desc: 'Enable support for AWS hosted elasticsearch'
|
||||
use :optional_params_ee
|
||||
|
||||
given elasticsearch_aws: ->(val) { val } do
|
||||
optional :elasticsearch_aws_access_key, type: String, desc: 'AWS IAM access key'
|
||||
requires :elasticsearch_aws_region, type: String, desc: 'The AWS region the elasticsearch domain is configured'
|
||||
optional :elasticsearch_aws_secret_access_key, type: String, desc: 'AWS IAM secret access key'
|
||||
end
|
||||
|
||||
optional :elasticsearch_indexing, type: Boolean, desc: 'Enable Elasticsearch indexing'
|
||||
|
||||
given elasticsearch_indexing: ->(val) { val } do
|
||||
optional :elasticsearch_search, type: Boolean, desc: 'Enable Elasticsearch search'
|
||||
requires :elasticsearch_url, type: String, desc: 'The url to use for connecting to Elasticsearch. Use a comma-separated list to support clustering (e.g., "http://localhost:9200, http://localhost:9201")'
|
||||
optional :elasticsearch_limit_indexing, type: Boolean, desc: 'Limit Elasticsearch to index certain namespaces and projects'
|
||||
end
|
||||
|
||||
given elasticsearch_limit_indexing: ->(val) { val } do
|
||||
optional :elasticsearch_namespace_ids, type: Array[Integer], coerce_with: Validations::Types::LabelsList.coerce, desc: 'The namespace ids to index with Elasticsearch.'
|
||||
optional :elasticsearch_project_ids, type: Array[Integer], coerce_with: Validations::Types::LabelsList.coerce, desc: 'The project ids to index with Elasticsearch.'
|
||||
end
|
||||
|
||||
optional :email_additional_text, type: String, desc: 'Additional text added to the bottom of every email for legal/auditing/compliance reasons'
|
||||
optional :help_text, type: String, desc: 'GitLab server administrator information'
|
||||
optional :repository_size_limit, type: Integer, desc: 'Size limit per repository (MB)'
|
||||
optional :file_template_project_id, type: Integer, desc: 'ID of project where instance-level file templates are stored.'
|
||||
optional :repository_storages, type: Array[String], desc: 'A list of names of enabled storage paths, taken from `gitlab.yml`. New projects will be created in one of these stores, chosen at random.'
|
||||
optional :snowplow_enabled, type: Boolean, desc: 'Enable Snowplow'
|
||||
|
||||
given snowplow_enabled: ->(val) { val } do
|
||||
requires :snowplow_collector_uri, type: String, desc: 'Snowplow Collector URI'
|
||||
optional :snowplow_cookie_domain, type: String, desc: 'Snowplow cookie domain'
|
||||
optional :snowplow_site_id, type: String, desc: 'Snowplow Site/Application ID'
|
||||
end
|
||||
|
||||
optional :usage_ping_enabled, type: Boolean, desc: 'Every week GitLab will report license usage back to GitLab, Inc.'
|
||||
end
|
||||
|
||||
optional_attributes = [*::ApplicationSettingsHelper.visible_attributes,
|
||||
*::ApplicationSettingsHelper.external_authorization_service_attributes,
|
||||
:performance_bar_allowed_group_id]
|
||||
|
||||
if Gitlab.ee?
|
||||
optional_attributes += EE::ApplicationSettingsHelper.possible_licensed_attributes
|
||||
end
|
||||
|
||||
optional(*optional_attributes)
|
||||
at_least_one_of(*optional_attributes)
|
||||
optional(*Helpers::SettingsHelpers.optional_attributes)
|
||||
at_least_one_of(*Helpers::SettingsHelpers.optional_attributes)
|
||||
end
|
||||
put "application/settings" do
|
||||
attrs = declared_params(include_missing: false)
|
||||
|
|
|
@ -13,6 +13,7 @@ describe API::Settings, 'Settings' do
|
|||
expect(json_response['default_projects_limit']).to eq(42)
|
||||
expect(json_response['password_authentication_enabled_for_web']).to be_truthy
|
||||
expect(json_response['repository_storages']).to eq(['default'])
|
||||
expect(json_response['password_authentication_enabled']).to be_truthy
|
||||
expect(json_response['plantuml_enabled']).to be_falsey
|
||||
expect(json_response['plantuml_url']).to be_nil
|
||||
expect(json_response['default_project_visibility']).to be_a String
|
||||
|
|
Loading…
Reference in a new issue