summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReuben Pereira <rpereira@gitlab.com>2019-09-02 14:35:02 +0000
committerSean McGivern <sean@gitlab.com>2019-09-02 14:35:02 +0000
commit414523b0bf7fc5728d8d118b2823be8610546fe6 (patch)
treed3b8612b2ac57f9b2ccf5d6aca45719e55c79472
parent2d3dc05fb948c27d0eab1ca2600f0adcf7dc3144 (diff)
downloadgitlab-ce-414523b0bf7fc5728d8d118b2823be8610546fe6.tar.gz
Handle :9090 and 0.0.0.0:9090 listen_address formats
Prometheus listen_address can be in formats of :9090 and 0.0.0.0:9090. But before these can be used to connect a project to Prometheus, they have to converted into absolute URIs.
-rw-r--r--lib/gitlab/database_importers/self_monitoring/project/create_service.rb40
-rw-r--r--locale/gitlab.pot26
-rw-r--r--spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb16
3 files changed, 42 insertions, 40 deletions
diff --git a/lib/gitlab/database_importers/self_monitoring/project/create_service.rb b/lib/gitlab/database_importers/self_monitoring/project/create_service.rb
index 3a170e8b5f8..5422a8631a0 100644
--- a/lib/gitlab/database_importers/self_monitoring/project/create_service.rb
+++ b/lib/gitlab/database_importers/self_monitoring/project/create_service.rb
@@ -45,20 +45,20 @@ module Gitlab
def validate_application_settings
return success if application_settings
- log_error(_('No application_settings found'))
+ log_error('No application_settings found')
error(_('No application_settings found'))
end
def validate_project_created
return success unless project_created?
- log_error(_('Project already created'))
+ log_error('Project already created')
error(_('Project already created'))
end
def validate_admins
unless instance_admins.any?
- log_error(_('No active admin user found'))
+ log_error('No active admin user found')
return error(_('No active admin user found'))
end
@@ -83,7 +83,7 @@ module Gitlab
def create_project
if project_created?
- log_info(_('Instance administration project already exists'))
+ log_info('Instance administration project already exists')
@project = application_settings.instance_administration_project
return success(project: project)
end
@@ -93,7 +93,7 @@ module Gitlab
if project.persisted?
success(project: project)
else
- log_error(_("Could not create instance administration project. Errors: %{errors}") % { errors: project.errors.full_messages })
+ log_error("Could not create instance administration project. Errors: %{errors}" % { errors: project.errors.full_messages })
error(_('Could not create project'))
end
end
@@ -106,7 +106,7 @@ module Gitlab
if result
success
else
- log_error(_("Could not save instance administration project ID, errors: %{errors}") % { errors: application_settings.errors.full_messages })
+ log_error("Could not save instance administration project ID, errors: %{errors}" % { errors: application_settings.errors.full_messages })
error(_('Could not save project ID'))
end
end
@@ -116,7 +116,7 @@ module Gitlab
errors = members.flat_map { |member| member.errors.full_messages }
if errors.any?
- log_error(_('Could not add admins as members to self-monitoring project. Errors: %{errors}') % { errors: errors })
+ log_error('Could not add admins as members to self-monitoring project. Errors: %{errors}' % { errors: errors })
error(_('Could not add admins as members'))
else
success
@@ -128,7 +128,7 @@ module Gitlab
return success unless prometheus_listen_address.present?
uri = parse_url(internal_prometheus_listen_address_uri)
- return error(_('Prometheus listen_address is not a valid URI')) unless uri
+ return error(_('Prometheus listen_address in config/gitlab.yml is not a valid URI')) unless uri
application_settings.add_to_outbound_local_requests_whitelist([uri.normalized_host])
result = application_settings.save
@@ -140,7 +140,7 @@ module Gitlab
Gitlab::CurrentSettings.expire_current_application_settings
success
else
- log_error(_("Could not add prometheus URL to whitelist, errors: %{errors}") % { errors: application_settings.errors.full_messages })
+ log_error("Could not add prometheus URL to whitelist, errors: %{errors}" % { errors: application_settings.errors.full_messages })
error(_('Could not add prometheus URL to whitelist'))
end
end
@@ -152,7 +152,7 @@ module Gitlab
service = project.find_or_initialize_service('prometheus')
unless service.update(prometheus_service_attributes)
- log_error(_('Could not save prometheus manual configuration for self-monitoring project. Errors: %{errors}') % { errors: service.errors.full_messages })
+ log_error('Could not save prometheus manual configuration for self-monitoring project. Errors: %{errors}' % { errors: service.errors.full_messages })
return error(_('Could not save prometheus manual configuration'))
end
@@ -175,15 +175,15 @@ module Gitlab
def prometheus_enabled?
Gitlab.config.prometheus.enable if Gitlab.config.prometheus
rescue Settingslogic::MissingSetting
- log_error(_('prometheus.enable is not present in gitlab.yml'))
+ log_error('prometheus.enable is not present in config/gitlab.yml')
false
end
def prometheus_listen_address
- Gitlab.config.prometheus.listen_address if Gitlab.config.prometheus
+ Gitlab.config.prometheus.listen_address.to_s if Gitlab.config.prometheus
rescue Settingslogic::MissingSetting
- log_error(_('prometheus.listen_address is not present in gitlab.yml'))
+ log_error('Prometheus listen_address is not present in config/gitlab.yml')
nil
end
@@ -228,9 +228,21 @@ module Gitlab
end
def internal_prometheus_listen_address_uri
- if prometheus_listen_address.starts_with?('http')
+ if prometheus_listen_address.starts_with?('0.0.0.0:')
+ # 0.0.0.0:9090
+ port = ':' + prometheus_listen_address.split(':').second
+ 'http://localhost' + port
+
+ elsif prometheus_listen_address.starts_with?(':')
+ # :9090
+ 'http://localhost' + prometheus_listen_address
+
+ elsif prometheus_listen_address.starts_with?('http')
+ # https://localhost:9090
prometheus_listen_address
+
else
+ # localhost:9090
'http://' + prometheus_listen_address
end
end
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index e91061e74c2..a1836646b1a 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -3374,15 +3374,9 @@ msgstr ""
msgid "Could not add admins as members"
msgstr ""
-msgid "Could not add admins as members to self-monitoring project. Errors: %{errors}"
-msgstr ""
-
msgid "Could not add prometheus URL to whitelist"
msgstr ""
-msgid "Could not add prometheus URL to whitelist, errors: %{errors}"
-msgstr ""
-
msgid "Could not authorize chat nickname. Try again!"
msgstr ""
@@ -3398,9 +3392,6 @@ msgstr ""
msgid "Could not create group"
msgstr ""
-msgid "Could not create instance administration project. Errors: %{errors}"
-msgstr ""
-
msgid "Could not create project"
msgstr ""
@@ -3419,18 +3410,12 @@ msgstr ""
msgid "Could not revoke personal access token %{personal_access_token_name}."
msgstr ""
-msgid "Could not save instance administration project ID, errors: %{errors}"
-msgstr ""
-
msgid "Could not save project ID"
msgstr ""
msgid "Could not save prometheus manual configuration"
msgstr ""
-msgid "Could not save prometheus manual configuration for self-monitoring project. Errors: %{errors}"
-msgstr ""
-
msgid "Coverage"
msgstr ""
@@ -6098,9 +6083,6 @@ msgstr ""
msgid "Instance Statistics visibility"
msgstr ""
-msgid "Instance administration project already exists"
-msgstr ""
-
msgid "Instance administrators group already exists"
msgstr ""
@@ -9202,7 +9184,7 @@ msgstr ""
msgid "ProjectsNew|Want to house several dependent projects under the same namespace? %{link_start}Create a group.%{link_end}"
msgstr ""
-msgid "Prometheus listen_address is not a valid URI"
+msgid "Prometheus listen_address in config/gitlab.yml is not a valid URI"
msgstr ""
msgid "PrometheusService|%{exporters} with %{metrics} were found"
@@ -14177,12 +14159,6 @@ msgstr ""
msgid "project avatar"
msgstr ""
-msgid "prometheus.enable is not present in gitlab.yml"
-msgstr ""
-
-msgid "prometheus.listen_address is not present in gitlab.yml"
-msgstr ""
-
msgid "quick actions"
msgstr ""
diff --git a/spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb b/spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb
index b3dedfe1f77..aab6fbcbbd1 100644
--- a/spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb
+++ b/spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb
@@ -176,14 +176,28 @@ describe Gitlab::DatabaseImporters::SelfMonitoring::Project::CreateService do
end
context 'with non default prometheus address' do
+ let(:listen_address) { 'https://localhost:9090' }
+
let(:prometheus_settings) do
{
enable: true,
- listen_address: 'https://localhost:9090'
+ listen_address: listen_address
}
end
it_behaves_like 'has prometheus service', 'https://localhost:9090'
+
+ context 'with :9090 symbol' do
+ let(:listen_address) { :':9090' }
+
+ it_behaves_like 'has prometheus service', 'http://localhost:9090'
+ end
+
+ context 'with 0.0.0.0:9090' do
+ let(:listen_address) { '0.0.0.0:9090' }
+
+ it_behaves_like 'has prometheus service', 'http://localhost:9090'
+ end
end
context 'when prometheus setting is not present in gitlab.yml' do