mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-26 10:08:40 -05:00
Only correlate Redis inventory with vCenter on startup
This commit is contained in:
parent
4558828a20
commit
b7f922fb11
1 changed files with 22 additions and 22 deletions
|
|
@ -75,6 +75,7 @@ def clone_vm template, pool, folder, datastore
|
||||||
|
|
||||||
# Add VM to Redis inventory ('pending' pool)
|
# Add VM to Redis inventory ('pending' pool)
|
||||||
$redis.sadd('vmware_host_pool__pending__'+vm['template'], vm['hostname'])
|
$redis.sadd('vmware_host_pool__pending__'+vm['template'], vm['hostname'])
|
||||||
|
inventory[vm] = 1
|
||||||
|
|
||||||
# Annotate with creation time, origin template, etc.
|
# Annotate with creation time, origin template, etc.
|
||||||
configSpec = RbVmomi::VIM.VirtualMachineConfigSpec(
|
configSpec = RbVmomi::VIM.VirtualMachineConfigSpec(
|
||||||
|
|
@ -134,6 +135,8 @@ def destroy_vm vm, pool
|
||||||
host.Destroy_Task.wait_for_completion
|
host.Destroy_Task.wait_for_completion
|
||||||
finish = '%.2f' % (Time.now-start)
|
finish = '%.2f' % (Time.now-start)
|
||||||
|
|
||||||
|
inventory.delete(vm)
|
||||||
|
|
||||||
$logger.log('s', "[-] [#{pool}] '#{vm}' destroyed in #{finish} seconds")
|
$logger.log('s', "[-] [#{pool}] '#{vm}' destroyed in #{finish} seconds")
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
@ -145,23 +148,23 @@ pools.each do |pool|
|
||||||
puts "Starting new worker thread for pool '#{pool['name']}'"
|
puts "Starting new worker thread for pool '#{pool['name']}'"
|
||||||
|
|
||||||
Thread.new {
|
Thread.new {
|
||||||
|
# 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'])
|
||||||
|
end
|
||||||
|
|
||||||
|
inventory[vm['name']] = 1
|
||||||
|
end
|
||||||
|
|
||||||
loop do
|
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'])
|
|
||||||
end
|
|
||||||
|
|
||||||
inventory[vm['name']] = 1
|
|
||||||
end
|
|
||||||
|
|
||||||
# READY
|
# READY
|
||||||
$redis.smembers('vmware_host_pool__ready__'+pool['name']).each do |vm|
|
$redis.smembers('vmware_host_pool__ready__'+pool['name']).each do |vm|
|
||||||
if (! inventory[vm])
|
if (! inventory[vm])
|
||||||
|
|
@ -171,12 +174,9 @@ pools.each do |pool|
|
||||||
|
|
||||||
# PENDING
|
# PENDING
|
||||||
$redis.smembers('vmware_host_pool__pending__'+pool['name']).each do |vm|
|
$redis.smembers('vmware_host_pool__pending__'+pool['name']).each do |vm|
|
||||||
#
|
if (! inventory[vm])
|
||||||
# This causes a race condition where more than one VM is cloned
|
$redis.srem('vmware_host_pool__pending__'+pool['name'], vm)
|
||||||
#
|
end
|
||||||
# if (! inventory[vm])
|
|
||||||
# $redis.srem('vmware_host_pool__pending__'+pool['name'], vm)
|
|
||||||
# end
|
|
||||||
|
|
||||||
check_vm(vm, pool['name'])
|
check_vm(vm, pool['name'])
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue