vm_shepherd 0.0.1 → 0.1.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 +4 -4
- data/Gemfile +0 -2
- data/LICENSE.txt +22 -0
- data/README.md +15 -2
- data/ci/run_specs.sh +6 -1
- data/lib/vm_shepherd.rb +12 -0
- data/lib/vm_shepherd/{ami_manager.rb → aws_manager.rb} +1 -3
- data/lib/vm_shepherd/openstack_manager.rb +102 -0
- data/lib/vm_shepherd/shepherd.rb +74 -81
- data/lib/vm_shepherd/vcloud_manager.rb +170 -0
- data/lib/vm_shepherd/version.rb +1 -1
- data/lib/vm_shepherd/vsphere_manager.rb +293 -0
- data/spec/fixtures/shepherd/openstack.yml +19 -0
- data/spec/support/patched_fog.rb +20 -0
- data/spec/vm_shepherd/{ami_manager_spec.rb → aws_manager_spec.rb} +9 -10
- data/spec/vm_shepherd/openstack_manager_spec.rb +237 -0
- data/spec/vm_shepherd/shepherd_spec.rb +115 -50
- data/spec/vm_shepherd/vcloud_manager_spec.rb +364 -0
- data/spec/vm_shepherd/vsphere_manager_spec.rb +16 -0
- data/vm_shepherd.gemspec +1 -1
- metadata +31 -32
- data/lib/vm_shepherd/ova_manager/base.rb +0 -31
- data/lib/vm_shepherd/ova_manager/deployer.rb +0 -202
- data/lib/vm_shepherd/ova_manager/destroyer.rb +0 -29
- data/lib/vm_shepherd/ova_manager/open_monkey_patch.rb +0 -14
- data/lib/vm_shepherd/vapp_manager/deployer.rb +0 -151
- data/lib/vm_shepherd/vapp_manager/destroyer.rb +0 -46
- data/spec/vm_shepherd/ova_manager/base_spec.rb +0 -56
- data/spec/vm_shepherd/ova_manager/deployer_spec.rb +0 -134
- data/spec/vm_shepherd/ova_manager/destroyer_spec.rb +0 -42
- data/spec/vm_shepherd/vapp_manager/deployer_spec.rb +0 -287
- data/spec/vm_shepherd/vapp_manager/destroyer_spec.rb +0 -104
@@ -1,104 +0,0 @@
|
|
1
|
-
require 'vm_shepherd/vapp_manager/destroyer'
|
2
|
-
|
3
|
-
module VmShepherd
|
4
|
-
module VappManager
|
5
|
-
RSpec.describe Destroyer do
|
6
|
-
let(:login_info) do
|
7
|
-
{
|
8
|
-
url: 'FAKE_URL',
|
9
|
-
organization: 'FAKE_ORGANIZATION',
|
10
|
-
user: 'FAKE_USER',
|
11
|
-
password: 'FAKE_PASSWORD',
|
12
|
-
}
|
13
|
-
end
|
14
|
-
let(:location) do
|
15
|
-
{
|
16
|
-
catalog: 'FAKE_CATALOG',
|
17
|
-
vdc: 'FAKE_VDC',
|
18
|
-
}
|
19
|
-
end
|
20
|
-
let(:logger) { instance_double(Logger).as_null_object }
|
21
|
-
|
22
|
-
let(:destroyer) { Destroyer.new(login_info, location, logger) }
|
23
|
-
|
24
|
-
describe '#destroy' do
|
25
|
-
let(:client) { instance_double(VCloudSdk::Client) }
|
26
|
-
let(:vdc) { instance_double(VCloudSdk::VDC) }
|
27
|
-
let(:vapp) { instance_double(VCloudSdk::VApp) }
|
28
|
-
let(:vapp_name) { 'FAKE_VAPP_NAME' }
|
29
|
-
|
30
|
-
context 'when the catalog exists' do
|
31
|
-
before do
|
32
|
-
allow(client).to receive(:catalog_exists?).with(location.fetch(:catalog)).and_return(true)
|
33
|
-
end
|
34
|
-
|
35
|
-
it 'uses VCloudSdk::Client to delete the vApp' do
|
36
|
-
expect(client).to receive(:find_vdc_by_name).with(location.fetch(:vdc)).and_return(vdc)
|
37
|
-
expect(vdc).to receive(:find_vapp_by_name).with(vapp_name).and_return(vapp)
|
38
|
-
expect(vapp).to receive(:power_off)
|
39
|
-
expect(vapp).to receive(:delete)
|
40
|
-
expect(client).to receive(:delete_catalog_by_name).with(location.fetch(:catalog))
|
41
|
-
|
42
|
-
expect(VCloudSdk::Client).to receive(:new).with(
|
43
|
-
login_info.fetch(:url),
|
44
|
-
[login_info.fetch(:user), login_info.fetch(:organization)].join('@'),
|
45
|
-
login_info.fetch(:password),
|
46
|
-
{},
|
47
|
-
logger,
|
48
|
-
).and_return(client)
|
49
|
-
|
50
|
-
destroyer.destroy(vapp_name)
|
51
|
-
end
|
52
|
-
|
53
|
-
context 'when an VCloudSdk::ObjectNotFoundError is thrown' do
|
54
|
-
before do
|
55
|
-
allow(VCloudSdk::Client).to receive(:new).and_return(client)
|
56
|
-
allow(client).to receive(:find_vdc_by_name).and_return(vdc)
|
57
|
-
allow(vdc).to receive(:find_vapp_by_name).and_return(vapp)
|
58
|
-
allow(vapp).to receive(:power_off)
|
59
|
-
allow(vapp).to receive(:delete)
|
60
|
-
|
61
|
-
allow(client).to receive(:delete_catalog_by_name)
|
62
|
-
end
|
63
|
-
|
64
|
-
it 'catches the error' do
|
65
|
-
allow(client).to receive(:find_vdc_by_name).and_raise(VCloudSdk::ObjectNotFoundError)
|
66
|
-
|
67
|
-
expect { destroyer.destroy(vapp_name) }.not_to raise_error
|
68
|
-
end
|
69
|
-
|
70
|
-
it 'deletes to catalog' do
|
71
|
-
expect(client).to receive(:delete_catalog_by_name).with(location.fetch(:catalog))
|
72
|
-
|
73
|
-
destroyer.destroy(vapp_name)
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
context 'when the catalog does not exist' do
|
79
|
-
before do
|
80
|
-
allow(client).to receive(:catalog_exists?).with(location.fetch(:catalog)).and_return(false)
|
81
|
-
end
|
82
|
-
|
83
|
-
it 'uses VCloudSdk::Client to delete the vApp' do
|
84
|
-
expect(client).to receive(:find_vdc_by_name).with(location.fetch(:vdc)).and_return(vdc)
|
85
|
-
expect(vdc).to receive(:find_vapp_by_name).with(vapp_name).and_return(vapp)
|
86
|
-
expect(vapp).to receive(:power_off)
|
87
|
-
expect(vapp).to receive(:delete)
|
88
|
-
expect(client).not_to receive(:delete_catalog_by_name).with(location.fetch(:catalog))
|
89
|
-
|
90
|
-
expect(VCloudSdk::Client).to receive(:new).with(
|
91
|
-
login_info.fetch(:url),
|
92
|
-
[login_info.fetch(:user), login_info.fetch(:organization)].join('@'),
|
93
|
-
login_info.fetch(:password),
|
94
|
-
{},
|
95
|
-
logger,
|
96
|
-
).and_return(client)
|
97
|
-
|
98
|
-
destroyer.destroy(vapp_name)
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|