mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-26 10:08:40 -05:00
Each Redis queue gets its own thread
This commit is contained in:
parent
d29552eaa6
commit
90b7e6585d
1 changed files with 71 additions and 17 deletions
|
|
@ -161,11 +161,11 @@ end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Update loop
|
# Promotion loop
|
||||||
|
Thread.new {
|
||||||
loop do
|
loop do
|
||||||
pools.each do |pool|
|
pools.each do |pool|
|
||||||
inventory = {}
|
inventory = {}
|
||||||
total = 0
|
|
||||||
|
|
||||||
# Locate the resource pool
|
# Locate the resource pool
|
||||||
base = $vsphere_helper.find_pool(pool['pool'])
|
base = $vsphere_helper.find_pool(pool['pool'])
|
||||||
|
|
@ -183,10 +183,8 @@ loop do
|
||||||
end
|
end
|
||||||
|
|
||||||
inventory[vm['name']] = 1
|
inventory[vm['name']] = 1
|
||||||
total = total+1
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Check 'pending' pool
|
|
||||||
Thread.new {
|
Thread.new {
|
||||||
$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]
|
if ! inventory[vm]
|
||||||
|
|
@ -201,6 +199,75 @@ loop do
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
# Cleanup loop
|
||||||
|
Thread.new {
|
||||||
|
loop do
|
||||||
|
pools.each do |pool|
|
||||||
|
inventory = {}
|
||||||
|
|
||||||
|
# Locate the resource pool
|
||||||
|
base = $vsphere_helper.find_pool(pool['pool'])
|
||||||
|
|
||||||
|
# Make sure all VMs in resource pool are accounted-for
|
||||||
|
base.vm.each do |vm|
|
||||||
|
if (
|
||||||
|
(! $redis.sismember('vmware_host_pool__pending__'+pool['name'], vm['name'])) and
|
||||||
|
(! $redis.sismember('vmware_host_pool__ready__'+pool['name'], vm['name'])) and
|
||||||
|
(! $redis.sismember('vmware_host_pool__running__'+pool['name'], vm['name'])) and
|
||||||
|
(! $redis.sismember('vmware_host_pool__completed__'+pool['name'], vm['name'])) and
|
||||||
|
(! $redis.sismember('vmware_host_pool__failed__'+pool['name'], vm['name']))
|
||||||
|
)
|
||||||
|
$redis.sadd('vmware_host_pool__pending__'+pool['name'], vm['name'])
|
||||||
|
end
|
||||||
|
|
||||||
|
inventory[vm['name']] = 1
|
||||||
|
end
|
||||||
|
|
||||||
|
Thread.new {
|
||||||
|
$redis.smembers('vmware_host_pool__completed__'+pool['name']).each do |vm|
|
||||||
|
if ! inventory[vm]
|
||||||
|
$redis.srem('vmware_host_pool__completed__'+pool['name'], vm)
|
||||||
|
end
|
||||||
|
|
||||||
|
Thread.new {
|
||||||
|
destroy_vm(vm)
|
||||||
|
}
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
# Update loop
|
||||||
|
loop do
|
||||||
|
pools.each do |pool|
|
||||||
|
inventory = {}
|
||||||
|
|
||||||
|
# Locate the resource pool
|
||||||
|
base = $vsphere_helper.find_pool(pool['pool'])
|
||||||
|
|
||||||
|
# Make sure all VMs in resource pool are accounted-for
|
||||||
|
base.vm.each do |vm|
|
||||||
|
if (
|
||||||
|
(! $redis.sismember('vmware_host_pool__pending__'+pool['name'], vm['name'])) and
|
||||||
|
(! $redis.sismember('vmware_host_pool__ready__'+pool['name'], vm['name'])) and
|
||||||
|
(! $redis.sismember('vmware_host_pool__running__'+pool['name'], vm['name'])) and
|
||||||
|
(! $redis.sismember('vmware_host_pool__completed__'+pool['name'], vm['name'])) and
|
||||||
|
(! $redis.sismember('vmware_host_pool__failed__'+pool['name'], vm['name']))
|
||||||
|
)
|
||||||
|
$redis.sadd('vmware_host_pool__pending__'+pool['name'], vm['name'])
|
||||||
|
end
|
||||||
|
|
||||||
|
inventory[vm['name']] = 1
|
||||||
|
end
|
||||||
|
|
||||||
|
total = $redis.scard('vmware_host_pool__ready__'+pool['name']) +
|
||||||
|
$redis.scard('vmware_host_pool__pending__'+pool['name'])
|
||||||
|
|
||||||
# Check 'ready' pool
|
# Check 'ready' pool
|
||||||
Thread.new {
|
Thread.new {
|
||||||
|
|
@ -239,19 +306,6 @@ loop do
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check 'completed' pool
|
|
||||||
Thread.new {
|
|
||||||
$redis.smembers('vmware_host_pool__completed__'+pool['name']).each do |vm|
|
|
||||||
if ! inventory[vm]
|
|
||||||
$redis.srem('vmware_host_pool__completed__'+pool['name'], vm)
|
|
||||||
end
|
|
||||||
|
|
||||||
Thread.new {
|
|
||||||
destroy_vm(vm)
|
|
||||||
}
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check 'failed' pool
|
# Check 'failed' pool
|
||||||
Thread.new {
|
Thread.new {
|
||||||
$redis.smembers('vmware_host_pool__failed__'+pool['name']).each do |vm|
|
$redis.smembers('vmware_host_pool__failed__'+pool['name']).each do |vm|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue