diff --git a/lib/vmpooler/providers/vsphere.rb b/lib/vmpooler/providers/vsphere.rb index 99271bc..48eabd3 100644 --- a/lib/vmpooler/providers/vsphere.rb +++ b/lib/vmpooler/providers/vsphere.rb @@ -555,14 +555,15 @@ module Vmpooler true end - def vm_ready?(pool_name, vm_name) + def vm_ready?(pool_name, vm_name, redis) begin domain = domain(pool_name) open_socket(vm_name, domain) - rescue StandardError => _e + rescue StandardError => e + redis.hset("vmpooler__vm__#{vm_name}", 'open_socket_error', e.to_s) return false end - + redis.hdel("vmpooler__vm__#{vm_name}", 'open_socket_error') true end diff --git a/spec/unit/providers/vsphere_spec.rb b/spec/unit/providers/vsphere_spec.rb index 2dbc22e..0dc2092 100644 --- a/spec/unit/providers/vsphere_spec.rb +++ b/spec/unit/providers/vsphere_spec.rb @@ -1090,7 +1090,9 @@ EOT end it 'should return true' do - expect(subject.vm_ready?(poolname, vmname)).to be true + redis_connection_pool.with do |redis| + expect(subject.vm_ready?(poolname, vmname, redis)).to be true + end end end @@ -1103,7 +1105,9 @@ EOT it 'should return true' do allow(subject).to receive(:domain).and_return('vmpooler.example.com') - expect(subject.vm_ready?('missing_pool',vmname)).to be true + redis_connection_pool.with do |redis| + expect(subject.vm_ready?('missing_pool', vmname, redis)).to be true + end end end @@ -1115,7 +1119,9 @@ EOT end it 'should return false' do - expect(subject.vm_ready?(poolname,vmname)).to be false + redis_connection_pool.with do |redis| + expect(subject.vm_ready?(poolname, vmname, redis)).to be false + end end end end