vmpooler 3.1.0 → 3.3.0
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 +4 -4
- data/lib/vmpooler/api/helpers.rb +1 -1
- data/lib/vmpooler/api/v3.rb +3 -3
- data/lib/vmpooler/pool_manager.rb +38 -43
- data/lib/vmpooler/version.rb +1 -1
- data/lib/vmpooler.rb +15 -3
- metadata +25 -25
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b586b8ee56526b89f47621d090f932159c46df74c6935002e8a71c18a02503fb
|
|
4
|
+
data.tar.gz: 51e4f7cf4dd4a5daa3130ab1bb60b08b4347196e1ba1c39f94a820d7356f2937
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 39ba39f114252e74a08a6c3dbebd773cb2dda74adfc33216b7774dbf8fb83109f2a61076a3435cab54f8dc39adcdef60ee1cac44f24b3f3f441c7ceaf389e813
|
|
7
|
+
data.tar.gz: e295be65e92e61fad459d32d1a6171396b0599795355b99821d7bc8272ecbe19cfee78dd735c88e49653d5156afb7e529f12935d484fc2b1c479e5eed4be69e1
|
data/lib/vmpooler/api/helpers.rb
CHANGED
|
@@ -25,7 +25,7 @@ module Vmpooler
|
|
|
25
25
|
def validate_token(backend)
|
|
26
26
|
tracer.in_span("Vmpooler::API::Helpers.#{__method__}") do
|
|
27
27
|
if valid_token?(backend)
|
|
28
|
-
backend.hset("vmpooler__token__#{request.env['HTTP_X_AUTH_TOKEN']}", 'last', Time.now)
|
|
28
|
+
backend.hset("vmpooler__token__#{request.env['HTTP_X_AUTH_TOKEN']}", 'last', Time.now.to_s)
|
|
29
29
|
|
|
30
30
|
return true
|
|
31
31
|
end
|
data/lib/vmpooler/api/v3.rb
CHANGED
|
@@ -189,8 +189,8 @@ module Vmpooler
|
|
|
189
189
|
span.set_attribute('enduser.id', user)
|
|
190
190
|
has_token_result = has_token?
|
|
191
191
|
backend.sadd("vmpooler__migrating__#{template}", vm)
|
|
192
|
-
backend.hset("vmpooler__active__#{template}", vm, Time.now)
|
|
193
|
-
backend.hset("vmpooler__vm__#{vm}", 'checkout', Time.now)
|
|
192
|
+
backend.hset("vmpooler__active__#{template}", vm, Time.now.to_s)
|
|
193
|
+
backend.hset("vmpooler__vm__#{vm}", 'checkout', Time.now.to_s)
|
|
194
194
|
|
|
195
195
|
if Vmpooler::API.settings.config[:auth] and has_token_result
|
|
196
196
|
backend.hset("vmpooler__vm__#{vm}", 'token:token', request.env['HTTP_X_AUTH_TOKEN'])
|
|
@@ -971,7 +971,7 @@ module Vmpooler
|
|
|
971
971
|
result['token'] = o[rand(25)] + (0...31).map { o[rand(o.length)] }.join
|
|
972
972
|
|
|
973
973
|
backend.hset("vmpooler__token__#{result['token']}", 'user', @auth.username)
|
|
974
|
-
backend.hset("vmpooler__token__#{result['token']}", 'created', Time.now)
|
|
974
|
+
backend.hset("vmpooler__token__#{result['token']}", 'created', Time.now.to_s)
|
|
975
975
|
span = OpenTelemetry::Trace.current_span
|
|
976
976
|
span.set_attribute('enduser.id', @auth.username)
|
|
977
977
|
|
|
@@ -59,7 +59,7 @@ module Vmpooler
|
|
|
59
59
|
currently_configured_pools = []
|
|
60
60
|
config[:pools].each do |pool|
|
|
61
61
|
currently_configured_pools << pool['name']
|
|
62
|
-
redis.sadd('vmpooler__pools', pool['name'])
|
|
62
|
+
redis.sadd('vmpooler__pools', pool['name'].to_s)
|
|
63
63
|
pool_keys = pool.keys
|
|
64
64
|
pool_keys.delete('alias')
|
|
65
65
|
to_set = {}
|
|
@@ -68,11 +68,12 @@ module Vmpooler
|
|
|
68
68
|
end
|
|
69
69
|
to_set['alias'] = pool['alias'].join(',') if to_set.key?('alias')
|
|
70
70
|
to_set['domain'] = Vmpooler::Dns.get_domain_for_pool(config, pool['name'])
|
|
71
|
-
|
|
71
|
+
|
|
72
|
+
redis.hmset("vmpooler__pool__#{pool['name']}", *to_set.to_a.flatten) unless to_set.empty?
|
|
72
73
|
end
|
|
73
74
|
previously_configured_pools.each do |pool|
|
|
74
75
|
unless currently_configured_pools.include? pool
|
|
75
|
-
redis.srem('vmpooler__pools', pool)
|
|
76
|
+
redis.srem('vmpooler__pools', pool.to_s)
|
|
76
77
|
redis.del("vmpooler__pool__#{pool}")
|
|
77
78
|
end
|
|
78
79
|
end
|
|
@@ -129,7 +130,6 @@ module Vmpooler
|
|
|
129
130
|
if exists
|
|
130
131
|
request_id = redis.hget("vmpooler__vm__#{vm}", 'request_id')
|
|
131
132
|
pool_alias = redis.hget("vmpooler__vm__#{vm}", 'pool_alias') if request_id
|
|
132
|
-
redis.multi
|
|
133
133
|
redis.smove("vmpooler__pending__#{pool}", "vmpooler__completed__#{pool}", vm)
|
|
134
134
|
if request_id
|
|
135
135
|
ondemandrequest_hash = redis.hgetall("vmpooler__odrequest__#{request_id}")
|
|
@@ -138,7 +138,6 @@ module Vmpooler
|
|
|
138
138
|
redis.zadd('vmpooler__odcreate__task', 1, "#{pool_alias}:#{pool}:1:#{request_id}")
|
|
139
139
|
end
|
|
140
140
|
end
|
|
141
|
-
redis.exec
|
|
142
141
|
$metrics.increment("errors.markedasfailed.#{pool}")
|
|
143
142
|
$logger.log('d', "[!] [#{pool}] '#{vm}' marked as 'failed' after #{timeout} minutes")
|
|
144
143
|
else
|
|
@@ -168,8 +167,8 @@ module Vmpooler
|
|
|
168
167
|
pool_alias = redis.hget("vmpooler__vm__#{vm}", 'pool_alias')
|
|
169
168
|
|
|
170
169
|
redis.pipelined do |pipeline|
|
|
171
|
-
pipeline.hset("vmpooler__active__#{pool}", vm, Time.now)
|
|
172
|
-
pipeline.hset("vmpooler__vm__#{vm}", 'checkout', Time.now)
|
|
170
|
+
pipeline.hset("vmpooler__active__#{pool}", vm, Time.now.to_s)
|
|
171
|
+
pipeline.hset("vmpooler__vm__#{vm}", 'checkout', Time.now.to_s)
|
|
173
172
|
if ondemandrequest_hash['token:token']
|
|
174
173
|
pipeline.hset("vmpooler__vm__#{vm}", 'token:token', ondemandrequest_hash['token:token'])
|
|
175
174
|
pipeline.hset("vmpooler__vm__#{vm}", 'token:user', ondemandrequest_hash['token:user'])
|
|
@@ -185,10 +184,10 @@ module Vmpooler
|
|
|
185
184
|
|
|
186
185
|
redis.pipelined do |pipeline|
|
|
187
186
|
pipeline.hset("vmpooler__boot__#{Date.today}", "#{pool}:#{vm}", finish) # maybe remove as this is never used by vmpooler itself?
|
|
188
|
-
pipeline.hset("vmpooler__vm__#{vm}", 'ready', Time.now)
|
|
187
|
+
pipeline.hset("vmpooler__vm__#{vm}", 'ready', Time.now.to_s)
|
|
189
188
|
|
|
190
189
|
# last boot time is displayed in API, and used by alarming script
|
|
191
|
-
pipeline.hset('vmpooler__lastboot', pool, Time.now)
|
|
190
|
+
pipeline.hset('vmpooler__lastboot', pool, Time.now.to_s)
|
|
192
191
|
end
|
|
193
192
|
|
|
194
193
|
$metrics.timing("time_to_ready_state.#{pool}", finish)
|
|
@@ -227,7 +226,7 @@ module Vmpooler
|
|
|
227
226
|
last_checked_too_soon = ((Time.now - Time.parse(check_stamp)).to_i < $config[:config]['vm_checktime'] * 60) if check_stamp
|
|
228
227
|
break if check_stamp && last_checked_too_soon
|
|
229
228
|
|
|
230
|
-
redis.hset("vmpooler__vm__#{vm}", 'check', Time.now)
|
|
229
|
+
redis.hset("vmpooler__vm__#{vm}", 'check', Time.now.to_s)
|
|
231
230
|
# Check if the hosts TTL has expired
|
|
232
231
|
# if 'boottime' is nil, set bootime to beginning of unix epoch, forces TTL to be assumed expired
|
|
233
232
|
boottime = redis.hget("vmpooler__vm__#{vm}", 'ready')
|
|
@@ -428,16 +427,15 @@ module Vmpooler
|
|
|
428
427
|
mutex = vm_mutex(new_vmname)
|
|
429
428
|
mutex.synchronize do
|
|
430
429
|
@redis.with_metrics do |redis|
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
redis.exec
|
|
430
|
+
redis.multi do |transaction|
|
|
431
|
+
transaction.sadd("vmpooler__pending__#{pool_name}", new_vmname)
|
|
432
|
+
transaction.hset("vmpooler__vm__#{new_vmname}", 'clone', Time.now.to_s)
|
|
433
|
+
transaction.hset("vmpooler__vm__#{new_vmname}", 'template', pool_name) # This value is used to represent the pool.
|
|
434
|
+
transaction.hset("vmpooler__vm__#{new_vmname}", 'pool', pool_name)
|
|
435
|
+
transaction.hset("vmpooler__vm__#{new_vmname}", 'domain', pool_domain)
|
|
436
|
+
transaction.hset("vmpooler__vm__#{new_vmname}", 'request_id', request_id) if request_id
|
|
437
|
+
transaction.hset("vmpooler__vm__#{new_vmname}", 'pool_alias', pool_alias) if pool_alias
|
|
438
|
+
end
|
|
441
439
|
end
|
|
442
440
|
|
|
443
441
|
begin
|
|
@@ -502,7 +500,7 @@ module Vmpooler
|
|
|
502
500
|
@redis.with_metrics do |redis|
|
|
503
501
|
redis.pipelined do |pipeline|
|
|
504
502
|
pipeline.hdel("vmpooler__active__#{pool}", vm)
|
|
505
|
-
pipeline.hset("vmpooler__vm__#{vm}", 'destroy', Time.now)
|
|
503
|
+
pipeline.hset("vmpooler__vm__#{vm}", 'destroy', Time.now.to_s)
|
|
506
504
|
|
|
507
505
|
# Auto-expire metadata key
|
|
508
506
|
pipeline.expire("vmpooler__vm__#{vm}", ($config[:redis]['data_ttl'].to_i * 60 * 60))
|
|
@@ -868,12 +866,13 @@ module Vmpooler
|
|
|
868
866
|
def sleep_with_wakeup_events(loop_delay, wakeup_period = 5, options = {})
|
|
869
867
|
exit_by = Time.now + loop_delay
|
|
870
868
|
wakeup_by = Time.now + wakeup_period
|
|
869
|
+
|
|
871
870
|
return if time_passed?(:exit_by, exit_by)
|
|
872
871
|
|
|
873
872
|
@redis.with_metrics do |redis|
|
|
874
873
|
initial_ready_size = redis.scard("vmpooler__ready__#{options[:poolname]}") if options[:pool_size_change]
|
|
875
874
|
|
|
876
|
-
initial_clone_target = redis.hget("vmpooler__pool__#{options[:poolname]}", options[:clone_target]) if options[:clone_target_change]
|
|
875
|
+
initial_clone_target = redis.hget("vmpooler__pool__#{options[:poolname]}", options[:clone_target].to_s) if options[:clone_target_change]
|
|
877
876
|
|
|
878
877
|
initial_template = redis.hget('vmpooler__template__prepared', options[:poolname]) if options[:pool_template_change]
|
|
879
878
|
|
|
@@ -917,11 +916,10 @@ module Vmpooler
|
|
|
917
916
|
end
|
|
918
917
|
|
|
919
918
|
if options[:ondemand_request]
|
|
920
|
-
redis.
|
|
921
|
-
redis.zcard('
|
|
922
|
-
redis.zcard('
|
|
923
|
-
|
|
924
|
-
od_request, od_processing, od_createtask = redis.exec
|
|
919
|
+
od_request = redis.zcard('vmpooler__provisioning__request')
|
|
920
|
+
od_processing = redis.zcard('vmpooler__provisioning__processing')
|
|
921
|
+
od_createtask = redis.zcard('vmpooler__odcreate__task')
|
|
922
|
+
|
|
925
923
|
break unless od_request == 0
|
|
926
924
|
break unless od_processing == 0
|
|
927
925
|
break unless od_createtask == 0
|
|
@@ -1093,10 +1091,8 @@ module Vmpooler
|
|
|
1093
1091
|
|
|
1094
1092
|
def remove_excess_vms(pool)
|
|
1095
1093
|
@redis.with_metrics do |redis|
|
|
1096
|
-
redis.
|
|
1097
|
-
redis.scard("
|
|
1098
|
-
redis.scard("vmpooler__pending__#{pool['name']}")
|
|
1099
|
-
ready, pending = redis.exec
|
|
1094
|
+
ready = redis.scard("vmpooler__ready__#{pool['name']}")
|
|
1095
|
+
pending = redis.scard("vmpooler__pending__#{pool['name']}")
|
|
1100
1096
|
total = pending.to_i + ready.to_i
|
|
1101
1097
|
break if total.nil?
|
|
1102
1098
|
break if total == 0
|
|
@@ -1334,11 +1330,10 @@ module Vmpooler
|
|
|
1334
1330
|
return if pool_mutex(pool_name).locked?
|
|
1335
1331
|
|
|
1336
1332
|
@redis.with_metrics do |redis|
|
|
1337
|
-
redis.
|
|
1338
|
-
redis.scard("
|
|
1339
|
-
redis.scard("
|
|
1340
|
-
|
|
1341
|
-
ready, pending, running = redis.exec
|
|
1333
|
+
ready = redis.scard("vmpooler__ready__#{pool_name}")
|
|
1334
|
+
pending = redis.scard("vmpooler__pending__#{pool_name}")
|
|
1335
|
+
running = redis.scard("vmpooler__running__#{pool_name}")
|
|
1336
|
+
|
|
1342
1337
|
total = pending.to_i + ready.to_i
|
|
1343
1338
|
|
|
1344
1339
|
$metrics.gauge("ready.#{pool_name}", ready)
|
|
@@ -1447,13 +1442,15 @@ module Vmpooler
|
|
|
1447
1442
|
end
|
|
1448
1443
|
|
|
1449
1444
|
def create_dns_object(config, logger, metrics, redis_connection_pool, dns_class, dns_name, options)
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1445
|
+
if defined?(Vmpooler::PoolManager::Dns)
|
|
1446
|
+
dns_klass = Vmpooler::PoolManager::Dns
|
|
1447
|
+
dns_klass.constants.each do |classname|
|
|
1448
|
+
next unless classname.to_s.casecmp(dns_class) == 0
|
|
1453
1449
|
|
|
1454
|
-
|
|
1450
|
+
return dns_klass.const_get(classname).new(config, logger, metrics, redis_connection_pool, dns_name, options)
|
|
1451
|
+
end
|
|
1452
|
+
raise("DNS '#{dns_class}' is unknown for pool with dns name '#{dns_name}'") if dns_klass.nil?
|
|
1455
1453
|
end
|
|
1456
|
-
raise("DNS '#{dns_class}' is unknown for pool with dns name '#{dns_name}'") if dns_klass.nil?
|
|
1457
1454
|
end
|
|
1458
1455
|
|
|
1459
1456
|
def check_ondemand_requests(maxloop = 0,
|
|
@@ -1594,11 +1591,9 @@ module Vmpooler
|
|
|
1594
1591
|
|
|
1595
1592
|
return unless vms_ready?(request_id, redis)
|
|
1596
1593
|
|
|
1597
|
-
redis.multi
|
|
1598
1594
|
redis.hset(ondemand_hash_key, 'status', 'ready')
|
|
1599
1595
|
redis.expire(ondemand_hash_key, default_expiration)
|
|
1600
1596
|
redis.zrem(processing_key, request_id)
|
|
1601
|
-
redis.exec
|
|
1602
1597
|
end
|
|
1603
1598
|
|
|
1604
1599
|
def request_expired?(request_id, score, redis)
|
data/lib/vmpooler/version.rb
CHANGED
data/lib/vmpooler.rb
CHANGED
|
@@ -103,7 +103,7 @@ module Vmpooler
|
|
|
103
103
|
parsed_config[:redis]['data_ttl'] = string_to_int(ENV['REDIS_DATA_TTL']) || parsed_config[:redis]['data_ttl'] || 168
|
|
104
104
|
parsed_config[:redis]['connection_pool_size'] = string_to_int(ENV['REDIS_CONNECTION_POOL_SIZE']) || parsed_config[:redis]['connection_pool_size'] || 10
|
|
105
105
|
parsed_config[:redis]['connection_pool_timeout'] = string_to_int(ENV['REDIS_CONNECTION_POOL_TIMEOUT']) || parsed_config[:redis]['connection_pool_timeout'] || 5
|
|
106
|
-
parsed_config[:redis]['reconnect_attempts'] =
|
|
106
|
+
parsed_config[:redis]['reconnect_attempts'] = string_array_to_array(ENV['REDIS_RECONNECT_ATTEMPTS']) || parsed_config[:redis]['reconnect_attempts'] || 10
|
|
107
107
|
|
|
108
108
|
parsed_config[:statsd] = parsed_config[:statsd] || {} if ENV['STATSD_SERVER']
|
|
109
109
|
parsed_config[:statsd]['server'] = ENV['STATSD_SERVER'] if ENV['STATSD_SERVER']
|
|
@@ -209,8 +209,13 @@ module Vmpooler
|
|
|
209
209
|
end
|
|
210
210
|
|
|
211
211
|
def self.new_redis(host = 'localhost', port = nil, password = nil, redis_reconnect_attempts = 10)
|
|
212
|
-
Redis.new(
|
|
213
|
-
|
|
212
|
+
Redis.new(
|
|
213
|
+
host: host,
|
|
214
|
+
port: port,
|
|
215
|
+
password: password,
|
|
216
|
+
reconnect_attempts: redis_reconnect_attempts,
|
|
217
|
+
connect_timeout: 300
|
|
218
|
+
)
|
|
214
219
|
end
|
|
215
220
|
|
|
216
221
|
def self.pools(conf)
|
|
@@ -235,6 +240,13 @@ module Vmpooler
|
|
|
235
240
|
Integer(s)
|
|
236
241
|
end
|
|
237
242
|
|
|
243
|
+
def self.string_array_to_array(s)
|
|
244
|
+
# Returns an array from an array like string
|
|
245
|
+
return if s.nil?
|
|
246
|
+
|
|
247
|
+
JSON.parse(s)
|
|
248
|
+
end
|
|
249
|
+
|
|
238
250
|
def self.true?(obj)
|
|
239
251
|
obj.to_s.downcase == 'true'
|
|
240
252
|
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: 3.
|
|
4
|
+
version: 3.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Puppet
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2023-
|
|
11
|
+
date: 2023-08-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -29,7 +29,7 @@ dependencies:
|
|
|
29
29
|
requirements:
|
|
30
30
|
- - "~>"
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '2.
|
|
32
|
+
version: '2.4'
|
|
33
33
|
name: connection_pool
|
|
34
34
|
prerelease: false
|
|
35
35
|
type: :runtime
|
|
@@ -37,7 +37,7 @@ dependencies:
|
|
|
37
37
|
requirements:
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '2.
|
|
40
|
+
version: '2.4'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
|
43
43
|
requirements:
|
|
@@ -71,7 +71,7 @@ dependencies:
|
|
|
71
71
|
requirements:
|
|
72
72
|
- - '='
|
|
73
73
|
- !ruby/object:Gem::Version
|
|
74
|
-
version: 0.
|
|
74
|
+
version: 0.23.0
|
|
75
75
|
name: opentelemetry-exporter-jaeger
|
|
76
76
|
prerelease: false
|
|
77
77
|
type: :runtime
|
|
@@ -79,13 +79,13 @@ dependencies:
|
|
|
79
79
|
requirements:
|
|
80
80
|
- - '='
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: 0.
|
|
82
|
+
version: 0.23.0
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
84
|
requirement: !ruby/object:Gem::Requirement
|
|
85
85
|
requirements:
|
|
86
86
|
- - '='
|
|
87
87
|
- !ruby/object:Gem::Version
|
|
88
|
-
version: 0.
|
|
88
|
+
version: 0.21.1
|
|
89
89
|
name: opentelemetry-instrumentation-concurrent_ruby
|
|
90
90
|
prerelease: false
|
|
91
91
|
type: :runtime
|
|
@@ -93,13 +93,13 @@ dependencies:
|
|
|
93
93
|
requirements:
|
|
94
94
|
- - '='
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: 0.
|
|
96
|
+
version: 0.21.1
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
98
|
requirement: !ruby/object:Gem::Requirement
|
|
99
99
|
requirements:
|
|
100
100
|
- - '='
|
|
101
101
|
- !ruby/object:Gem::Version
|
|
102
|
-
version: 0.
|
|
102
|
+
version: 0.22.2
|
|
103
103
|
name: opentelemetry-instrumentation-http_client
|
|
104
104
|
prerelease: false
|
|
105
105
|
type: :runtime
|
|
@@ -107,13 +107,13 @@ dependencies:
|
|
|
107
107
|
requirements:
|
|
108
108
|
- - '='
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: 0.
|
|
110
|
+
version: 0.22.2
|
|
111
111
|
- !ruby/object:Gem::Dependency
|
|
112
112
|
requirement: !ruby/object:Gem::Requirement
|
|
113
113
|
requirements:
|
|
114
114
|
- - '='
|
|
115
115
|
- !ruby/object:Gem::Version
|
|
116
|
-
version: 0.
|
|
116
|
+
version: 0.25.3
|
|
117
117
|
name: opentelemetry-instrumentation-redis
|
|
118
118
|
prerelease: false
|
|
119
119
|
type: :runtime
|
|
@@ -121,13 +121,13 @@ dependencies:
|
|
|
121
121
|
requirements:
|
|
122
122
|
- - '='
|
|
123
123
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: 0.
|
|
124
|
+
version: 0.25.3
|
|
125
125
|
- !ruby/object:Gem::Dependency
|
|
126
126
|
requirement: !ruby/object:Gem::Requirement
|
|
127
127
|
requirements:
|
|
128
128
|
- - '='
|
|
129
129
|
- !ruby/object:Gem::Version
|
|
130
|
-
version: 0.
|
|
130
|
+
version: 0.23.2
|
|
131
131
|
name: opentelemetry-instrumentation-sinatra
|
|
132
132
|
prerelease: false
|
|
133
133
|
type: :runtime
|
|
@@ -135,13 +135,13 @@ dependencies:
|
|
|
135
135
|
requirements:
|
|
136
136
|
- - '='
|
|
137
137
|
- !ruby/object:Gem::Version
|
|
138
|
-
version: 0.
|
|
138
|
+
version: 0.23.2
|
|
139
139
|
- !ruby/object:Gem::Dependency
|
|
140
140
|
requirement: !ruby/object:Gem::Requirement
|
|
141
141
|
requirements:
|
|
142
142
|
- - '='
|
|
143
143
|
- !ruby/object:Gem::Version
|
|
144
|
-
version: 0.
|
|
144
|
+
version: 0.24.1
|
|
145
145
|
name: opentelemetry-resource_detectors
|
|
146
146
|
prerelease: false
|
|
147
147
|
type: :runtime
|
|
@@ -149,16 +149,16 @@ dependencies:
|
|
|
149
149
|
requirements:
|
|
150
150
|
- - '='
|
|
151
151
|
- !ruby/object:Gem::Version
|
|
152
|
-
version: 0.
|
|
152
|
+
version: 0.24.1
|
|
153
153
|
- !ruby/object:Gem::Dependency
|
|
154
154
|
requirement: !ruby/object:Gem::Requirement
|
|
155
155
|
requirements:
|
|
156
156
|
- - "~>"
|
|
157
157
|
- !ruby/object:Gem::Version
|
|
158
|
-
version: '1.
|
|
158
|
+
version: '1.3'
|
|
159
159
|
- - ">="
|
|
160
160
|
- !ruby/object:Gem::Version
|
|
161
|
-
version: 1.0
|
|
161
|
+
version: 1.3.0
|
|
162
162
|
name: opentelemetry-sdk
|
|
163
163
|
prerelease: false
|
|
164
164
|
type: :runtime
|
|
@@ -166,10 +166,10 @@ dependencies:
|
|
|
166
166
|
requirements:
|
|
167
167
|
- - "~>"
|
|
168
168
|
- !ruby/object:Gem::Version
|
|
169
|
-
version: '1.
|
|
169
|
+
version: '1.3'
|
|
170
170
|
- - ">="
|
|
171
171
|
- !ruby/object:Gem::Version
|
|
172
|
-
version: 1.0
|
|
172
|
+
version: 1.3.0
|
|
173
173
|
- !ruby/object:Gem::Dependency
|
|
174
174
|
requirement: !ruby/object:Gem::Requirement
|
|
175
175
|
requirements:
|
|
@@ -263,7 +263,7 @@ dependencies:
|
|
|
263
263
|
requirements:
|
|
264
264
|
- - "~>"
|
|
265
265
|
- !ruby/object:Gem::Version
|
|
266
|
-
version: '
|
|
266
|
+
version: '5.0'
|
|
267
267
|
name: redis
|
|
268
268
|
prerelease: false
|
|
269
269
|
type: :runtime
|
|
@@ -271,7 +271,7 @@ dependencies:
|
|
|
271
271
|
requirements:
|
|
272
272
|
- - "~>"
|
|
273
273
|
- !ruby/object:Gem::Version
|
|
274
|
-
version: '
|
|
274
|
+
version: '5.0'
|
|
275
275
|
- !ruby/object:Gem::Dependency
|
|
276
276
|
requirement: !ruby/object:Gem::Requirement
|
|
277
277
|
requirements:
|
|
@@ -395,7 +395,7 @@ dependencies:
|
|
|
395
395
|
requirements:
|
|
396
396
|
- - "~>"
|
|
397
397
|
- !ruby/object:Gem::Version
|
|
398
|
-
version: 1.
|
|
398
|
+
version: 1.56.0
|
|
399
399
|
name: rubocop
|
|
400
400
|
prerelease: false
|
|
401
401
|
type: :development
|
|
@@ -403,7 +403,7 @@ dependencies:
|
|
|
403
403
|
requirements:
|
|
404
404
|
- - "~>"
|
|
405
405
|
- !ruby/object:Gem::Version
|
|
406
|
-
version: 1.
|
|
406
|
+
version: 1.56.0
|
|
407
407
|
- !ruby/object:Gem::Dependency
|
|
408
408
|
requirement: !ruby/object:Gem::Requirement
|
|
409
409
|
requirements:
|
|
@@ -518,7 +518,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
518
518
|
- !ruby/object:Gem::Version
|
|
519
519
|
version: '0'
|
|
520
520
|
requirements: []
|
|
521
|
-
rubygems_version: 3.3.
|
|
521
|
+
rubygems_version: 3.3.26
|
|
522
522
|
signing_key:
|
|
523
523
|
specification_version: 4
|
|
524
524
|
summary: vmpooler provides configurable pools of instantly-available (running) virtual
|