diff --git a/lib/vmpooler/pool_manager.rb b/lib/vmpooler/pool_manager.rb index e2da636..98a5f60 100644 --- a/lib/vmpooler/pool_manager.rb +++ b/lib/vmpooler/pool_manager.rb @@ -210,20 +210,18 @@ module Vmpooler end # Clone a VM - def clone_vm(pool, provider) + def clone_vm(pool_name, provider) Thread.new do begin - _clone_vm(pool, provider) + _clone_vm(pool_name, provider) rescue => err - $logger.log('s', "[!] [#{pool['name']}] failed while cloning VM with an error: #{err}") + $logger.log('s', "[!] [#{pool_name}] failed while cloning VM with an error: #{err}") raise end end end - def _clone_vm(pool, provider) - pool_name = pool['name'] - + def _clone_vm(pool_name, provider) # Generate a randomized hostname o = [('a'..'z'), ('0'..'9')].map(&:to_a).flatten new_vmname = $config[:config]['prefix'] + o[rand(25)] + (0...14).map { o[rand(o.length)] }.join @@ -842,7 +840,7 @@ module Vmpooler begin $redis.incr('vmpooler__tasks__clone') pool_check_response[:cloned_vms] += 1 - clone_vm(pool, provider) + clone_vm(pool_name, provider) rescue => err $logger.log('s', "[!] [#{pool_name}] clone failed during check_pool with an error: #{err}") $redis.decr('vmpooler__tasks__clone') diff --git a/spec/unit/pool_manager_spec.rb b/spec/unit/pool_manager_spec.rb index b1d8dcd..a52e74d 100644 --- a/spec/unit/pool_manager_spec.rb +++ b/spec/unit/pool_manager_spec.rb @@ -3090,9 +3090,6 @@ EOT --- :config: task_limit: 10 -:pools: - - name: #{pool} - size: #{pool_size} EOT ) } @@ -3113,28 +3110,28 @@ EOT create_ready_vm(pool,vm,token) expect(subject).to receive(:clone_vm).exactly(0).times - subject._check_pool(pool_object,provider) + subject.repopulate_pool_vms(pool, provider, pool_check_response, pool_size) end ['ready','pending'].each do |queue_name| - it "should use VMs in #{queue_name} queue to caculate pool size" do + it "should use VMs in #{queue_name} queue to calculate pool size" do expect(subject).to receive(:clone_vm).exactly(0).times # Modify the pool size to 1 and add a VM in the queue redis.sadd("vmpooler__#{queue_name}__#{pool}",vm) - config[:pools][0]['size'] = 1 + pool_size = 1 - subject._check_pool(pool_object,provider) + subject.repopulate_pool_vms(pool, provider, pool_check_response, pool_size) end end ['running','completed','discovered','migrating'].each do |queue_name| - it "should not use VMs in #{queue_name} queue to caculate pool size" do + it "should not use VMs in #{queue_name} queue to calculate pool size" do expect(subject).to receive(:clone_vm) # Modify the pool size to 1 and add a VM in the queue redis.sadd("vmpooler__#{queue_name}__#{pool}",vm) - config[:pools][0]['size'] = 1 + pool_size = 1 - subject._check_pool(pool_object,provider) + subject.repopulate_pool_vms(pool, provider, pool_check_response, pool_size) end end