Handle empty queues in pool manager

Remove unneeded begin block in method

Fix formatting of rescue block in fail_pending_vm
This commit is contained in:
kirby@puppetlabs.com 2016-11-15 14:43:13 -08:00
parent a244f9b92a
commit f8bd79a8d9

View file

@ -49,17 +49,22 @@ module Vmpooler
end end
end end
def fail_pending_vm(vm, pool, timeout) def fail_pending_vm(vm, pool, timeout, exists=true)
clone_stamp = $redis.hget('vmpooler__vm__' + vm, 'clone') clone_stamp = $redis.hget("vmpooler__vm__#{vm}", 'clone')
return if ! clone_stamp
if (clone_stamp) &&
(((Time.now - Time.parse(clone_stamp)) / 60) > timeout)
time_since_clone = (Time.now - Time.parse(clone_stamp)) / 60
if time_since_clone > timeout
if exists
$redis.smove('vmpooler__pending__' + pool, 'vmpooler__completed__' + pool, vm) $redis.smove('vmpooler__pending__' + pool, 'vmpooler__completed__' + pool, vm)
$logger.log('d', "[!] [#{pool}] '#{vm}' marked as 'failed' after #{timeout} minutes") $logger.log('d', "[!] [#{pool}] '#{vm}' marked as 'failed' after #{timeout} minutes")
else
remove_nonexistent_vm(vm, pool)
end end
end end
rescue => err
$logger.log('d', "Fail pending VM failed with an error: #{err}")
end
def move_pending_vm_to_ready(vm, pool, host) def move_pending_vm_to_ready(vm, pool, host)
if (host.summary) && if (host.summary) &&
@ -549,7 +554,9 @@ module Vmpooler
end end
# RUNNING # RUNNING
$redis.smembers('vmpooler__running__' + pool['name']).each do |vm| running = $redis.smembers("vmpooler__running__#{pool['name']}")
if running
running.each do |vm|
if inventory[vm] if inventory[vm]
begin begin
check_running_vm(vm, pool['name'], $redis.hget('vmpooler__vm__' + vm, 'lifetime') || $config[:config]['vm_lifetime'] || 12) check_running_vm(vm, pool['name'], $redis.hget('vmpooler__vm__' + vm, 'lifetime') || $config[:config]['vm_lifetime'] || 12)
@ -557,9 +564,12 @@ module Vmpooler
end end
end end
end end
end
# READY # READY
$redis.smembers('vmpooler__ready__' + pool['name']).each do |vm| ready = $redis.smembers("vmpooler__ready__#{pool['name']}")
if ready
ready.each do |vm| if ready
if inventory[vm] if inventory[vm]
begin begin
check_ready_vm(vm, pool['name'], pool['ready_ttl'] || 0) check_ready_vm(vm, pool['name'], pool['ready_ttl'] || 0)
@ -567,9 +577,12 @@ module Vmpooler
end end
end end
end end
end
# PENDING # PENDING
$redis.smembers('vmpooler__pending__' + pool['name']).each do |vm| pending = $redis.smembers('vmpooler__pending__' + pool['name'])
if pending
pending.each do |vm|
if inventory[vm] if inventory[vm]
begin begin
check_pending_vm(vm, pool['name'], pool['timeout'] || $config[:config]['timeout'] || 15) check_pending_vm(vm, pool['name'], pool['timeout'] || $config[:config]['timeout'] || 15)
@ -577,9 +590,12 @@ module Vmpooler
end end
end end
end end
end
# COMPLETED # COMPLETED
$redis.smembers('vmpooler__completed__' + pool['name']).each do |vm| completed = $redis.smembers('vmpooler__completed__' + pool['name'])
if completed
completed.each do |vm|
if inventory[vm] if inventory[vm]
begin begin
destroy_vm(vm, pool['name']) destroy_vm(vm, pool['name'])
@ -596,9 +612,12 @@ module Vmpooler
$redis.del('vmpooler__vm__' + vm) $redis.del('vmpooler__vm__' + vm)
end end
end end
end
# DISCOVERED # DISCOVERED
$redis.smembers('vmpooler__discovered__' + pool['name']).each do |vm| discovered = $redis.smembers("vmpooler__discovered__#{pool['name']}")
if discovered
discovered.each do |vm|
%w(pending ready running completed).each do |queue| %w(pending ready running completed).each do |queue|
if $redis.sismember('vmpooler__' + queue + '__' + pool['name'], vm) if $redis.sismember('vmpooler__' + queue + '__' + pool['name'], vm)
$logger.log('d', "[!] [#{pool['name']}] '#{vm}' found in '#{queue}', removed from 'discovered' queue") $logger.log('d', "[!] [#{pool['name']}] '#{vm}' found in '#{queue}', removed from 'discovered' queue")
@ -610,9 +629,12 @@ module Vmpooler
$redis.smove('vmpooler__discovered__' + pool['name'], 'vmpooler__completed__' + pool['name'], vm) $redis.smove('vmpooler__discovered__' + pool['name'], 'vmpooler__completed__' + pool['name'], vm)
end end
end end
end
# MIGRATIONS # MIGRATIONS
$redis.smembers('vmpooler__migrating__' + pool['name']).each do |vm| migrations = $redis.smembers('vmpooler__migrating__' + pool['name'])
if migrations
migrations.each do |vm|
if inventory[vm] if inventory[vm]
begin begin
migrate_vm(vm, pool['name']) migrate_vm(vm, pool['name'])
@ -621,6 +643,7 @@ module Vmpooler
end end
end end
end end
end
# REPOPULATE # REPOPULATE
ready = $redis.scard('vmpooler__ready__' + pool['name']) ready = $redis.scard('vmpooler__ready__' + pool['name'])