diff --git a/lib/vmpooler/pool_manager.rb b/lib/vmpooler/pool_manager.rb index fe9739b..ef6a5cd 100644 --- a/lib/vmpooler/pool_manager.rb +++ b/lib/vmpooler/pool_manager.rb @@ -628,10 +628,12 @@ module Vmpooler prepare_template(pool, provider) prepared_template = $redis.hget('vmpooler__template__prepared', pool['name']) end - elsif not prepared_template == pool['template'] - mutex.synchronize do - prepare_template(pool, provider) - prepared_template = $redis.hget('vmpooler__template__prepared', pool['name']) + elsif prepared_template != pool['template'] + if configured_template.nil? + mutex.synchronize do + prepare_template(pool, provider) + prepared_template = $redis.hget('vmpooler__template__prepared', pool['name']) + end end end return if configured_template.nil? diff --git a/spec/unit/pool_manager_spec.rb b/spec/unit/pool_manager_spec.rb index bf44a01..b6d082a 100644 --- a/spec/unit/pool_manager_spec.rb +++ b/spec/unit/pool_manager_spec.rb @@ -1849,14 +1849,23 @@ EOT context 'when the configured pool template does not match the prepared template' do before(:each) do config[:pools][0]['template'] = new_template + expect(redis).to receive(:hget).with('vmpooler__template__prepared', pool).and_return(current_template) end it 'should prepare the template' do - expect(redis).to receive(:hget).with('vmpooler__template__prepared', pool).and_return(current_template) expect(subject).to receive(:prepare_template).with(config[:pools][0], provider) subject.evaluate_template(config[:pools][0], provider) end + + context 'if configured_template is provided' do + it 'should not run prepare_template' do + expect(redis).to receive(:hget).with('vmpooler__config__template', pool).and_return(current_template) + expect(subject).to_not receive(:prepare_template) + + subject.evaluate_template(config[:pools][0], provider) + end + end end context 'when a new template is requested' do