vm_shepherd 0.6.3 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 44b185c8635a7ee3bffac7c3a36faa3ab6e0fe50
|
4
|
+
data.tar.gz: 9164bb10195596eabd453c1d136f11a56450ee1c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 107bf1e783e05dc640d0fce0469bd7df0b26fc9f40cb828f944be46aafd4e5e7d67d86391d40980e28ebea1a8866e9ce9237bc651778ec30ba6005124d6bf671
|
7
|
+
data.tar.gz: d1bd3e71af415e4262c817687f929bda22f38696d637bea25d513452f119cdef660542fecc29f4a4a95894c2187aa5b09ebfd70263e46b1dca77bf58232856ac
|
data/lib/vm_shepherd/shepherd.rb
CHANGED
@@ -73,7 +73,7 @@ module VmShepherd
|
|
73
73
|
settings.vm_shepherd.vcenter_creds.username,
|
74
74
|
settings.vm_shepherd.vcenter_creds.password,
|
75
75
|
settings.vm_shepherd.vsphere.datacenter,
|
76
|
-
).destroy(settings.vm_shepherd.vm.ip)
|
76
|
+
).destroy(settings.vm_shepherd.vm.ip, settings.vm_shepherd.vsphere.resource_pool)
|
77
77
|
when VmShepherd::AWS_IAAS_TYPE then
|
78
78
|
ami_manager.destroy
|
79
79
|
when VmShepherd::OPENSTACK_IAAS_TYPE then
|
data/lib/vm_shepherd/version.rb
CHANGED
@@ -56,11 +56,13 @@ module VmShepherd
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
-
def destroy(ip_address)
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
59
|
+
def destroy(ip_address, resource_pool_name)
|
60
|
+
vms = connection.serviceContent.searchIndex.FindAllByIp(ip: ip_address, vmSearch: true).
|
61
|
+
select { |vm| vm.resourcePool.name == resource_pool_name }
|
62
|
+
vms.each do |vm|
|
63
|
+
power_off_vm(vm)
|
64
|
+
destroy_vm(vm)
|
65
|
+
end
|
64
66
|
end
|
65
67
|
|
66
68
|
def destroy_vm(vm)
|
@@ -194,7 +194,7 @@ module VmShepherd
|
|
194
194
|
settings.vm_shepherd.vcenter_creds.password,
|
195
195
|
settings.vm_shepherd.vsphere.datacenter,
|
196
196
|
).and_return(ova_manager)
|
197
|
-
expect(ova_manager).to receive(:destroy).with(settings.vm_shepherd.vm.ip)
|
197
|
+
expect(ova_manager).to receive(:destroy).with(settings.vm_shepherd.vm.ip, settings.vm_shepherd.vsphere.resource_pool)
|
198
198
|
|
199
199
|
manager.destroy
|
200
200
|
end
|
@@ -6,7 +6,10 @@ module VmShepherd
|
|
6
6
|
let(:username) { 'FAKE_USERNAME' }
|
7
7
|
let(:password) { 'FAKE_PASSWORD' }
|
8
8
|
let(:datacenter_name) { 'FAKE_DATACENTER_NAME' }
|
9
|
-
let(:
|
9
|
+
let(:vm1) { instance_double(RbVmomi::VIM::VirtualMachine, name: 'vm_name1', resourcePool: instance_double(RbVmomi::VIM::ResourcePool, name: 'first_resource_pool')) }
|
10
|
+
let(:vm2) { instance_double(RbVmomi::VIM::VirtualMachine, name: 'vm_name2', resourcePool: instance_double(RbVmomi::VIM::ResourcePool, name: 'second_resource_pool')) }
|
11
|
+
let(:vm3) { instance_double(RbVmomi::VIM::VirtualMachine, name: 'vm_name3', resourcePool: instance_double(RbVmomi::VIM::ResourcePool, name: 'second_resource_pool')) }
|
12
|
+
let(:vms) { [vm1, vm2, vm3] }
|
10
13
|
|
11
14
|
subject(:vsphere_manager) do
|
12
15
|
manager = VsphereManager.new(host, username, password, datacenter_name)
|
@@ -19,32 +22,43 @@ module VmShepherd
|
|
19
22
|
end
|
20
23
|
|
21
24
|
describe 'destroy' do
|
22
|
-
let(:
|
23
|
-
let(:
|
25
|
+
let(:search_index) { instance_double(RbVmomi::VIM::SearchIndex) }
|
26
|
+
let(:service_content) { instance_double(RbVmomi::VIM::ServiceContent, searchIndex: search_index)}
|
27
|
+
let(:connection) { instance_double(RbVmomi::VIM, serviceContent: service_content)}
|
24
28
|
let(:ip_address) { '127.0.0.1' }
|
25
29
|
|
26
30
|
before do
|
27
|
-
allow(vsphere_manager).to receive(:
|
28
|
-
allow(
|
31
|
+
allow(vsphere_manager).to receive(:connection).and_return(connection)
|
32
|
+
allow(search_index).to receive(:FindAllByIp).with(ip: ip_address, vmSearch: true).and_return(vms)
|
29
33
|
end
|
30
34
|
|
31
|
-
it 'destroys the VM that matches the given ip address' do
|
32
|
-
expect(vsphere_manager).to receive(:power_off_vm).with(
|
33
|
-
expect(vsphere_manager).to receive(:destroy_vm).with(
|
35
|
+
it 'destroys the VM that matches the given ip address and resource pool' do
|
36
|
+
expect(vsphere_manager).to receive(:power_off_vm).with(vm2)
|
37
|
+
expect(vsphere_manager).to receive(:destroy_vm).with(vm2)
|
34
38
|
|
35
|
-
vsphere_manager.
|
39
|
+
expect(vsphere_manager).to receive(:power_off_vm).with(vm3)
|
40
|
+
expect(vsphere_manager).to receive(:destroy_vm).with(vm3)
|
41
|
+
|
42
|
+
vsphere_manager.destroy(ip_address, 'second_resource_pool')
|
36
43
|
end
|
37
44
|
|
38
|
-
context 'when
|
39
|
-
|
40
|
-
|
45
|
+
context 'when there are no vms with that IP address' do
|
46
|
+
let(:vms) { [] }
|
47
|
+
|
48
|
+
it 'does not explode' do
|
49
|
+
expect(vsphere_manager).not_to receive(:power_off_vm)
|
50
|
+
expect(vsphere_manager).not_to receive(:destroy_vm)
|
51
|
+
|
52
|
+
vsphere_manager.destroy(ip_address, 'second_resource_pool')
|
41
53
|
end
|
54
|
+
end
|
42
55
|
|
56
|
+
context 'when there are no vms in that resource pool' do
|
43
57
|
it 'does not explode' do
|
44
58
|
expect(vsphere_manager).not_to receive(:power_off_vm)
|
45
59
|
expect(vsphere_manager).not_to receive(:destroy_vm)
|
46
60
|
|
47
|
-
vsphere_manager.destroy(ip_address)
|
61
|
+
vsphere_manager.destroy(ip_address, 'other_resource_pool')
|
48
62
|
end
|
49
63
|
end
|
50
64
|
end
|
@@ -53,13 +67,13 @@ module VmShepherd
|
|
53
67
|
let(:destroy_task) { instance_double(RbVmomi::VIM::Task) }
|
54
68
|
|
55
69
|
before do
|
56
|
-
allow(
|
70
|
+
allow(vm1).to receive(:Destroy_Task).and_return(destroy_task)
|
57
71
|
end
|
58
72
|
|
59
73
|
it 'runs the Destroy_Task and waits for completion' do
|
60
74
|
expect(destroy_task).to receive(:wait_for_completion)
|
61
75
|
|
62
|
-
vsphere_manager.destroy_vm(
|
76
|
+
vsphere_manager.destroy_vm(vm1)
|
63
77
|
end
|
64
78
|
end
|
65
79
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vm_shepherd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ops Manager Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-v1
|