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
def fail_pending_vm(vm, pool, timeout)
clone_stamp = $redis.hget('vmpooler__vm__' + vm, 'clone')
if (clone_stamp) &&
(((Time.now - Time.parse(clone_stamp)) / 60) > timeout)
def fail_pending_vm(vm, pool, timeout, exists=true)
clone_stamp = $redis.hget("vmpooler__vm__#{vm}", 'clone')
return if ! clone_stamp
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)
$logger.log('d', "[!] [#{pool}] '#{vm}' marked as 'failed' after #{timeout} minutes")
else
remove_nonexistent_vm(vm, pool)
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)
if (host.summary) &&
@ -549,7 +554,9 @@ module Vmpooler
end
# 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]
begin
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
# 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]
begin
check_ready_vm(vm, pool['name'], pool['ready_ttl'] || 0)
@ -567,9 +577,12 @@ module Vmpooler
end
end
end
end
# 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]
begin
check_pending_vm(vm, pool['name'], pool['timeout'] || $config[:config]['timeout'] || 15)
@ -577,9 +590,12 @@ module Vmpooler
end
end
end
end
# 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]
begin
destroy_vm(vm, pool['name'])
@ -596,9 +612,12 @@ module Vmpooler
$redis.del('vmpooler__vm__' + vm)
end
end
end
# 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|
if $redis.sismember('vmpooler__' + queue + '__' + pool['name'], vm)
$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)
end
end
end
# 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]
begin
migrate_vm(vm, pool['name'])
@ -621,6 +643,7 @@ module Vmpooler
end
end
end
end
# REPOPULATE
ready = $redis.scard('vmpooler__ready__' + pool['name'])