Thread ALL THE THINGS

This commit is contained in:
Scott Schneider 2013-11-04 14:22:22 -08:00
parent ac7b2f1216
commit 699bf83803

View file

@ -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)