Move vsphere provider to its own gem

This commit is contained in:
Gene Liverman 2021-11-29 16:09:15 -05:00
parent 48c5d6d445
commit d1c86eaf9b
No known key found for this signature in database
GPG key ID: 3AF83985B6C857C6
10 changed files with 21 additions and 5857 deletions

View file

@ -70,14 +70,13 @@ EOT
)
}
it do
files = ["#{project_root_dir}/lib/vmpooler/providers/vsphere.rb",
"#{project_root_dir}/lib/vmpooler/providers/dummy.rb"]
files = ["#{project_root_dir}/lib/vmpooler/providers/dummy.rb"]
expect(subject.load_used_providers).to eq(files)
end
end
it '#default_providers' do
expect(subject.default_providers).to eq(['vsphere', 'dummy'])
expect(subject.default_providers).to eq(['dummy'])
end
describe '#check_pending_vm' do
@ -2728,13 +2727,14 @@ EOT
:vsphere: {}
:pools:
- name: #{pool}
provider: 'vsphere'
- name: 'dummy'
provider: 'vsphere'
EOT
)}
it 'should call create_provider_object idempotently' do
# Even though there are two pools using the vsphere provider (the default), it should only
# Even though there are two pools using the vsphere provider, it should only
# create the provider object once.
expect(subject).to receive(:create_provider_object).with(Object, Object, Object, redis_connection_pool, 'vsphere', 'vsphere', Object).and_return(vsphere_provider)
@ -2756,50 +2756,6 @@ EOT
end
end
context 'creating multiple vsphere Providers' do
let(:vsphere_provider) { double('vsphere_provider') }
let(:vsphere_provider2) { double('vsphere_provider') }
let(:provider1) { Vmpooler::PoolManager::Provider::Base.new(config, logger, metrics, redis_connection_pool, 'vsphere', provider_options) }
let(:provider2) { Vmpooler::PoolManager::Provider::Base.new(config, logger, metrics, redis_connection_pool, 'secondvsphere', provider_options) }
let(:config) {
YAML.load(<<-EOT
---
:providers:
:vsphere:
server: 'blah1'
provider_class: 'vsphere'
:secondvsphere:
server: 'blah2'
provider_class: 'vsphere'
:pools:
- name: #{pool}
provider: 'vsphere'
- name: 'secondpool'
provider: 'secondvsphere'
EOT
)}
it 'should call create_provider_object twice' do
# The two pools use a different provider name, but each provider_class is vsphere
expect(subject).to receive(:create_provider_object).with(Object, Object, Object, redis_connection_pool, "vsphere", "vsphere", Object).and_return(vsphere_provider)
expect(subject).to receive(:create_provider_object).with(Object, Object, Object, redis_connection_pool, "vsphere", "secondvsphere", Object).and_return(vsphere_provider2)
subject.execute!(1,0)
end
it 'should have vsphere providers with different servers' do
allow(subject).to receive(:get_provider_for_pool).with(pool).and_return(provider1)
result = subject.get_provider_for_pool(pool)
allow(provider1).to receive(:provider_config).and_call_original
expect(result.provider_config['server']).to eq('blah1')
allow(subject).to receive(:get_provider_for_pool).with('secondpool').and_return(provider2)
result = subject.get_provider_for_pool('secondpool')
allow(provider1).to receive(:provider_config).and_call_original
expect(result.provider_config['server']).to eq('blah2')
subject.execute!(1,0)
end
end
context 'modify configuration on startup' do
context 'move vSphere configuration to providers location' do
let(:config) {
@ -2830,7 +2786,7 @@ EOT
end
context 'default to the vphere provider' do
context 'default to the dummy provider' do
let(:config) {
YAML.load(<<-EOT
---
@ -2841,18 +2797,18 @@ EOT
EOT
)}
it 'should set providers with no provider to vsphere' do
it 'should set providers with no provider to dummy' do
expect(subject.config[:pools][0]['provider']).to be_nil
expect(subject.config[:pools][1]['provider']).to eq('dummy')
subject.execute!(1,0)
expect(subject.config[:pools][0]['provider']).to eq('vsphere')
expect(subject.config[:pools][0]['provider']).to eq('dummy')
expect(subject.config[:pools][1]['provider']).to eq('dummy')
end
it 'should log a message' do
expect(logger).to receive(:log).with('d', "[!] Setting provider for pool '#{pool}' to 'vsphere' as default")
expect(logger).to receive(:log).with('d', "[!] Setting provider for pool '#{pool}' to 'dummy' as default")
subject.execute!(1,0)
end

File diff suppressed because it is too large Load diff

View file

@ -12,12 +12,8 @@ describe 'providers' do
end
it '#load_all_providers' do
p = [
File.join(project_root_dir, 'lib', 'vmpooler', 'providers', 'base.rb'),
File.join(project_root_dir, 'lib', 'vmpooler', 'providers', 'dummy.rb'),
File.join(project_root_dir, 'lib', 'vmpooler', 'providers', 'vsphere.rb')
]
expect(Vmpooler::Providers.load_all_providers).to match_array(p)
expect(Vmpooler::Providers.load_all_providers.join(', ')).to match(%r{#{project_root_dir}/lib/vmpooler/providers/base.rb})
expect(Vmpooler::Providers.load_all_providers.join(', ')).to match(%r{#{project_root_dir}/lib/vmpooler/providers/dummy.rb})
end
it '#installed_providers' do
@ -30,21 +26,18 @@ describe 'providers' do
end
it '#load_by_name' do
expect(Vmpooler::Providers.load_by_name('vsphere')).to eq([File.join(project_root_dir, 'lib', 'vmpooler', 'providers', 'vsphere.rb')])
expect(Vmpooler::Providers.load_by_name('dummy').join(', ')).to match(%r{#{project_root_dir}/lib/vmpooler/providers/dummy.rb})
expect(Vmpooler::Providers.load_by_name('dummy').join(', ')).to_not match(%r{,})
end
it '#load only vpshere' do
expect(providers.load_from_gems('vsphere')).to eq([File.join(project_root_dir, 'lib', 'vmpooler', 'providers', 'vsphere.rb')])
it '#load only dummy' do
expect(providers.load_from_gems('dummy').join(', ')).to match(%r{#{project_root_dir}/lib/vmpooler/providers/dummy.rb})
expect(providers.load_from_gems('dummy').join(', ')).to_not match(%r{,})
end
it '#load all providers from gems' do
p = [
File.join(project_root_dir, 'lib', 'vmpooler', 'providers', 'base.rb'),
File.join(project_root_dir, 'lib', 'vmpooler', 'providers', 'dummy.rb'),
File.join(project_root_dir, 'lib', 'vmpooler', 'providers', 'vsphere.rb')
]
expect(providers.load_from_gems).to match_array(p)
expect(providers.load_from_gems.join(', ')).to match(%r{#{project_root_dir}/lib/vmpooler/providers/base.rb})
expect(providers.load_from_gems.join(', ')).to match(%r{#{project_root_dir}/lib/vmpooler/providers/dummy.rb})
end