mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-26 10:08:40 -05:00
Implement 'pending' and 'ready' queues
This commit is contained in:
parent
15841eb8e5
commit
ba56310415
1 changed files with 33 additions and 8 deletions
|
|
@ -34,25 +34,50 @@ $redis = Redis.new
|
||||||
# Update loop
|
# Update loop
|
||||||
loop do
|
loop do
|
||||||
pools.each do |pool|
|
pools.each do |pool|
|
||||||
|
inventory = {}
|
||||||
total = 0
|
total = 0
|
||||||
|
|
||||||
# Locate the resource pool
|
# Locate the resource pool
|
||||||
datacenter = $vim.serviceInstance.find_datacenter
|
datacenter = $vim.serviceInstance.find_datacenter
|
||||||
base = vsphere_helper.find_pool(pool['pool'])
|
base = vsphere_helper.find_pool(pool['pool'])
|
||||||
|
|
||||||
# Count the number of VMs and correlate Redis inventory
|
# Make sure all VMs in resource pool are accounted-for
|
||||||
inventory = {}
|
|
||||||
base.vm.each do |vm|
|
base.vm.each do |vm|
|
||||||
if ! $redis.sismember('vmware_host_pool-'+pool['name'], vm['name'])
|
if (
|
||||||
$redis.sadd('vmware_host_pool-'+pool['name'], vm['name'])
|
(! $redis.sismember('vmware_host_pool__ready__'+pool['name'], vm['name'])) and
|
||||||
|
(! $redis.sismember('vmware_host_pool__pending__'+pool['name'], vm['name']))
|
||||||
|
)
|
||||||
|
$redis.sadd('vmware_host_pool__pending__'+pool['name'], vm['name'])
|
||||||
end
|
end
|
||||||
|
|
||||||
inventory[vm['name']] = 1
|
inventory[vm['name']] = 1
|
||||||
total = total + 1
|
total = total + 1
|
||||||
end
|
end
|
||||||
|
|
||||||
$redis.smembers('vmware_host_pool-'+pool['name']).each do |vm|
|
# Check pending pool
|
||||||
|
$redis.smembers('vmware_host_pool__pending__'+pool['name']).each do |vm|
|
||||||
|
if (
|
||||||
|
(vsphere_helper.find_vms(vm)[vm]) and
|
||||||
|
(vsphere_helper.find_vms(vm)[vm].summary.guest.toolsRunningStatus == 'guestToolsRunning') and
|
||||||
|
(vsphere_helper.find_vms(vm)[vm].summary.guest.ipAddress != nil)
|
||||||
|
)
|
||||||
|
begin
|
||||||
|
Socket.getaddrinfo(vm, nil)
|
||||||
|
rescue
|
||||||
|
break
|
||||||
|
end
|
||||||
|
|
||||||
|
$redis.sadd('vmware_host_pool__ready__'+pool['name'], vm)
|
||||||
|
$redis.srem('vmware_host_pool__pending__'+pool['name'], vm)
|
||||||
|
|
||||||
|
puts '[>] '+vm+' moved to \'ready\' pool'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Check ready pool
|
||||||
|
$redis.smembers('vmware_host_pool__ready__'+pool['name']).each do |vm|
|
||||||
if ! inventory[vm]
|
if ! inventory[vm]
|
||||||
$redis.srem('vmware_host_pool-'+pool['name'], vm)
|
$redis.srem('vmware_host_pool__ready__'+pool['name'], vm)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -105,8 +130,8 @@ loop do
|
||||||
:spec => spec
|
:spec => spec
|
||||||
).wait_for_completion
|
).wait_for_completion
|
||||||
|
|
||||||
# Add VM to Redis inventory
|
# Add VM to Redis inventory ('pending' pool)
|
||||||
$redis.sadd('vmware_host_pool-'+pool['name'], vm['hostname'])
|
$redis.sadd('vmware_host_pool__pending__'+pool['name'], vm['hostname'])
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue