Update migration_count method for greater readability and predictability.

Update migrate_vm to make clear when an if block is the end of the line by returning. Use scard instead of smembers.size() for determining migrations in progress.
This commit is contained in:
kirby@puppetlabs.com 2016-11-16 10:34:44 -08:00
parent e6613d56a0
commit 109f197fe7

View file

@ -478,7 +478,7 @@ module Vmpooler
def migration_limit(migration_limit) def migration_limit(migration_limit)
# Returns migration_limit setting when enabled # Returns migration_limit setting when enabled
return false if migration_limit == 0 or not migration_limit return false if migration_limit == 0 || ! migration_limit
migration_limit if migration_limit >= 1 migration_limit if migration_limit >= 1
end end
@ -494,13 +494,15 @@ module Vmpooler
vm_object = find_vsphere_pool_vm(pool, vm, vsphere) vm_object = find_vsphere_pool_vm(pool, vm, vsphere)
parent_host, parent_host_name = get_vm_host_info(vm_object) parent_host, parent_host_name = get_vm_host_info(vm_object)
migration_limit = migration_limit $config[:config]['migration_limit'] migration_limit = migration_limit $config[:config]['migration_limit']
migration_count = $redis.scard('vmpooler__migration')
if not migration_limit if ! migration_limit
$logger.log('s', "[ ] [#{pool}] '#{vm}' is running on #{parent_host_name}") $logger.log('s', "[ ] [#{pool}] '#{vm}' is running on #{parent_host_name}")
return
else else
migration_count = $redis.smembers('vmpooler__migration').size
if migration_count >= migration_limit if migration_count >= migration_limit
$logger.log('s', "[ ] [#{pool}] '#{vm}' is running on #{parent_host_name}. No migration will be evaluated since the migration_limit has been reached") $logger.log('s', "[ ] [#{pool}] '#{vm}' is running on #{parent_host_name}. No migration will be evaluated since the migration_limit has been reached")
return
else else
$redis.sadd('vmpooler__migration', vm) $redis.sadd('vmpooler__migration', vm)
host, host_name = vsphere.find_least_used_compatible_host(vm_object) host, host_name = vsphere.find_least_used_compatible_host(vm_object)
@ -585,7 +587,8 @@ module Vmpooler
$redis.smembers("vmpooler__running__#{pool['name']}").each do |vm| $redis.smembers("vmpooler__running__#{pool['name']}").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, vsphere) vm_lifetime = $redis.hget('vmpooler__vm__' + vm, 'lifetime') || $config[:config]['vm_lifetime'] || 12
check_running_vm(vm, pool['name'], vm_lifetime, vsphere)
rescue rescue
end end
end end
@ -605,7 +608,8 @@ module Vmpooler
$redis.smembers("vmpooler__pending__#{pool['name']}").each do |vm| $redis.smembers("vmpooler__pending__#{pool['name']}").each do |vm|
if inventory[vm] if inventory[vm]
begin begin
check_pending_vm(vm, pool['name'], pool['timeout'] || $config[:config]['timeout'] || 15, vsphere) pool_timeout = pool['timeout'] || $config[:config]['timeout'] || 15
check_pending_vm(vm, pool['name'], pool_timeout, vsphere)
rescue rescue
end end
end end