Class: Gitlab::Consul::Internal
- Inherits:
-
Object
- Object
- Gitlab::Consul::Internal
- Defined in:
- lib/gitlab/consul/internal.rb
Constant Summary collapse
- Error =
Class.new(StandardError)
- UnexpectedResponseError =
Class.new(Gitlab::Consul::Internal::Error)
- SocketError =
Class.new(Gitlab::Consul::Internal::Error)
- SSLError =
Class.new(Gitlab::Consul::Internal::Error)
- ECONNREFUSED =
Class.new(Gitlab::Consul::Internal::Error)
Class Method Summary collapse
- .api_url ⇒ Object
- .discover_prometheus_server_address ⇒ Object
- .discover_service(service_name:) ⇒ Object
Class Method Details
.api_url ⇒ Object
13 14 15 16 17 18 19 |
# File 'lib/gitlab/consul/internal.rb', line 13 def api_url Gitlab.config.consul.api_url.to_s.presence if Gitlab.config.consul rescue GitlabSettings::MissingSetting Gitlab::AppLogger.error('Consul api_url is not present in config/gitlab.yml') nil end |
.discover_prometheus_server_address ⇒ Object
38 39 40 41 42 43 44 |
# File 'lib/gitlab/consul/internal.rb', line 38 def discover_prometheus_server_address service_address, service_port = discover_service(service_name: 'prometheus') return unless service_address && service_port "#{service_address}:#{service_port}" end |
.discover_service(service_name:) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/gitlab/consul/internal.rb', line 21 def discover_service(service_name:) return unless service_name.present? && api_url api_path = URI.join(api_url, '/v1/catalog/service/', URI.encode_www_form_component(service_name)).to_s services = json_get(api_path, allow_local_requests: true, open_timeout: 5, read_timeout: 10) # Use the first service definition service = services&.first return unless service service_address = service['ServiceAddress'] || service['Address'] service_port = service['ServicePort'] [service_address, service_port] end |