mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-26 01:58:41 -05:00
(POOLER-70) Add initial VSphere VM Provider
This commit adds a skeleton VM Provider for VSphere based VM operations.
This commit is contained in:
parent
ac8a34de86
commit
c724d90d90
2 changed files with 106 additions and 0 deletions
17
lib/vmpooler/providers/vsphere.rb
Normal file
17
lib/vmpooler/providers/vsphere.rb
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
module Vmpooler
|
||||
class PoolManager
|
||||
class Provider
|
||||
class VSphere < Vmpooler::PoolManager::Provider::Base
|
||||
|
||||
def initialize(options)
|
||||
super(options)
|
||||
end
|
||||
|
||||
def name
|
||||
'vsphere'
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
89
spec/unit/providers/vsphere_spec.rb
Normal file
89
spec/unit/providers/vsphere_spec.rb
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe 'Vmpooler::PoolManager::Provider::VSphere' do
|
||||
let(:config) { {} }
|
||||
let(:fake_vm) {
|
||||
fake_vm = {}
|
||||
fake_vm['name'] = 'vm1'
|
||||
fake_vm['hostname'] = 'vm1'
|
||||
fake_vm['template'] = 'pool1'
|
||||
fake_vm['boottime'] = Time.now
|
||||
fake_vm['powerstate'] = 'PoweredOn'
|
||||
|
||||
fake_vm
|
||||
}
|
||||
|
||||
subject { Vmpooler::PoolManager::Provider::VSphere.new(config) }
|
||||
|
||||
describe '#name' do
|
||||
it 'should be vsphere' do
|
||||
expect(subject.name).to eq('vsphere')
|
||||
end
|
||||
end
|
||||
|
||||
describe '#vms_in_pool' do
|
||||
it 'should raise error' do
|
||||
expect{subject.vms_in_pool('pool')}.to raise_error(/does not implement vms_in_pool/)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#get_vm_host' do
|
||||
it 'should raise error' do
|
||||
expect{subject.get_vm_host('vm')}.to raise_error(/does not implement get_vm_host/)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#find_least_used_compatible_host' do
|
||||
it 'should raise error' do
|
||||
expect{subject.find_least_used_compatible_host('vm')}.to raise_error(/does not implement find_least_used_compatible_host/)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#migrate_vm_to_host' do
|
||||
it 'should raise error' do
|
||||
expect{subject.migrate_vm_to_host('vm','host')}.to raise_error(/does not implement migrate_vm_to_host/)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#get_vm' do
|
||||
it 'should raise error' do
|
||||
expect{subject.get_vm('vm')}.to raise_error(/does not implement get_vm/)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#create_vm' do
|
||||
it 'should raise error' do
|
||||
expect{subject.create_vm('pool','newname')}.to raise_error(/does not implement create_vm/)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#destroy_vm' do
|
||||
it 'should raise error' do
|
||||
expect{subject.destroy_vm('vm','pool')}.to raise_error(/does not implement destroy_vm/)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#is_vm_ready?' do
|
||||
it 'should raise error' do
|
||||
expect{subject.is_vm_ready?('vm','pool','timeout')}.to raise_error(/does not implement is_vm_ready?/)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#vm_exists?' do
|
||||
it 'should raise error' do
|
||||
expect{subject.vm_exists?('vm')}.to raise_error(/does not implement/)
|
||||
end
|
||||
|
||||
it 'should return true when get_vm returns an object' do
|
||||
allow(subject).to receive(:get_vm).with('vm').and_return(fake_vm)
|
||||
|
||||
expect(subject.vm_exists?('vm')).to eq(true)
|
||||
end
|
||||
|
||||
it 'should return false when get_vm returns nil' do
|
||||
allow(subject).to receive(:get_vm).with('vm').and_return(nil)
|
||||
|
||||
expect(subject.vm_exists?('vm')).to eq(false)
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue