mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-26 10:08:40 -05:00
Thread ALL THE THINGS
This commit is contained in:
parent
ac7b2f1216
commit
699bf83803
1 changed files with 123 additions and 107 deletions
|
|
@ -146,129 +146,145 @@ loop do
|
||||||
end
|
end
|
||||||
|
|
||||||
# Check 'pending' pool
|
# Check 'pending' pool
|
||||||
$redis.smembers('vmware_host_pool__pending__'+pool['name']).each do |vm|
|
Thread.new {
|
||||||
if ! inventory[vm]
|
$redis.smembers('vmware_host_pool__pending__'+pool['name']).each do |vm|
|
||||||
$redis.srem('vmware_host_pool__pending__'+pool['name'], vm)
|
if ! inventory[vm]
|
||||||
end
|
$redis.srem('vmware_host_pool__pending__'+pool['name'], vm)
|
||||||
|
end
|
||||||
|
|
||||||
if (
|
if (
|
||||||
($vsphere_helper.find_vms(vm)[vm]) and
|
($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.toolsRunningStatus == 'guestToolsRunning') and
|
||||||
($vsphere_helper.find_vms(vm)[vm].summary.guest.hostName) and
|
($vsphere_helper.find_vms(vm)[vm].summary.guest.hostName) and
|
||||||
($vsphere_helper.find_vms(vm)[vm].summary.guest.hostName == vm) and
|
($vsphere_helper.find_vms(vm)[vm].summary.guest.hostName == vm) and
|
||||||
($vsphere_helper.find_vms(vm)[vm].summary.guest.ipAddress != nil)
|
($vsphere_helper.find_vms(vm)[vm].summary.guest.ipAddress != nil)
|
||||||
)
|
)
|
||||||
begin
|
begin
|
||||||
Socket.getaddrinfo(vm, nil)
|
Socket.getaddrinfo(vm, nil)
|
||||||
rescue
|
rescue
|
||||||
if (
|
if (
|
||||||
($vsphere_helper.find_vms(vm)[vm].runtime) and
|
($vsphere_helper.find_vms(vm)[vm].runtime) and
|
||||||
($vsphere_helper.find_vms(vm)[vm].runtime.bootTime) and
|
($vsphere_helper.find_vms(vm)[vm].runtime.bootTime) and
|
||||||
(((( Time.now - $vsphere_helper.find_mvs(vm)[vm].runtime.bootTime ) / 60 ) / 60 ) >= 1)
|
(((( Time.now - $vsphere_helper.find_mvs(vm)[vm].runtime.bootTime ) / 60 ) / 60 ) >= 1)
|
||||||
)
|
)
|
||||||
$redis.srem('vmware_host_pool__pending__'+pool['name'], vm)
|
$redis.srem('vmware_host_pool__pending__'+pool['name'], vm)
|
||||||
$redis.sadd('vmware_host_pool__failed__'+pool['name'], vm)
|
$redis.sadd('vmware_host_pool__failed__'+pool['name'], vm)
|
||||||
|
|
||||||
# Metrics
|
# Metrics
|
||||||
$redis.lpush('vmware_host_pool_metrics__deploy_fail', '1')
|
$redis.lpush('vmware_host_pool_metrics__deploy_fail', '1')
|
||||||
|
|
||||||
$logger.log('s', "[<] '#{vm}' moved to 'failed' queue")
|
$logger.log('s', "[<] '#{vm}' moved to 'failed' queue")
|
||||||
|
end
|
||||||
|
|
||||||
|
next
|
||||||
end
|
end
|
||||||
|
|
||||||
|
$redis.sadd('vmware_host_pool__ready__'+pool['name'], vm)
|
||||||
|
$redis.srem('vmware_host_pool__pending__'+pool['name'], vm)
|
||||||
|
|
||||||
|
$logger.log('s', "[>] '#{vm}' moved to 'ready' queue")
|
||||||
|
|
||||||
|
# Metrics
|
||||||
|
$redis.lpush('vmware_host_pool_metrics__deploy_fail', '0')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check 'ready' pool
|
||||||
|
Thread.new {
|
||||||
|
$redis.smembers('vmware_host_pool__ready__'+pool['name']).each do |vm|
|
||||||
|
if ! inventory[vm]
|
||||||
|
$redis.srem('vmware_host_pool__ready__'+pool['name'], vm)
|
||||||
|
end
|
||||||
|
|
||||||
|
if (
|
||||||
|
(! $vsphere_helper.find_vms(vm)[vm]) or
|
||||||
|
($vsphere_helper.find_vms(vm)[vm].summary.guest.toolsRunningStatus != 'guestToolsRunning') or
|
||||||
|
($vsphere_helper.find_vms(vm)[vm].summary.guest.hostName != vm) or
|
||||||
|
($vsphere_helper.find_vms(vm)[vm].summary.guest.ipAddress == nil)
|
||||||
|
)
|
||||||
|
$redis.srem('vmware_host_pool__ready__'+pool['name'], vm)
|
||||||
|
$redis.sadd('vmware_host_pool__failed__'+pool['name'], vm)
|
||||||
|
|
||||||
|
$logger.log('s', "[<] '#{vm}' moved to 'failed' queue")
|
||||||
|
|
||||||
next
|
next
|
||||||
end
|
end
|
||||||
|
|
||||||
$redis.sadd('vmware_host_pool__ready__'+pool['name'], vm)
|
|
||||||
$redis.srem('vmware_host_pool__pending__'+pool['name'], vm)
|
|
||||||
|
|
||||||
$logger.log('s', "[>] '#{vm}' moved to 'ready' queue")
|
|
||||||
|
|
||||||
# Metrics
|
|
||||||
$redis.lpush('vmware_host_pool_metrics__deploy_fail', '0')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# Check 'ready' pool
|
|
||||||
$redis.smembers('vmware_host_pool__ready__'+pool['name']).each do |vm|
|
|
||||||
if ! inventory[vm]
|
|
||||||
$redis.srem('vmware_host_pool__ready__'+pool['name'], vm)
|
|
||||||
end
|
|
||||||
|
|
||||||
if (
|
|
||||||
(! $vsphere_helper.find_vms(vm)[vm]) or
|
|
||||||
($vsphere_helper.find_vms(vm)[vm].summary.guest.toolsRunningStatus != 'guestToolsRunning') or
|
|
||||||
($vsphere_helper.find_vms(vm)[vm].summary.guest.hostName != vm) or
|
|
||||||
($vsphere_helper.find_vms(vm)[vm].summary.guest.ipAddress == nil)
|
|
||||||
)
|
|
||||||
$redis.srem('vmware_host_pool__ready__'+pool['name'], vm)
|
|
||||||
$redis.sadd('vmware_host_pool__failed__'+pool['name'], vm)
|
|
||||||
|
|
||||||
$logger.log('s', "[<] '#{vm}' moved to 'failed' queue")
|
|
||||||
|
|
||||||
next
|
|
||||||
end
|
|
||||||
|
|
||||||
begin
|
|
||||||
Socket.getaddrinfo(vm, nil)
|
|
||||||
rescue
|
|
||||||
$redis.srem('vmware_host_pool__ready__'+pool['name'], vm)
|
|
||||||
$redis.sadd('vmware_host_pool__failed__'+pool['name'], vm)
|
|
||||||
|
|
||||||
$logger.log('s', "[<] '#{vm}' moved to 'failed' queue")
|
|
||||||
|
|
||||||
# Metrics
|
|
||||||
$redis.lpush('vmware_host_pool_metrics__deploy_fail', '1')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# Check 'completed' pool
|
|
||||||
$redis.smembers('vmware_host_pool__completed__'+pool['name']).each do |vm|
|
|
||||||
if ! inventory[vm]
|
|
||||||
$redis.srem('vmware_host_pool__completed__'+pool['name'], vm)
|
|
||||||
end
|
|
||||||
|
|
||||||
destroy_vm(vm)
|
|
||||||
end
|
|
||||||
|
|
||||||
# Check 'failed' pool
|
|
||||||
$redis.smembers('vmware_host_pool__failed__'+pool['name']).each do |vm|
|
|
||||||
if ! inventory[vm]
|
|
||||||
$redis.srem('vmware_host_pool__failed__'+pool['name'], vm)
|
|
||||||
end
|
|
||||||
|
|
||||||
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.hostName == vm) and
|
|
||||||
($vsphere_helper.find_vms(vm)[vm].summary.guest.ipAddress != nil)
|
|
||||||
)
|
|
||||||
begin
|
begin
|
||||||
Socket.getaddrinfo(vm, nil)
|
Socket.getaddrinfo(vm, nil)
|
||||||
rescue
|
rescue
|
||||||
next
|
$redis.srem('vmware_host_pool__ready__'+pool['name'], vm)
|
||||||
|
$redis.sadd('vmware_host_pool__failed__'+pool['name'], vm)
|
||||||
|
|
||||||
|
$logger.log('s', "[<] '#{vm}' moved to 'failed' queue")
|
||||||
|
|
||||||
|
# Metrics
|
||||||
|
$redis.lpush('vmware_host_pool_metrics__deploy_fail', '1')
|
||||||
|
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
|
end
|
||||||
|
|
||||||
$redis.sadd('vmware_host_pool__ready__'+pool['name'], vm)
|
Thread.new {
|
||||||
$redis.srem('vmware_host_pool__failed__'+pool['name'], vm)
|
destroy_vm(vm)
|
||||||
|
}
|
||||||
$logger.log('s', "[>] '#{vm}' moved to 'ready' queue")
|
|
||||||
else
|
|
||||||
destroy_vm(vm)
|
|
||||||
end
|
end
|
||||||
end
|
}
|
||||||
|
|
||||||
|
# Check 'failed' pool
|
||||||
|
Thread.new {
|
||||||
|
$redis.smembers('vmware_host_pool__failed__'+pool['name']).each do |vm|
|
||||||
|
if ! inventory[vm]
|
||||||
|
$redis.srem('vmware_host_pool__failed__'+pool['name'], vm)
|
||||||
|
end
|
||||||
|
|
||||||
|
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.hostName == vm) and
|
||||||
|
($vsphere_helper.find_vms(vm)[vm].summary.guest.ipAddress != nil)
|
||||||
|
)
|
||||||
|
begin
|
||||||
|
Socket.getaddrinfo(vm, nil)
|
||||||
|
rescue
|
||||||
|
next
|
||||||
|
end
|
||||||
|
|
||||||
|
$redis.sadd('vmware_host_pool__ready__'+pool['name'], vm)
|
||||||
|
$redis.srem('vmware_host_pool__failed__'+pool['name'], vm)
|
||||||
|
|
||||||
|
$logger.log('s', "[>] '#{vm}' moved to 'ready' queue")
|
||||||
|
else
|
||||||
|
Thread.new {
|
||||||
|
destroy_vm(vm)
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
# Bring the pool up to the desired size
|
# Bring the pool up to the desired size
|
||||||
if total < pool['size']
|
Thread.new {
|
||||||
# Provision VMs
|
if total < pool['size']
|
||||||
(1..(pool['size']-total)).each { |i|
|
# Provision VMs
|
||||||
clone_vm(
|
(1..(pool['size']-total)).each { |i|
|
||||||
pool['template'],
|
Thread.new {
|
||||||
pool['pool'],
|
clone_vm(
|
||||||
pool['folder'],
|
pool['template'],
|
||||||
pool['datastore']
|
pool['pool'],
|
||||||
)
|
pool['folder'],
|
||||||
}
|
pool['datastore']
|
||||||
end
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
# Metrics
|
# Metrics
|
||||||
$redis.ltrim('vmware_host_pool_metrics__deploy_fail', 0, 100)
|
$redis.ltrim('vmware_host_pool_metrics__deploy_fail', 0, 100)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue