Additional object-existance checks

This commit is contained in:
Scott Schneider 2013-12-06 12:05:47 -08:00
parent 77ffd7f829
commit e67d8a5d54

View file

@ -42,19 +42,26 @@ def check_pending_vm vm, pool, timeout
host = $vsphere_helper.find_vms(vm)[vm] host = $vsphere_helper.find_vms(vm)[vm]
if (host) if (host)
if (host.summary.guest.hostName == vm) if (
(host.summary) and
(host.summary.guest) and
(host.summary.guest.hostName) and
(host.summary.guest.hostName == vm)
)
begin begin
Socket.getaddrinfo(vm, nil) Socket.getaddrinfo(vm, nil)
rescue rescue
# $logger.log('d', "[!] [#{pool}] '#{vm}' cannot connect")
end end
$redis.smove('vmware_host_pool__pending__'+pool, 'vmware_host_pool__ready__'+pool, vm) $redis.smove('vmware_host_pool__pending__'+pool, 'vmware_host_pool__ready__'+pool, vm)
$logger.log('s', "[>] [#{pool}] '#{vm}' moved to 'ready' queue") $logger.log('s', "[>] [#{pool}] '#{vm}' moved to 'ready' queue")
else else
if ((((Time.now - host.runtime.bootTime)/60).to_s[/^\d+\.\d{1}/].to_f) > timeout) if (
(host.runtime) and
(host.runtime.bootTime) and
((((Time.now - host.runtime.bootTime)/60).to_s[/^\d+\.\d{1}/].to_f) > timeout)
)
$redis.smove('vmware_host_pool__pending__'+pool, 'vmware_host_pool__completed__'+pool, vm) $redis.smove('vmware_host_pool__pending__'+pool, 'vmware_host_pool__completed__'+pool, vm)
$logger.log('d', "[!] [#{pool}] '#{vm}' marked as 'failed' after #{timeout} minutes") $logger.log('d', "[!] [#{pool}] '#{vm}' marked as 'failed' after #{timeout} minutes")
@ -68,18 +75,21 @@ def check_ready_vm vm, pool, ttl
Thread.new { Thread.new {
host = $vsphere_helper.find_vms(vm)[vm] host = $vsphere_helper.find_vms(vm)[vm]
if ( if (host)
(host.runtime) and if (
(host.runtime.powerState != 'poweredOn') (host.runtime) and
) (host.runtime.powerState) and
$redis.smove('vmware_host_pool__ready__'+pool, 'vmware_host_pool__completed__'+pool, vm) (host.runtime.powerState != 'poweredOn')
)
$logger.log('d', "[!] [#{pool}] '#{vm}' appears to be powered off or dead")
else
if ((((Time.now - host.runtime.bootTime)/60).to_s[/^\d+\.\d{1}/].to_f) > ttl)
$redis.smove('vmware_host_pool__ready__'+pool, 'vmware_host_pool__completed__'+pool, vm) $redis.smove('vmware_host_pool__ready__'+pool, 'vmware_host_pool__completed__'+pool, vm)
$logger.log('d', "[!] [#{pool}] '#{vm}' reached end of TTL after #{ttl} minutes") $logger.log('d', "[!] [#{pool}] '#{vm}' appears to be powered off or dead")
else
if ((((Time.now - host.runtime.bootTime)/60).to_s[/^\d+\.\d{1}/].to_f) > ttl)
$redis.smove('vmware_host_pool__ready__'+pool, 'vmware_host_pool__completed__'+pool, vm)
$logger.log('d', "[!] [#{pool}] '#{vm}' reached end of TTL after #{ttl} minutes")
end
end end
end end
} }
@ -89,18 +99,24 @@ def check_running_vm vm, pool, ttl
Thread.new { Thread.new {
host = $vsphere_helper.find_vms(vm)[vm] host = $vsphere_helper.find_vms(vm)[vm]
if ( if (host)
(host.runtime) and if (
(host.runtime.powerState != 'poweredOn') (host.runtime) and
) (host.runtime.powerState != 'poweredOn')
$redis.smove('vmware_host_pool__running__'+pool, 'vmware_host_pool__completed__'+pool, vm) )
$logger.log('d', "[!] [#{pool}] '#{vm}' appears to be powered off or dead")
else
if ((((Time.now - host.runtime.bootTime)/60).to_s[/^\d+\.\d{1}/].to_f) > ttl)
$redis.smove('vmware_host_pool__running__'+pool, 'vmware_host_pool__completed__'+pool, vm) $redis.smove('vmware_host_pool__running__'+pool, 'vmware_host_pool__completed__'+pool, vm)
$logger.log('d', "[!] [#{pool}] '#{vm}' reached end of TTL after #{ttl} minutes") $logger.log('d', "[!] [#{pool}] '#{vm}' appears to be powered off or dead")
else
if (
(host.runtime) and
(host.runtime.bootTime)
((((Time.now - host.runtime.bootTime)/60).to_s[/^\d+\.\d{1}/].to_f) > ttl)
)
$redis.smove('vmware_host_pool__running__'+pool, 'vmware_host_pool__completed__'+pool, vm)
$logger.log('d', "[!] [#{pool}] '#{vm}' reached end of TTL after #{ttl} minutes")
end
end end
end end
} }
@ -179,13 +195,14 @@ def destroy_vm vm, pool
host = $vsphere_helper.find_vms(vm)[vm] host = $vsphere_helper.find_vms(vm)[vm]
if ( if (host)
(host) and
(host.runtime)
)
start = Time.now start = Time.now
if host.runtime.powerState == 'poweredOn' if (
(host.runtime) and
(host.runtime.powerState) and
(host.runtime.powerState == 'poweredOn')
)
$logger.log('d', "[ ] [#{pool}] '#{vm}' is being shut down") $logger.log('d', "[ ] [#{pool}] '#{vm}' is being shut down")
host.PowerOffVM_Task.wait_for_completion host.PowerOffVM_Task.wait_for_completion
end end
@ -216,9 +233,12 @@ def check_pool pool
(! $redis.sismember('vmware_host_pool__running__'+pool['name'], vm['name'])) and (! $redis.sismember('vmware_host_pool__running__'+pool['name'], vm['name'])) and
(! $redis.sismember('vmware_host_pool__ready__'+pool['name'], vm['name'])) and (! $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__pending__'+pool['name'], vm['name'])) and
(! $redis.sismember('vmware_host_pool__completed__'+pool['name'], vm['name'])) (! $redis.sismember('vmware_host_pool__completed__'+pool['name'], vm['name'])) and
(! $redis.sismember('vmware_host_pool__discovered__'+pool['name'], vm['name']))
) )
$redis.sadd('vmware_host_pool__pending__'+pool['name'], vm['name']) $redis.sadd('vmware_host_pool__discovered__'+pool['name'], vm['name'])
$logger.log('s', "[?] [#{pool['name']}] '#{vm['name']}' added to 'discovered' queue")
end end
inventory[vm['name']] = 1 inventory[vm['name']] = 1