Revert "Only correlate Redis inventory with vCenter on startup"

This reverts commit 658496f776f684dfcc31d8423bbafff38ea94e27.
This commit is contained in:
Scott Schneider 2013-11-05 14:13:09 -08:00
parent b7f922fb11
commit 71a9150631

View file

@ -75,7 +75,6 @@ def clone_vm template, pool, folder, datastore
# Add VM to Redis inventory ('pending' pool)
$redis.sadd('vmware_host_pool__pending__'+vm['template'], vm['hostname'])
inventory[vm] = 1
# Annotate with creation time, origin template, etc.
configSpec = RbVmomi::VIM.VirtualMachineConfigSpec(
@ -135,8 +134,6 @@ def destroy_vm vm, pool
host.Destroy_Task.wait_for_completion
finish = '%.2f' % (Time.now-start)
inventory.delete(vm)
$logger.log('s', "[-] [#{pool}] '#{vm}' destroyed in #{finish} seconds")
end
}
@ -148,23 +145,23 @@ pools.each do |pool|
puts "Starting new worker thread for pool '#{pool['name']}'"
Thread.new {
# INVENTORY
inventory = {}
base = $vsphere_helper.find_pool(pool['pool'])
loop do
# INVENTORY
inventory = {}
base = $vsphere_helper.find_pool(pool['pool'])
base.vm.each do |vm|
if (
(! $redis.sismember('vmware_host_pool__ready__'+pool['name'], vm['name'])) and
(! $redis.sismember('vmware_host_pool__pending__'+pool['name'], vm['name'])) and
(! $redis.sismember('vmware_host_pool__completed__'+pool['name'], vm['name']))
)
$redis.sadd('vmware_host_pool__pending__'+pool['name'], vm['name'])
base.vm.each do |vm|
if (
(! $redis.sismember('vmware_host_pool__ready__'+pool['name'], vm['name'])) and
(! $redis.sismember('vmware_host_pool__pending__'+pool['name'], vm['name'])) and
(! $redis.sismember('vmware_host_pool__completed__'+pool['name'], vm['name']))
)
$redis.sadd('vmware_host_pool__pending__'+pool['name'], vm['name'])
end
inventory[vm['name']] = 1
end
inventory[vm['name']] = 1
end
loop do
# READY
$redis.smembers('vmware_host_pool__ready__'+pool['name']).each do |vm|
if (! inventory[vm])
@ -174,9 +171,12 @@ pools.each do |pool|
# PENDING
$redis.smembers('vmware_host_pool__pending__'+pool['name']).each do |vm|
if (! inventory[vm])
$redis.srem('vmware_host_pool__pending__'+pool['name'], vm)
end
#
# This causes a race condition where more than one VM is cloned
#
# if (! inventory[vm])
# $redis.srem('vmware_host_pool__pending__'+pool['name'], vm)
# end
check_vm(vm, pool['name'])
end