vmpooler 0.14.4 → 0.14.9

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: dd5d793e0bdaa8748908f18a27002b9499f5bb468bd70c500c429a3d83a0f74b
4
- data.tar.gz: 5723731e8ada5a3ee03dba3494579896fd124c7033a2a497c43d23cffdf8673f
3
+ metadata.gz: c0eab66c5ff4591cc2863d674b1712e2e96048a66d2fd637984410b8b2d4cdfe
4
+ data.tar.gz: 9c5a30016a4b4b4f671f83da7ed6bbce94d28079c974b9aae3b5d0016dc6ca1f
5
5
  SHA512:
6
- metadata.gz: 2806679a57218a92e71de1e28a83782cace4297ba152adcd03386a1501edf4a2697800775e9a782c6988b85117768a3d6f442a5c0d8dc16afbcc22b3bd4d36aa
7
- data.tar.gz: 72873b8aff48ac8dc484b5f097feab31f3e44605bb220368382e7fc3b6553b4c4627dca40cc5066a91b88d69e07d98fdce169aa1ec3d192a3be968ed966daa39
6
+ metadata.gz: 86e1712a09a8505f3a033421efe1870daf5212dc35f6b7b263b05fa7bb221abe3dd49d499dd5e322b5b96325ac5368929418cbdaaa6312497c2adc2a3fdb5b3e
7
+ data.tar.gz: a8b78ca53a3779af36841cc545b48267fc8fd94dac970c9c3c655eae45caf36f4ec709f8c497040b683f86600d2b398ce081a8e580512e370404b828adc4246a
@@ -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
@@ -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.4'
4
+ VERSION = '0.14.9'
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.4
4
+ version: 0.14.9
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-21 00:00:00.000000000 Z
11
+ date: 2020-09-21 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