diff --git a/vmware-host-pooler b/vmware-host-pooler index e4352dd..d8b6ea8 100755 --- a/vmware-host-pooler +++ b/vmware-host-pooler @@ -50,7 +50,8 @@ loop do (! $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'])) + (! $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 @@ -70,16 +71,24 @@ loop do (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 - next - end + if (vsphere_helper.find_vms(vm)[vm].summary.guest.hostName) + if (vsphere_helper.find_vms(vm)[vm].summary.guest.hostName == vm) + begin + Socket.getaddrinfo(vm, nil) + rescue + next + end - $redis.sadd('vmware_host_pool__ready__'+pool['name'], vm) - $redis.srem('vmware_host_pool__pending__'+pool['name'], vm) + $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") + logger.log('s', "[>] '#{vm}' moved to 'ready' queue") + else + $redis.srem('vmware_host_pool__pending__'+pool['name'], vm) + $redis.sadd('vmware_host_pool__failed__'+pool['name'], vm) + + logger.log('s', "[<] '#{vm}' moved to 'failed' queue") + end end end @@ -148,6 +157,7 @@ loop do 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 @@ -160,23 +170,23 @@ loop do $redis.srem('vmware_host_pool__failed__'+pool['name'], vm) logger.log('s', "[>] '#{vm}' moved to 'ready' queue") - end + else + if ( + (vsphere_helper.find_vms(vm)[vm]) and + (vsphere_helper.find_vms(vm)[vm].runtime) + ) + start = Time.now - if ( - (vsphere_helper.find_vms(vm)[vm]) and - (vsphere_helper.find_vms(vm)[vm].runtime) - ) - start = Time.now + if vsphere_helper.find_vms(vm)[vm].runtime.powerState == 'poweredOn' + logger.log('d', "[ ] '#{vm}' is being shut down") + vsphere_helper.find_vms(vm)[vm].PowerOffVM_Task.wait_for_completion + end - if host.runtime.powerState == 'poweredOn' - logger.log('d', "[ ] '#{vm}' is being shut down") - host.PowerOffVM_Task.wait_for_completion + vsphere_helper.find_vms(vm)[vm].Destroy_Task.wait_for_completion + finish = '%.2f' % (Time.now-start) + + logger.log('s', "[-] '#{vm}' destroyed in #{finish} seconds") end - - host.Destroy_Task.wait_for_completion - finish = '%.2f' % (Time.now-start) - - logger.log('s', "[-] '#{vm}' destroyed in #{finish} seconds") end end