vmpooler 0.14.6 → 0.14.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1dcbff566ca53b6dd3ec05d98b1210b83552e7389a9a9943a20f81984839b8ac
4
- data.tar.gz: 9a3bdcd8323fcc806c532e610f8a0a28246c84ad98c46744a48c069222169faa
3
+ metadata.gz: aa377464c0b9bfa6ac09d96064dceb410417ddcfc81e2523e5d32e691f7e8091
4
+ data.tar.gz: d61f1c0ea6fe636b593912cbe26954edd253b07952b999205adf6b9271c8ae3b
5
5
  SHA512:
6
- metadata.gz: 00adf48793ad92e95bd9400cecd2993b18c60617c5a272d402009e905654e85b9ec2cef361dbb80f0bfc7978180299bb6b06392c87df48739a66a03c2c26639d
7
- data.tar.gz: 5f1970fe7d1a74e8430908531cf0e9d67845054250b9d681fdbe43752d393779f1976160f4d479628441aeaf60085acb3cfaafd52476301eb255f52de586c98b
6
+ metadata.gz: 1f5c68048317e9374725e4c5cf71c53d32c28ad3e287b7f82c54a2bb852e039f21b8326fa62160f77dcf7572ed39b4035a005bf214097634844052bab59c828a
7
+ data.tar.gz: 877db96232be8617987096b227f390a643b788d50971ebc629de7f5aca720cd96202d8d0292ecffa8a7fe2e366ee649f9e2eda59202423929abd94f90beae1cd
@@ -2,30 +2,39 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require 'vmpooler'
5
+ require 'vmpooler/version'
5
6
 
6
7
  config = Vmpooler.config
8
+ logger_file = config[:config]['logfile']
9
+ prefix = config[:config]['prefix']
7
10
  redis_host = config[:redis]['server']
8
11
  redis_port = config[:redis]['port']
9
12
  redis_password = config[:redis]['password']
10
13
  redis_connection_pool_size = config[:redis]['connection_pool_size']
11
14
  redis_connection_pool_timeout = config[:redis]['connection_pool_timeout']
12
15
  redis_reconnect_attempts = config[:redis]['reconnect_attempts']
13
- logger_file = config[:config]['logfile']
16
+ tracing_enabled = config[:tracing]['enabled']
17
+ tracing_jaeger_host = config[:tracing]['jaeger_host']
14
18
 
15
19
  logger = Vmpooler::Logger.new logger_file
16
20
  metrics = Vmpooler::Metrics.init(logger, config)
17
21
 
22
+ version = Vmpooler::VERSION
23
+
24
+ startup_args = ARGV
25
+ Vmpooler.configure_tracing(startup_args, prefix, tracing_enabled, tracing_jaeger_host, version)
26
+
18
27
  torun_threads = []
19
28
  if ARGV.count == 0
20
29
  torun = %i[api manager]
21
30
  else
22
31
  torun = []
23
- torun << :api if ARGV.include? 'api'
24
- torun << :manager if ARGV.include? 'manager'
32
+ torun << :api if ARGV.include?('api')
33
+ torun << :manager if ARGV.include?('manager')
25
34
  exit(2) if torun.empty?
26
35
  end
27
36
 
28
- if torun.include? :api
37
+ if torun.include?(:api)
29
38
  api = Thread.new do
30
39
  redis = Vmpooler.new_redis(redis_host, redis_port, redis_password)
31
40
  Vmpooler::API.execute(torun, config, redis, metrics, logger)
@@ -39,7 +48,7 @@ elsif metrics.respond_to?(:setup_prometheus_metrics)
39
48
  torun_threads << prometheus_only_api
40
49
  end
41
50
 
42
- if torun.include? :manager
51
+ if torun.include?(:manager)
43
52
  manager = Thread.new do
44
53
  Vmpooler::PoolManager.new(
45
54
  config,
@@ -15,6 +15,15 @@ module Vmpooler
15
15
  require 'timeout'
16
16
  require 'yaml'
17
17
 
18
+ # Dependencies for tracing
19
+ require 'opentelemetry-api'
20
+ require 'opentelemetry-instrumentation-concurrent_ruby'
21
+ require 'opentelemetry-instrumentation-redis'
22
+ require 'opentelemetry-instrumentation-sinatra'
23
+ require 'opentelemetry-sdk'
24
+ require 'opentelemetry/exporter/jaeger'
25
+ require 'opentelemetry/resource/detectors'
26
+
18
27
  %w[api metrics logger pool_manager generic_connection_pool].each do |lib|
19
28
  require "vmpooler/#{lib}"
20
29
  end
@@ -103,6 +112,10 @@ module Vmpooler
103
112
  parsed_config[:graphite]['prefix'] = ENV['GRAPHITE_PREFIX'] if ENV['GRAPHITE_PREFIX']
104
113
  parsed_config[:graphite]['port'] = string_to_int(ENV['GRAPHITE_PORT']) if ENV['GRAPHITE_PORT']
105
114
 
115
+ parsed_config[:tracing] = parsed_config[:tracing] || {}
116
+ parsed_config[:tracing]['enabled'] = ENV['VMPOOLER_TRACING_ENABLED'] || parsed_config[:tracing]['enabled'] || 'false'
117
+ parsed_config[:tracing]['jaeger_host'] = ENV['VMPOOLER_TRACING_JAEGER_HOST'] || parsed_config[:tracing]['jaeger_host'] || 'http://localhost:14268/api/traces'
118
+
106
119
  parsed_config[:auth] = parsed_config[:auth] || {} if ENV['AUTH_PROVIDER']
107
120
  if parsed_config.key? :auth
108
121
  parsed_config[:auth]['provider'] = ENV['AUTH_PROVIDER'] if ENV['AUTH_PROVIDER']
@@ -213,4 +226,44 @@ module Vmpooler
213
226
  parsed_config[:config]['create_linked_clones'] = ENV['CREATE_LINKED_CLONES'] if ENV['CREATE_LINKED_CLONES'] =~ /true|false/
214
227
  parsed_config[:config]['create_linked_clones'] = true?(parsed_config[:config]['create_linked_clones']) if parsed_config[:config]['create_linked_clones']
215
228
  end
229
+
230
+ def self.configure_tracing(startup_args, prefix, tracing_enabled, tracing_jaeger_host, version)
231
+ if startup_args.length == 1 && startup_args.include?('api')
232
+ service_name = 'vmpooler-api'
233
+ elsif startup_args.length == 1 && startup_args.include?('manager')
234
+ service_name = 'vmpooler-manager'
235
+ else
236
+ service_name = 'vmpooler'
237
+ end
238
+
239
+ service_name += "-#{prefix}" unless prefix.empty?
240
+
241
+ if tracing_enabled.eql?('false')
242
+ puts "Exporting of traces has been disabled so the span processor has been se to a 'NoopSpanExporter'"
243
+ span_processor = OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor.new(
244
+ exporter: OpenTelemetry::SDK::Trace::Export::NoopSpanExporter.new
245
+ )
246
+ else
247
+ puts "Exporting of traces will be done over HTTP in binary Thrift format to #{tracing_jaeger_host}"
248
+ span_processor = OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor.new(
249
+ exporter: OpenTelemetry::Exporter::Jaeger::CollectorExporter.new(endpoint: tracing_jaeger_host)
250
+ )
251
+ end
252
+
253
+ OpenTelemetry::SDK.configure do |c|
254
+ c.use 'OpenTelemetry::Instrumentation::Sinatra'
255
+ c.use 'OpenTelemetry::Instrumentation::ConcurrentRuby'
256
+ c.use 'OpenTelemetry::Instrumentation::Redis'
257
+
258
+ c.add_span_processor(span_processor)
259
+
260
+ c.resource = OpenTelemetry::Resource::Detectors::AutoDetector.detect
261
+ c.resource = OpenTelemetry::SDK::Resources::Resource.create(
262
+ {
263
+ OpenTelemetry::SDK::Resources::Constants::SERVICE_RESOURCE[:name] => service_name,
264
+ OpenTelemetry::SDK::Resources::Constants::SERVICE_RESOURCE[:version] => version
265
+ }
266
+ )
267
+ end
268
+ end
216
269
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Vmpooler
4
- VERSION = '0.14.6'
4
+ VERSION = '0.14.7'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vmpooler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.6
4
+ version: 0.14.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-17 00:00:00.000000000 Z
11
+ date: 2020-09-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pickup