mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-26 01:58:41 -05:00
(RE-15162) Update Redis gem to version 5.0.
This commit is contained in:
parent
f243cbab20
commit
1aad972755
4 changed files with 62 additions and 52 deletions
19
Gemfile.lock
19
Gemfile.lock
|
|
@ -3,7 +3,7 @@ PATH
|
|||
specs:
|
||||
vmpooler (3.1.0)
|
||||
concurrent-ruby (~> 1.1)
|
||||
connection_pool (~> 2.2)
|
||||
connection_pool (~> 2.4)
|
||||
deep_merge (~> 1.2)
|
||||
net-ldap (~> 0.16)
|
||||
opentelemetry-exporter-jaeger (= 0.22.0)
|
||||
|
|
@ -18,7 +18,7 @@ PATH
|
|||
puma (>= 5.0.4, < 7)
|
||||
rack (>= 2.2, < 4.0)
|
||||
rake (~> 13.0)
|
||||
redis (~> 4.1)
|
||||
redis (~> 5.0)
|
||||
sinatra (>= 2, < 4)
|
||||
spicy-proton (~> 2.1)
|
||||
statsd-ruby (~> 1.4)
|
||||
|
|
@ -114,19 +114,22 @@ GEM
|
|||
rack (>= 1.3)
|
||||
rainbow (3.1.1)
|
||||
rake (13.0.6)
|
||||
redis (4.8.1)
|
||||
redis (5.0.6)
|
||||
redis-client (>= 0.9.0)
|
||||
redis-client (0.14.1)
|
||||
connection_pool
|
||||
regexp_parser (2.8.0)
|
||||
rexml (3.2.5)
|
||||
rspec (3.12.0)
|
||||
rspec-core (~> 3.12.0)
|
||||
rspec-expectations (~> 3.12.0)
|
||||
rspec-mocks (~> 3.12.0)
|
||||
rspec-core (3.12.1)
|
||||
rspec-core (3.12.2)
|
||||
rspec-support (~> 3.12.0)
|
||||
rspec-expectations (3.12.2)
|
||||
rspec-expectations (3.12.3)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.12.0)
|
||||
rspec-mocks (3.12.3)
|
||||
rspec-mocks (3.12.5)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.12.0)
|
||||
rspec-support (3.12.0)
|
||||
|
|
@ -169,9 +172,7 @@ GEM
|
|||
rspec (~> 3)
|
||||
|
||||
PLATFORMS
|
||||
universal-java-1.8
|
||||
universal-java-11
|
||||
x86_64-linux
|
||||
|
||||
DEPENDENCIES
|
||||
climate_control (>= 0.2.0)
|
||||
|
|
@ -186,4 +187,4 @@ DEPENDENCIES
|
|||
yarjuf (>= 2.0)
|
||||
|
||||
BUNDLED WITH
|
||||
2.3.18
|
||||
2.4.12
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ module Vmpooler
|
|||
parsed_config[:redis]['data_ttl'] = string_to_int(ENV['REDIS_DATA_TTL']) || parsed_config[:redis]['data_ttl'] || 168
|
||||
parsed_config[:redis]['connection_pool_size'] = string_to_int(ENV['REDIS_CONNECTION_POOL_SIZE']) || parsed_config[:redis]['connection_pool_size'] || 10
|
||||
parsed_config[:redis]['connection_pool_timeout'] = string_to_int(ENV['REDIS_CONNECTION_POOL_TIMEOUT']) || parsed_config[:redis]['connection_pool_timeout'] || 5
|
||||
parsed_config[:redis]['reconnect_attempts'] = string_to_int(ENV['REDIS_RECONNECT_ATTEMPTS']) || parsed_config[:redis]['reconnect_attempts'] || 10
|
||||
parsed_config[:redis]['reconnect_attempts'] = string_array_to_array(ENV['REDIS_RECONNECT_ATTEMPTS']) || parsed_config[:redis]['reconnect_attempts'] || 10
|
||||
|
||||
parsed_config[:statsd] = parsed_config[:statsd] || {} if ENV['STATSD_SERVER']
|
||||
parsed_config[:statsd]['server'] = ENV['STATSD_SERVER'] if ENV['STATSD_SERVER']
|
||||
|
|
@ -209,8 +209,7 @@ module Vmpooler
|
|||
end
|
||||
|
||||
def self.new_redis(host = 'localhost', port = nil, password = nil, redis_reconnect_attempts = 10)
|
||||
Redis.new(host: host, port: port, password: password, reconnect_attempts: redis_reconnect_attempts, reconnect_delay: 1.5,
|
||||
reconnect_delay_max: 10.0)
|
||||
Redis.new(host: host, port: port, password: password, reconnect_attempts: redis_reconnect_attempts, timeout: 5)
|
||||
end
|
||||
|
||||
def self.pools(conf)
|
||||
|
|
@ -235,6 +234,13 @@ module Vmpooler
|
|||
Integer(s)
|
||||
end
|
||||
|
||||
def self.string_array_to_array(s)
|
||||
# Returns an array from an array like string
|
||||
return if s.nil?
|
||||
|
||||
JSON.parse(s)
|
||||
end
|
||||
|
||||
def self.true?(obj)
|
||||
obj.to_s.downcase == 'true'
|
||||
end
|
||||
|
|
|
|||
|
|
@ -129,16 +129,16 @@ module Vmpooler
|
|||
if exists
|
||||
request_id = redis.hget("vmpooler__vm__#{vm}", 'request_id')
|
||||
pool_alias = redis.hget("vmpooler__vm__#{vm}", 'pool_alias') if request_id
|
||||
redis.multi
|
||||
redis.smove("vmpooler__pending__#{pool}", "vmpooler__completed__#{pool}", vm)
|
||||
if request_id
|
||||
ondemandrequest_hash = redis.hgetall("vmpooler__odrequest__#{request_id}")
|
||||
if ondemandrequest_hash && ondemandrequest_hash['status'] != 'failed' && ondemandrequest_hash['status'] != 'deleted'
|
||||
# will retry a VM that did not come up as vm_ready? only if it has not been market failed or deleted
|
||||
redis.zadd('vmpooler__odcreate__task', 1, "#{pool_alias}:#{pool}:1:#{request_id}")
|
||||
redis.multi do |transaction|
|
||||
transaction.smove("vmpooler__pending__#{pool}", "vmpooler__completed__#{pool}", vm)
|
||||
if request_id
|
||||
ondemandrequest_hash = transaction.hgetall("vmpooler__odrequest__#{request_id}")
|
||||
if ondemandrequest_hash && ondemandrequest_hash['status'] != 'failed' && ondemandrequest_hash['status'] != 'deleted'
|
||||
# will retry a VM that did not come up as vm_ready? only if it has not been market failed or deleted
|
||||
redis.zadd('vmpooler__odcreate__task', 1, "#{pool_alias}:#{pool}:1:#{request_id}")
|
||||
end
|
||||
end
|
||||
end
|
||||
redis.exec
|
||||
$metrics.increment("errors.markedasfailed.#{pool}")
|
||||
$logger.log('d', "[!] [#{pool}] '#{vm}' marked as 'failed' after #{timeout} minutes")
|
||||
else
|
||||
|
|
@ -429,15 +429,15 @@ module Vmpooler
|
|||
mutex.synchronize do
|
||||
@redis.with_metrics do |redis|
|
||||
# Add VM to Redis inventory ('pending' pool)
|
||||
redis.multi
|
||||
redis.sadd("vmpooler__pending__#{pool_name}", new_vmname)
|
||||
redis.hset("vmpooler__vm__#{new_vmname}", 'clone', Time.now)
|
||||
redis.hset("vmpooler__vm__#{new_vmname}", 'template', pool_name) # This value is used to represent the pool.
|
||||
redis.hset("vmpooler__vm__#{new_vmname}", 'pool', pool_name)
|
||||
redis.hset("vmpooler__vm__#{new_vmname}", 'domain', pool_domain)
|
||||
redis.hset("vmpooler__vm__#{new_vmname}", 'request_id', request_id) if request_id
|
||||
redis.hset("vmpooler__vm__#{new_vmname}", 'pool_alias', pool_alias) if pool_alias
|
||||
redis.exec
|
||||
redis.multi do |transaction|
|
||||
transaction.sadd("vmpooler__pending__#{pool_name}", new_vmname)
|
||||
transaction.hset("vmpooler__vm__#{new_vmname}", 'clone', Time.now)
|
||||
transaction.hset("vmpooler__vm__#{new_vmname}", 'template', pool_name) # This value is used to represent the pool.
|
||||
transaction.hset("vmpooler__vm__#{new_vmname}", 'pool', pool_name)
|
||||
transaction.hset("vmpooler__vm__#{new_vmname}", 'domain', pool_domain)
|
||||
transaction.hset("vmpooler__vm__#{new_vmname}", 'request_id', request_id) if request_id
|
||||
transaction.hset("vmpooler__vm__#{new_vmname}", 'pool_alias', pool_alias) if pool_alias
|
||||
end
|
||||
end
|
||||
|
||||
begin
|
||||
|
|
@ -870,9 +870,12 @@ module Vmpooler
|
|||
wakeup_by = Time.now + wakeup_period
|
||||
return if time_passed?(:exit_by, exit_by)
|
||||
|
||||
@redis.with_metrics do |redis|
|
||||
@redis.with do |redis|
|
||||
puts "vmpooler__ready__#{options[:poolname]}"
|
||||
initial_ready_size = redis.scard("vmpooler__ready__#{options[:poolname]}") if options[:pool_size_change]
|
||||
|
||||
puts initial_ready_size
|
||||
|
||||
initial_clone_target = redis.hget("vmpooler__pool__#{options[:poolname]}", options[:clone_target]) if options[:clone_target_change]
|
||||
|
||||
initial_template = redis.hget('vmpooler__template__prepared', options[:poolname]) if options[:pool_template_change]
|
||||
|
|
@ -917,11 +920,11 @@ module Vmpooler
|
|||
end
|
||||
|
||||
if options[:ondemand_request]
|
||||
redis.multi
|
||||
redis.zcard('vmpooler__provisioning__request')
|
||||
redis.zcard('vmpooler__provisioning__processing')
|
||||
redis.zcard('vmpooler__odcreate__task')
|
||||
od_request, od_processing, od_createtask = redis.exec
|
||||
od_request, od_processing, od_createtask = redis.multi do |transaction|
|
||||
transaction.zcard('vmpooler__provisioning__request')
|
||||
transaction.zcard('vmpooler__provisioning__processing')
|
||||
transaction.zcard('vmpooler__odcreate__task')
|
||||
end
|
||||
break unless od_request == 0
|
||||
break unless od_processing == 0
|
||||
break unless od_createtask == 0
|
||||
|
|
@ -1093,10 +1096,10 @@ module Vmpooler
|
|||
|
||||
def remove_excess_vms(pool)
|
||||
@redis.with_metrics do |redis|
|
||||
redis.multi
|
||||
redis.scard("vmpooler__ready__#{pool['name']}")
|
||||
redis.scard("vmpooler__pending__#{pool['name']}")
|
||||
ready, pending = redis.exec
|
||||
ready, pending = redis.multi do |transaction|
|
||||
transaction.scard("vmpooler__ready__#{pool['name']}")
|
||||
transaction.scard("vmpooler__pending__#{pool['name']}")
|
||||
end
|
||||
total = pending.to_i + ready.to_i
|
||||
break if total.nil?
|
||||
break if total == 0
|
||||
|
|
@ -1334,11 +1337,11 @@ module Vmpooler
|
|||
return if pool_mutex(pool_name).locked?
|
||||
|
||||
@redis.with_metrics do |redis|
|
||||
redis.multi
|
||||
redis.scard("vmpooler__ready__#{pool_name}")
|
||||
redis.scard("vmpooler__pending__#{pool_name}")
|
||||
redis.scard("vmpooler__running__#{pool_name}")
|
||||
ready, pending, running = redis.exec
|
||||
ready, pending, running = redis.multi do |transaction|
|
||||
transaction.scard("vmpooler__ready__#{pool_name}")
|
||||
transaction.scard("vmpooler__pending__#{pool_name}")
|
||||
transaction.scard("vmpooler__running__#{pool_name}")
|
||||
end
|
||||
total = pending.to_i + ready.to_i
|
||||
|
||||
$metrics.gauge("ready.#{pool_name}", ready)
|
||||
|
|
@ -1594,11 +1597,11 @@ module Vmpooler
|
|||
|
||||
return unless vms_ready?(request_id, redis)
|
||||
|
||||
redis.multi
|
||||
redis.hset(ondemand_hash_key, 'status', 'ready')
|
||||
redis.expire(ondemand_hash_key, default_expiration)
|
||||
redis.zrem(processing_key, request_id)
|
||||
redis.exec
|
||||
redis.multi do |transaction|
|
||||
transaction.hset(ondemand_hash_key, 'status', 'ready')
|
||||
transaction.expire(ondemand_hash_key, default_expiration)
|
||||
transaction.zrem(processing_key, request_id)
|
||||
end
|
||||
end
|
||||
|
||||
def request_expired?(request_id, score, redis)
|
||||
|
|
@ -1633,7 +1636,7 @@ module Vmpooler
|
|||
def execute!(maxloop = 0, loop_delay = 1)
|
||||
$logger.log('d', 'starting vmpooler')
|
||||
|
||||
@redis.with_metrics do |redis|
|
||||
@redis.with do |redis|
|
||||
# Clear out the tasks manager, as we don't know about any tasks at this point
|
||||
redis.set('vmpooler__tasks__clone', 0)
|
||||
redis.set('vmpooler__tasks__ondemandclone', 0)
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ Gem::Specification.new do |s|
|
|||
s.executables = 'vmpooler'
|
||||
s.require_paths = ["lib"]
|
||||
s.add_dependency 'concurrent-ruby', '~> 1.1'
|
||||
s.add_dependency 'connection_pool', '~> 2.2'
|
||||
s.add_dependency 'connection_pool', '~> 2.4'
|
||||
s.add_dependency 'deep_merge', '~> 1.2'
|
||||
s.add_dependency 'net-ldap', '~> 0.16'
|
||||
s.add_dependency 'opentelemetry-exporter-jaeger', '= 0.22.0'
|
||||
|
|
@ -32,7 +32,7 @@ Gem::Specification.new do |s|
|
|||
s.add_dependency 'puma', '>= 5.0.4', '< 7'
|
||||
s.add_dependency 'rack', '>= 2.2', '< 4.0'
|
||||
s.add_dependency 'rake', '~> 13.0'
|
||||
s.add_dependency 'redis', '~> 4.1'
|
||||
s.add_dependency 'redis', '~> 5.0'
|
||||
s.add_dependency 'sinatra', '>= 2', '< 4'
|
||||
s.add_dependency 'spicy-proton', '~> 2.1'
|
||||
s.add_dependency 'statsd-ruby', '~> 1.4'
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue