mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-26 01:58:41 -05:00
Adds a new mechanism to load providers from any gem or file path. (#263)
* Adds ability to load only providers used in config file
This commit is contained in:
parent
0a769b8901
commit
2daa5244b8
13 changed files with 316 additions and 15 deletions
|
|
@ -46,6 +46,30 @@ EOT
|
|||
end
|
||||
end
|
||||
|
||||
describe '#load_used_providers' do
|
||||
let(:config) { YAML.load(<<-EOT
|
||||
---
|
||||
:config:
|
||||
:providers:
|
||||
:mock:
|
||||
:pools:
|
||||
- name: '#{pool}'
|
||||
size: 1
|
||||
provider: 'spoof'
|
||||
EOT
|
||||
)
|
||||
}
|
||||
it do
|
||||
files = ["#{project_root_dir}/lib/vmpooler/providers/vsphere.rb",
|
||||
"#{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'])
|
||||
end
|
||||
|
||||
describe '#check_pending_vm' do
|
||||
before do
|
||||
expect(subject).not_to be_nil
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
require 'spec_helper'
|
||||
require 'vmpooler/providers/base'
|
||||
|
||||
# This spec does not really exercise code paths but is merely used
|
||||
# to enforce that certain methods are defined in the base classes
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
require 'spec_helper'
|
||||
require 'vmpooler/providers/dummy'
|
||||
|
||||
describe 'Vmpooler::PoolManager::Provider::Dummy' do
|
||||
let(:logger) { MockLogger.new }
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
require 'spec_helper'
|
||||
require 'mock_redis'
|
||||
require 'vmpooler/providers/vsphere'
|
||||
|
||||
RSpec::Matchers.define :relocation_spec_with_host do |value|
|
||||
match { |actual| actual[:spec].host == value }
|
||||
|
|
|
|||
51
spec/unit/providers_spec.rb
Normal file
51
spec/unit/providers_spec.rb
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
require 'spec_helper'
|
||||
require 'vmpooler/providers'
|
||||
|
||||
describe 'providers' do
|
||||
|
||||
let(:providers) do
|
||||
Vmpooler::Providers.new
|
||||
end
|
||||
|
||||
it '#correct class' do
|
||||
expect(providers).to be_a Vmpooler::Providers
|
||||
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 eq(p)
|
||||
end
|
||||
|
||||
it '#installed_providers' do
|
||||
expect(Vmpooler::Providers.installed_providers).to eq(['vmpooler'])
|
||||
end
|
||||
|
||||
it '#vmpooler_provider_gem_list' do
|
||||
expect(providers.vmpooler_provider_gem_list).to be_a Array
|
||||
expect(providers.vmpooler_provider_gem_list.first).to be_a Gem::Specification
|
||||
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')])
|
||||
end
|
||||
|
||||
it '#load only vpshere' do
|
||||
expect(providers.load_from_gems('vsphere')).to eq([File.join(project_root_dir, 'lib', 'vmpooler', 'providers', 'vsphere.rb')])
|
||||
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 eq(p)
|
||||
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue