vmpooler 0.14.3 → 0.14.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d003f57422358d9da10997380e2c5d19d4954b8325b3b3655b04d2c55896b3b4
4
- data.tar.gz: 895953f29cf0f7a86a782bb54721e14e77590c3f75a01a4f5d169d9428075528
3
+ metadata.gz: 8b546f3acf4b61106614dfc3dabf14edcfc1a5651674d7595358ad9ff9b84f05
4
+ data.tar.gz: db6e73ce1cd797ddb7c94652f4ad0b81a77898a0a469b83ac982d0d57cd10c7e
5
5
  SHA512:
6
- metadata.gz: f8182359a75a3e6630b20700e6ce8dece058208b59789564203a9023858ca1ea39fa309dadbd175c9d54e62408e5a1b0ffdd8490152819c2bfda74b3b1089dbf
7
- data.tar.gz: 1caad1d0bffacab27a64fe703dcf1c48033733cb9b053e7a0813ca232254ff843c58dfe8f53df4c13b9e91014c862662ca8e2c7c2f956e7b04b781dbf09db7bc
6
+ metadata.gz: a9c5f5b11606ed29d1294a72291361de3ccd1e07184a475b1a3ca2a46a67a62689579d2f720d684c60ee2dc633f4cc3fa2236ff86e849cce67fbb8c1d4ac29c1
7
+ data.tar.gz: fa932aa66e2d72969c1547ce5b17bfc68ca69d382868c20ec19ca97d27d8666fef30130a6fa0fb74dfa67d3645e118a0124c476f8cfd7cbfafa685c6f2fc7a6d
@@ -2,29 +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
- logger_file = config[:config]['logfile']
15
+ redis_reconnect_attempts = config[:redis]['reconnect_attempts']
16
+ tracing_enabled = config[:tracing]['enabled']
17
+ tracing_jaeger_host = config[:tracing]['jaeger_host']
13
18
 
14
19
  logger = Vmpooler::Logger.new logger_file
15
20
  metrics = Vmpooler::Metrics.init(logger, config)
16
21
 
22
+ version = Vmpooler::VERSION
23
+
24
+ startup_args = ARGV
25
+ Vmpooler.configure_tracing(startup_args, prefix, tracing_enabled, tracing_jaeger_host, version)
26
+
17
27
  torun_threads = []
18
28
  if ARGV.count == 0
19
29
  torun = %i[api manager]
20
30
  else
21
31
  torun = []
22
- torun << :api if ARGV.include? 'api'
23
- torun << :manager if ARGV.include? 'manager'
32
+ torun << :api if ARGV.include?('api')
33
+ torun << :manager if ARGV.include?('manager')
24
34
  exit(2) if torun.empty?
25
35
  end
26
36
 
27
- if torun.include? :api
37
+ if torun.include?(:api)
28
38
  api = Thread.new do
29
39
  redis = Vmpooler.new_redis(redis_host, redis_port, redis_password)
30
40
  Vmpooler::API.execute(torun, config, redis, metrics, logger)
@@ -38,12 +48,12 @@ elsif metrics.respond_to?(:setup_prometheus_metrics)
38
48
  torun_threads << prometheus_only_api
39
49
  end
40
50
 
41
- if torun.include? :manager
51
+ if torun.include?(:manager)
42
52
  manager = Thread.new do
43
53
  Vmpooler::PoolManager.new(
44
54
  config,
45
55
  logger,
46
- Vmpooler.redis_connection_pool(redis_host, redis_port, redis_password, redis_connection_pool_size, redis_connection_pool_timeout, metrics),
56
+ Vmpooler.redis_connection_pool(redis_host, redis_port, redis_password, redis_connection_pool_size, redis_connection_pool_timeout, metrics, redis_reconnect_attempts),
47
57
  metrics
48
58
  ).execute!
49
59
  end
@@ -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
@@ -58,59 +67,62 @@ module Vmpooler
58
67
  end
59
68
 
60
69
  # Set some configuration defaults
61
- parsed_config[:config]['task_limit'] = string_to_int(ENV['TASK_LIMIT']) || parsed_config[:config]['task_limit'] || 10
62
- parsed_config[:config]['ondemand_clone_limit'] = string_to_int(ENV['ONDEMAND_CLONE_LIMIT']) || parsed_config[:config]['ondemand_clone_limit'] || 10
70
+ parsed_config[:config]['task_limit'] = string_to_int(ENV['TASK_LIMIT']) || parsed_config[:config]['task_limit'] || 10
71
+ parsed_config[:config]['ondemand_clone_limit'] = string_to_int(ENV['ONDEMAND_CLONE_LIMIT']) || parsed_config[:config]['ondemand_clone_limit'] || 10
63
72
  parsed_config[:config]['max_ondemand_instances_per_request'] = string_to_int(ENV['MAX_ONDEMAND_INSTANCES_PER_REQUEST']) || parsed_config[:config]['max_ondemand_instances_per_request'] || 10
64
- parsed_config[:config]['migration_limit'] = string_to_int(ENV['MIGRATION_LIMIT']) if ENV['MIGRATION_LIMIT']
65
- parsed_config[:config]['vm_checktime'] = string_to_int(ENV['VM_CHECKTIME']) || parsed_config[:config]['vm_checktime'] || 1
66
- parsed_config[:config]['vm_lifetime'] = string_to_int(ENV['VM_LIFETIME']) || parsed_config[:config]['vm_lifetime'] || 24
67
- parsed_config[:config]['max_lifetime_upper_limit'] = string_to_int(ENV['MAX_LIFETIME_UPPER_LIMIT']) || parsed_config[:config]['max_lifetime_upper_limit']
68
- parsed_config[:config]['ready_ttl'] = string_to_int(ENV['READY_TTL']) || parsed_config[:config]['ready_ttl'] || 60
69
- parsed_config[:config]['ondemand_request_ttl'] = string_to_int(ENV['ONDEMAND_REQUEST_TTL']) || parsed_config[:config]['ondemand_request_ttl'] || 5
70
- parsed_config[:config]['prefix'] = ENV['PREFIX'] || parsed_config[:config]['prefix'] || ''
71
-
72
- parsed_config[:config]['logfile'] = ENV['LOGFILE'] if ENV['LOGFILE']
73
-
74
- parsed_config[:config]['site_name'] = ENV['SITE_NAME'] if ENV['SITE_NAME']
75
- parsed_config[:config]['domain'] = ENV['DOMAIN'] if ENV['DOMAIN']
76
- parsed_config[:config]['clone_target'] = ENV['CLONE_TARGET'] if ENV['CLONE_TARGET']
77
- parsed_config[:config]['timeout'] = string_to_int(ENV['TIMEOUT']) if ENV['TIMEOUT']
78
- parsed_config[:config]['vm_lifetime_auth'] = string_to_int(ENV['VM_LIFETIME_AUTH']) if ENV['VM_LIFETIME_AUTH']
79
- parsed_config[:config]['max_tries'] = string_to_int(ENV['MAX_TRIES']) if ENV['MAX_TRIES']
80
- parsed_config[:config]['retry_factor'] = string_to_int(ENV['RETRY_FACTOR']) if ENV['RETRY_FACTOR']
81
- parsed_config[:config]['create_folders'] = true?(ENV['CREATE_FOLDERS']) if ENV['CREATE_FOLDERS']
82
- parsed_config[:config]['create_template_delta_disks'] = ENV['CREATE_TEMPLATE_DELTA_DISKS'] if ENV['CREATE_TEMPLATE_DELTA_DISKS']
73
+ parsed_config[:config]['migration_limit'] = string_to_int(ENV['MIGRATION_LIMIT']) if ENV['MIGRATION_LIMIT']
74
+ parsed_config[:config]['vm_checktime'] = string_to_int(ENV['VM_CHECKTIME']) || parsed_config[:config]['vm_checktime'] || 1
75
+ parsed_config[:config]['vm_lifetime'] = string_to_int(ENV['VM_LIFETIME']) || parsed_config[:config]['vm_lifetime'] || 24
76
+ parsed_config[:config]['max_lifetime_upper_limit'] = string_to_int(ENV['MAX_LIFETIME_UPPER_LIMIT']) || parsed_config[:config]['max_lifetime_upper_limit']
77
+ parsed_config[:config]['ready_ttl'] = string_to_int(ENV['READY_TTL']) || parsed_config[:config]['ready_ttl'] || 60
78
+ parsed_config[:config]['ondemand_request_ttl'] = string_to_int(ENV['ONDEMAND_REQUEST_TTL']) || parsed_config[:config]['ondemand_request_ttl'] || 5
79
+ parsed_config[:config]['prefix'] = ENV['PREFIX'] || parsed_config[:config]['prefix'] || ''
80
+ parsed_config[:config]['logfile'] = ENV['LOGFILE'] if ENV['LOGFILE']
81
+ parsed_config[:config]['site_name'] = ENV['SITE_NAME'] if ENV['SITE_NAME']
82
+ parsed_config[:config]['domain'] = ENV['DOMAIN'] if ENV['DOMAIN']
83
+ parsed_config[:config]['clone_target'] = ENV['CLONE_TARGET'] if ENV['CLONE_TARGET']
84
+ parsed_config[:config]['timeout'] = string_to_int(ENV['TIMEOUT']) if ENV['TIMEOUT']
85
+ parsed_config[:config]['vm_lifetime_auth'] = string_to_int(ENV['VM_LIFETIME_AUTH']) if ENV['VM_LIFETIME_AUTH']
86
+ parsed_config[:config]['max_tries'] = string_to_int(ENV['MAX_TRIES']) if ENV['MAX_TRIES']
87
+ parsed_config[:config]['retry_factor'] = string_to_int(ENV['RETRY_FACTOR']) if ENV['RETRY_FACTOR']
88
+ parsed_config[:config]['create_folders'] = true?(ENV['CREATE_FOLDERS']) if ENV['CREATE_FOLDERS']
89
+ parsed_config[:config]['experimental_features'] = ENV['EXPERIMENTAL_FEATURES'] if ENV['EXPERIMENTAL_FEATURES']
90
+ parsed_config[:config]['purge_unconfigured_folders'] = ENV['PURGE_UNCONFIGURED_FOLDERS'] if ENV['PURGE_UNCONFIGURED_FOLDERS']
91
+ parsed_config[:config]['usage_stats'] = ENV['USAGE_STATS'] if ENV['USAGE_STATS']
92
+ parsed_config[:config]['request_logger'] = ENV['REQUEST_LOGGER'] if ENV['REQUEST_LOGGER']
93
+ parsed_config[:config]['create_template_delta_disks'] = ENV['CREATE_TEMPLATE_DELTA_DISKS'] if ENV['CREATE_TEMPLATE_DELTA_DISKS']
83
94
  set_linked_clone(parsed_config)
84
- parsed_config[:config]['experimental_features'] = ENV['EXPERIMENTAL_FEATURES'] if ENV['EXPERIMENTAL_FEATURES']
85
- parsed_config[:config]['purge_unconfigured_folders'] = ENV['PURGE_UNCONFIGURED_FOLDERS'] if ENV['PURGE_UNCONFIGURED_FOLDERS']
86
- parsed_config[:config]['usage_stats'] = ENV['USAGE_STATS'] if ENV['USAGE_STATS']
87
- parsed_config[:config]['request_logger'] = ENV['REQUEST_LOGGER'] if ENV['REQUEST_LOGGER']
88
-
89
- parsed_config[:redis] = parsed_config[:redis] || {}
90
- parsed_config[:redis]['server'] = ENV['REDIS_SERVER'] || parsed_config[:redis]['server'] || 'localhost'
91
- parsed_config[:redis]['port'] = string_to_int(ENV['REDIS_PORT']) if ENV['REDIS_PORT']
92
- parsed_config[:redis]['password'] = ENV['REDIS_PASSWORD'] if ENV['REDIS_PASSWORD']
93
- parsed_config[:redis]['data_ttl'] = string_to_int(ENV['REDIS_DATA_TTL']) || parsed_config[:redis]['data_ttl'] || 168
94
- parsed_config[:redis]['connection_pool_size'] = string_to_int(ENV['REDIS_CONNECTION_POOL_SIZE']) || parsed_config[:redis]['connection_pool_size'] || 10
95
+
96
+ parsed_config[:redis] = parsed_config[:redis] || {}
97
+ parsed_config[:redis]['server'] = ENV['REDIS_SERVER'] || parsed_config[:redis]['server'] || 'localhost'
98
+ parsed_config[:redis]['port'] = string_to_int(ENV['REDIS_PORT']) if ENV['REDIS_PORT']
99
+ parsed_config[:redis]['password'] = ENV['REDIS_PASSWORD'] if ENV['REDIS_PASSWORD']
100
+ parsed_config[:redis]['data_ttl'] = string_to_int(ENV['REDIS_DATA_TTL']) || parsed_config[:redis]['data_ttl'] || 168
101
+ parsed_config[:redis]['connection_pool_size'] = string_to_int(ENV['REDIS_CONNECTION_POOL_SIZE']) || parsed_config[:redis]['connection_pool_size'] || 10
95
102
  parsed_config[:redis]['connection_pool_timeout'] = string_to_int(ENV['REDIS_CONNECTION_POOL_TIMEOUT']) || parsed_config[:redis]['connection_pool_timeout'] || 5
103
+ parsed_config[:redis]['reconnect_attempts'] = string_to_int(ENV['REDIS_RECONNECT_ATTEMPTS']) || parsed_config[:redis]['reconnect_attempts'] || 10
96
104
 
97
- parsed_config[:statsd] = parsed_config[:statsd] || {} if ENV['STATSD_SERVER']
105
+ parsed_config[:statsd] = parsed_config[:statsd] || {} if ENV['STATSD_SERVER']
98
106
  parsed_config[:statsd]['server'] = ENV['STATSD_SERVER'] if ENV['STATSD_SERVER']
99
107
  parsed_config[:statsd]['prefix'] = ENV['STATSD_PREFIX'] if ENV['STATSD_PREFIX']
100
- parsed_config[:statsd]['port'] = string_to_int(ENV['STATSD_PORT']) if ENV['STATSD_PORT']
108
+ parsed_config[:statsd]['port'] = string_to_int(ENV['STATSD_PORT']) if ENV['STATSD_PORT']
101
109
 
102
- parsed_config[:graphite] = parsed_config[:graphite] || {} if ENV['GRAPHITE_SERVER']
110
+ parsed_config[:graphite] = parsed_config[:graphite] || {} if ENV['GRAPHITE_SERVER']
103
111
  parsed_config[:graphite]['server'] = ENV['GRAPHITE_SERVER'] if ENV['GRAPHITE_SERVER']
104
112
  parsed_config[:graphite]['prefix'] = ENV['GRAPHITE_PREFIX'] if ENV['GRAPHITE_PREFIX']
105
- parsed_config[:graphite]['port'] = string_to_int(ENV['GRAPHITE_PORT']) if ENV['GRAPHITE_PORT']
113
+ parsed_config[:graphite]['port'] = string_to_int(ENV['GRAPHITE_PORT']) if ENV['GRAPHITE_PORT']
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'
106
118
 
107
119
  parsed_config[:auth] = parsed_config[:auth] || {} if ENV['AUTH_PROVIDER']
108
120
  if parsed_config.key? :auth
109
- parsed_config[:auth]['provider'] = ENV['AUTH_PROVIDER'] if ENV['AUTH_PROVIDER']
110
- parsed_config[:auth][:ldap] = parsed_config[:auth][:ldap] || {} if parsed_config[:auth]['provider'] == 'ldap'
111
- parsed_config[:auth][:ldap]['host'] = ENV['LDAP_HOST'] if ENV['LDAP_HOST']
112
- parsed_config[:auth][:ldap]['port'] = string_to_int(ENV['LDAP_PORT']) if ENV['LDAP_PORT']
113
- parsed_config[:auth][:ldap]['base'] = ENV['LDAP_BASE'] if ENV['LDAP_BASE']
121
+ parsed_config[:auth]['provider'] = ENV['AUTH_PROVIDER'] if ENV['AUTH_PROVIDER']
122
+ parsed_config[:auth][:ldap] = parsed_config[:auth][:ldap] || {} if parsed_config[:auth]['provider'] == 'ldap'
123
+ parsed_config[:auth][:ldap]['host'] = ENV['LDAP_HOST'] if ENV['LDAP_HOST']
124
+ parsed_config[:auth][:ldap]['port'] = string_to_int(ENV['LDAP_PORT']) if ENV['LDAP_PORT']
125
+ parsed_config[:auth][:ldap]['base'] = ENV['LDAP_BASE'] if ENV['LDAP_BASE']
114
126
  parsed_config[:auth][:ldap]['user_object'] = ENV['LDAP_USER_OBJECT'] if ENV['LDAP_USER_OBJECT']
115
127
  end
116
128
 
@@ -164,7 +176,7 @@ module Vmpooler
164
176
  pools
165
177
  end
166
178
 
167
- def self.redis_connection_pool(host, port, password, size, timeout, metrics)
179
+ def self.redis_connection_pool(host, port, password, size, timeout, metrics, redis_reconnect_attempts = 0)
168
180
  Vmpooler::PoolManager::GenericConnectionPool.new(
169
181
  metrics: metrics,
170
182
  connpool_type: 'redis_connection_pool',
@@ -173,13 +185,14 @@ module Vmpooler
173
185
  timeout: timeout
174
186
  ) do
175
187
  connection = Concurrent::Hash.new
176
- redis = new_redis(host, port, password)
188
+ redis = new_redis(host, port, password, redis_reconnect_attempts)
177
189
  connection['connection'] = redis
178
190
  end
179
191
  end
180
192
 
181
- def self.new_redis(host = 'localhost', port = nil, password = nil)
182
- Redis.new(host: host, port: port, password: password)
193
+ def self.new_redis(host = 'localhost', port = nil, password = nil, redis_reconnect_attempts = 10)
194
+ Redis.new(host: host, port: port, password: password, reconnect_attempts: redis_reconnect_attempts, reconnect_delay: 1.5,
195
+ reconnect_delay_max: 10.0)
183
196
  end
184
197
 
185
198
  def self.pools(conf)
@@ -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
@@ -21,6 +21,7 @@ module Vmpooler
21
21
  REDIS_CONNECT_BUCKETS = [1.0, 2.0, 3.0, 5.0, 8.0, 13.0, 18.0, 23.0].freeze
22
22
 
23
23
  @p_metrics = {}
24
+ @torun = []
24
25
 
25
26
  def initialize(logger, params = {})
26
27
  @prefix = params['prefix'] || 'vmpooler'
@@ -368,6 +369,7 @@ module Vmpooler
368
369
  # Top level method to register all the prometheus metrics.
369
370
 
370
371
  def setup_prometheus_metrics(torun)
372
+ @torun = torun
371
373
  @p_metrics = vmpooler_metrics_table
372
374
  @p_metrics.each do |name, metric_spec|
373
375
  # Only register metrics appropriate to api or manager
@@ -399,7 +401,10 @@ module Vmpooler
399
401
  metric_key = sublabels.shift.to_sym
400
402
  raise("Invalid Metric #{metric_key} for #{label}") unless @p_metrics.key? metric_key
401
403
 
402
- metric = @p_metrics[metric_key].clone
404
+ metric_spec = @p_metrics[metric_key]
405
+ raise("Invalid Component #{component} for #{metric_key}") if (metric_spec[:torun] & @torun).nil?
406
+
407
+ metric = metric_spec.clone
403
408
 
404
409
  if metric.key? :metric_suffixes
405
410
  metric_subkey = sublabels.shift.to_sym
@@ -114,6 +114,9 @@ module Vmpooler
114
114
  path
115
115
  .gsub(%r{/vm/.+$}, '/vm')
116
116
  .gsub(%r{/ondemand/.+$}, '/ondemand')
117
+ .gsub(%r{/token/.+$}, '/token')
118
+ .gsub(%r{/lib/.+$}, '/lib')
119
+ .gsub(%r{/img/.+$}, '/img')
117
120
  end
118
121
  end
119
122
  end
@@ -368,7 +368,7 @@ module Vmpooler
368
368
  $metrics.increment("errors.duplicatehostname.#{pool_name}")
369
369
  $logger.log('s', "[!] [#{pool_name}] Generated hostname #{hostname} was not unique (attempt \##{hostname_retries} of #{max_hostname_retries})")
370
370
  elsif !dns_available
371
- $metrics.increment("errors.staledns.#{hostname}")
371
+ $metrics.increment("errors.staledns.#{pool_name}")
372
372
  $logger.log('s', "[!] [#{pool_name}] Generated hostname #{hostname} already exists in DNS records (#{dns_ip}), stale DNS")
373
373
  end
374
374
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Vmpooler
4
- VERSION = '0.14.3'
4
+ VERSION = '0.14.8'
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.3
4
+ version: 0.14.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-06 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
@@ -84,16 +84,22 @@ dependencies:
84
84
  name: rbvmomi
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '2.1'
90
+ - - "<"
91
+ - !ruby/object:Gem::Version
92
+ version: '4.0'
90
93
  type: :runtime
91
94
  prerelease: false
92
95
  version_requirements: !ruby/object:Gem::Requirement
93
96
  requirements:
94
- - - "~>"
97
+ - - ">="
95
98
  - !ruby/object:Gem::Version
96
99
  version: '2.1'
100
+ - - "<"
101
+ - !ruby/object:Gem::Version
102
+ version: '4.0'
97
103
  - !ruby/object:Gem::Dependency
98
104
  name: sinatra
99
105
  requirement: !ruby/object:Gem::Requirement
@@ -206,6 +212,104 @@ dependencies:
206
212
  - - "~>"
207
213
  - !ruby/object:Gem::Version
208
214
  version: '2.1'
215
+ - !ruby/object:Gem::Dependency
216
+ name: opentelemetry-api
217
+ requirement: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - "~>"
220
+ - !ruby/object:Gem::Version
221
+ version: 0.6.0
222
+ type: :runtime
223
+ prerelease: false
224
+ version_requirements: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - "~>"
227
+ - !ruby/object:Gem::Version
228
+ version: 0.6.0
229
+ - !ruby/object:Gem::Dependency
230
+ name: opentelemetry-exporter-jaeger
231
+ requirement: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - "~>"
234
+ - !ruby/object:Gem::Version
235
+ version: 0.6.0
236
+ type: :runtime
237
+ prerelease: false
238
+ version_requirements: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - "~>"
241
+ - !ruby/object:Gem::Version
242
+ version: 0.6.0
243
+ - !ruby/object:Gem::Dependency
244
+ name: opentelemetry-instrumentation-concurrent_ruby
245
+ requirement: !ruby/object:Gem::Requirement
246
+ requirements:
247
+ - - "~>"
248
+ - !ruby/object:Gem::Version
249
+ version: 0.6.0
250
+ type: :runtime
251
+ prerelease: false
252
+ version_requirements: !ruby/object:Gem::Requirement
253
+ requirements:
254
+ - - "~>"
255
+ - !ruby/object:Gem::Version
256
+ version: 0.6.0
257
+ - !ruby/object:Gem::Dependency
258
+ name: opentelemetry-instrumentation-redis
259
+ requirement: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - "~>"
262
+ - !ruby/object:Gem::Version
263
+ version: 0.6.0
264
+ type: :runtime
265
+ prerelease: false
266
+ version_requirements: !ruby/object:Gem::Requirement
267
+ requirements:
268
+ - - "~>"
269
+ - !ruby/object:Gem::Version
270
+ version: 0.6.0
271
+ - !ruby/object:Gem::Dependency
272
+ name: opentelemetry-instrumentation-sinatra
273
+ requirement: !ruby/object:Gem::Requirement
274
+ requirements:
275
+ - - "~>"
276
+ - !ruby/object:Gem::Version
277
+ version: 0.6.0
278
+ type: :runtime
279
+ prerelease: false
280
+ version_requirements: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - "~>"
283
+ - !ruby/object:Gem::Version
284
+ version: 0.6.0
285
+ - !ruby/object:Gem::Dependency
286
+ name: opentelemetry-resource_detectors
287
+ requirement: !ruby/object:Gem::Requirement
288
+ requirements:
289
+ - - "~>"
290
+ - !ruby/object:Gem::Version
291
+ version: 0.6.0
292
+ type: :runtime
293
+ prerelease: false
294
+ version_requirements: !ruby/object:Gem::Requirement
295
+ requirements:
296
+ - - "~>"
297
+ - !ruby/object:Gem::Version
298
+ version: 0.6.0
299
+ - !ruby/object:Gem::Dependency
300
+ name: opentelemetry-sdk
301
+ requirement: !ruby/object:Gem::Requirement
302
+ requirements:
303
+ - - "~>"
304
+ - !ruby/object:Gem::Version
305
+ version: 0.6.0
306
+ type: :runtime
307
+ prerelease: false
308
+ version_requirements: !ruby/object:Gem::Requirement
309
+ requirements:
310
+ - - "~>"
311
+ - !ruby/object:Gem::Version
312
+ version: 0.6.0
209
313
  description:
210
314
  email:
211
315
  - support@puppet.com