From b0105a15098e4544241e1128957702b3e6a50279 Mon Sep 17 00:00:00 2001 From: Scott Schneider Date: Mon, 3 Feb 2014 10:26:21 -0800 Subject: [PATCH] Catch clonevm_task exceptions --- vmware-host-pooler | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/vmware-host-pooler b/vmware-host-pooler index 111de7b..62076c7 100755 --- a/vmware-host-pooler +++ b/vmware-host-pooler @@ -180,15 +180,20 @@ def clone_vm template, pool, folder, datastore # Clone the VM $logger.log('d', "[ ] [#{vm['template']}] '#{vm['hostname']}' is being cloned from '#{vm['template']}'") - start = Time.now - vm[vm['template']].CloneVM_Task( - :folder => $vsphere[vm['template']].find_folder(folder), - :name => vm['hostname'], - :spec => spec - ).wait_for_completion - finish = '%.2f' % (Time.now-start) + begin + start = Time.now + vm[vm['template']].CloneVM_Task( + :folder => $vsphere[vm['template']].find_folder(folder), + :name => vm['hostname'], + :spec => spec + ).wait_for_completion + finish = '%.2f' % (Time.now-start) - $logger.log('s', "[+] [#{vm['template']}] '#{vm['hostname']}' cloned from '#{vm['template']}' in #{finish} seconds") + $logger.log('s', "[+] [#{vm['template']}] '#{vm['hostname']}' cloned from '#{vm['template']}' in #{finish} seconds") + rescue + $logger.log('s', "[!] [#{vm['template']}] '#{vm['hostname']}' clone appears to have failed") + $redis.srem('vmware_host_pool__pending__'+vm['template'], vm['hostname']) + end $redis.decr('vmware_host_pool__tasks__clone') @@ -366,6 +371,9 @@ end $logger.log('d', "starting vmware-host-pooler") +# Clear out the tasks manager, as we don't know about any tasks at this point +$redis.set('vmware_host_pool__tasks__clone', 0) + loop do pools.each do |pool| if (! $threads[pool['name']])