vagrant-vsphere 0.6.0 → 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.
Files changed (41) hide show
  1. data/.gitignore +5 -5
  2. data/Gemfile +9 -9
  3. data/LICENSE.txt +23 -23
  4. data/README.md +175 -164
  5. data/Rakefile +16 -16
  6. data/example_box/metadata.json +2 -2
  7. data/lib/vSphere/action/clone.rb +127 -83
  8. data/lib/vSphere/action/close_vsphere.rb +23 -23
  9. data/lib/vSphere/action/connect_vsphere.rb +25 -25
  10. data/lib/vSphere/action/destroy.rb +37 -37
  11. data/lib/vSphere/action/get_ssh_info.rb +37 -37
  12. data/lib/vSphere/action/get_state.rb +45 -45
  13. data/lib/vSphere/action/is_created.rb +15 -15
  14. data/lib/vSphere/action/is_running.rb +20 -20
  15. data/lib/vSphere/action/message_already_created.rb +17 -17
  16. data/lib/vSphere/action/message_not_created.rb +17 -17
  17. data/lib/vSphere/action/message_not_running.rb +18 -18
  18. data/lib/vSphere/action/power_off.rb +27 -27
  19. data/lib/vSphere/action/power_on.rb +31 -31
  20. data/lib/vSphere/action/sync_folders.rb +97 -81
  21. data/lib/vSphere/action.rb +172 -172
  22. data/lib/vSphere/config.rb +37 -37
  23. data/lib/vSphere/errors.rb +10 -10
  24. data/lib/vSphere/plugin.rb +29 -29
  25. data/lib/vSphere/provider.rb +38 -38
  26. data/lib/vSphere/util/machine_helpers.rb +15 -15
  27. data/lib/vSphere/util/vim_helpers.rb +36 -36
  28. data/lib/vSphere/version.rb +4 -4
  29. data/lib/vagrant-vsphere.rb +17 -17
  30. data/locales/en.yml +65 -65
  31. data/spec/action_spec.rb +116 -116
  32. data/spec/clone_spec.rb +31 -31
  33. data/spec/connect_vsphere_spec.rb +23 -23
  34. data/spec/destroy_spec.rb +30 -30
  35. data/spec/get_ssh_info_spec.rb +30 -30
  36. data/spec/get_state_spec.rb +54 -54
  37. data/spec/is_created_spec.rb +28 -28
  38. data/spec/spec_helper.rb +98 -97
  39. data/vSphere.gemspec +27 -27
  40. metadata +21 -5
  41. checksums.yaml +0 -15
@@ -1,37 +1,37 @@
1
- require 'rbvmomi'
2
-
3
- module VagrantPlugins
4
- module VSphere
5
- module Util
6
- module VimHelpers
7
- def get_datacenter(connection, machine)
8
- connection.serviceInstance.find_datacenter(machine.provider_config.data_center_name) or fail Errors::VSphereError, :message => I18n.t('errors.missing_datacenter')
9
- end
10
-
11
- def get_vm_by_uuid(connection, machine)
12
- get_datacenter(connection, machine).vmFolder.findByUuid machine.id
13
- end
14
-
15
- def get_resource_pool(connection, machine)
16
- cr = get_datacenter(connection, machine).find_compute_resource(machine.provider_config.compute_resource_name) or fail Errors::VSphereError, :message => I18n.t('errors.missing_compute_resource')
17
- cr.resourcePool.find(machine.provider_config.resource_pool_name) or fail Errors::VSphereError, :message => I18n.t('errors.missing_resource_pool')
18
- end
19
-
20
- def get_customization_spec_info_by_name(connection, machine)
21
- name = machine.provider_config.customization_spec_name
22
- return if name.nil? || name.empty?
23
-
24
- manager = connection.serviceContent.customizationSpecManager or fail Errors::VSphereError, :message => I18n.t('errors.null_configuration_spec_manager') if manager.nil?
25
- spec = manager.GetCustomizationSpec(:name => name) or fail Errors::VSphereError, :message => I18n.t('errors.missing_configuration_spec') if spec.nil?
26
- end
27
-
28
- def get_datastore(connection, machine)
29
- name = machine.provider_config.data_store_name
30
- return if name.nil? || name.empty?
31
-
32
- get_datacenter(connection, machine).find_datastore name or fail Errors::VSphereError, :message => I18n.t('errors.missing_datastore')
33
- end
34
- end
35
- end
36
- end
1
+ require 'rbvmomi'
2
+
3
+ module VagrantPlugins
4
+ module VSphere
5
+ module Util
6
+ module VimHelpers
7
+ def get_datacenter(connection, machine)
8
+ connection.serviceInstance.find_datacenter(machine.provider_config.data_center_name) or fail Errors::VSphereError, :message => I18n.t('errors.missing_datacenter')
9
+ end
10
+
11
+ def get_vm_by_uuid(connection, machine)
12
+ get_datacenter(connection, machine).vmFolder.findByUuid machine.id
13
+ end
14
+
15
+ def get_resource_pool(connection, machine)
16
+ cr = get_datacenter(connection, machine).find_compute_resource(machine.provider_config.compute_resource_name) or fail Errors::VSphereError, :message => I18n.t('errors.missing_compute_resource')
17
+ cr.resourcePool.find(machine.provider_config.resource_pool_name) or fail Errors::VSphereError, :message => I18n.t('errors.missing_resource_pool')
18
+ end
19
+
20
+ def get_customization_spec_info_by_name(connection, machine)
21
+ name = machine.provider_config.customization_spec_name
22
+ return if name.nil? || name.empty?
23
+
24
+ manager = connection.serviceContent.customizationSpecManager or fail Errors::VSphereError, :message => I18n.t('errors.null_configuration_spec_manager') if manager.nil?
25
+ spec = manager.GetCustomizationSpec(:name => name) or fail Errors::VSphereError, :message => I18n.t('errors.missing_configuration_spec') if spec.nil?
26
+ end
27
+
28
+ def get_datastore(connection, machine)
29
+ name = machine.provider_config.data_store_name
30
+ return if name.nil? || name.empty?
31
+
32
+ get_datacenter(connection, machine).find_datastore name or fail Errors::VSphereError, :message => I18n.t('errors.missing_datastore')
33
+ end
34
+ end
35
+ end
36
+ end
37
37
  end
@@ -1,5 +1,5 @@
1
- module VagrantPlugins
2
- module VSphere
3
- VERSION = '0.6.0'
4
- end
1
+ module VagrantPlugins
2
+ module VSphere
3
+ VERSION = '0.7.0'
4
+ end
5
5
  end
@@ -1,18 +1,18 @@
1
- require 'pathname'
2
-
3
- require 'vSphere/plugin'
4
-
5
- module VagrantPlugins
6
- module VSphere
7
- lib_path = Pathname.new(File.expand_path('../vSphere', __FILE__))
8
- autoload :Action, lib_path.join('action')
9
- autoload :Errors, lib_path.join('errors')
10
-
11
- # This returns the path to the source of this plugin.
12
- #
13
- # @return [Pathname]
14
- def self.source_root
15
- @source_root ||= Pathname.new(File.expand_path('../../', __FILE__))
16
- end
17
- end
1
+ require 'pathname'
2
+
3
+ require 'vSphere/plugin'
4
+
5
+ module VagrantPlugins
6
+ module VSphere
7
+ lib_path = Pathname.new(File.expand_path('../vSphere', __FILE__))
8
+ autoload :Action, lib_path.join('action')
9
+ autoload :Errors, lib_path.join('errors')
10
+
11
+ # This returns the path to the source of this plugin.
12
+ #
13
+ # @return [Pathname]
14
+ def self.source_root
15
+ @source_root ||= Pathname.new(File.expand_path('../../', __FILE__))
16
+ end
17
+ end
18
18
  end
data/locales/en.yml CHANGED
@@ -1,65 +1,65 @@
1
- en:
2
- vsphere:
3
- creating_cloned_vm: |-
4
- Calling vSphere CloneVM with the following settings:
5
- vm_clone_success: |-
6
- New virtual machine successfully cloned and started
7
- destroy_vm: |-
8
- Calling vShpere Destroy
9
- power_off_vm: |-
10
- Calling vSphere PowerOff
11
- power_on_vm: |-
12
- Calling vSphere PowerOn
13
- vm_already_created: |-
14
- The VM is already created
15
- vm_not_created: |-
16
- The VM has not been created
17
- vm_not_running: |-
18
- The VM is not running
19
- waiting_for_ssh: |-
20
- Waiting for SSH to become available...
21
- rsync_folder: |-
22
- Rsyncing folder: %{hostpath} => %{guestpath}
23
- errors:
24
- missing_template: |-
25
- Configured template/source VM could not be found
26
- missing_datacenter: |-
27
- Configured data center not found
28
- missing_compute_resource: |-
29
- Configured compute resource not found
30
- missing_resource_pool: |-
31
- Configured resource pool not found
32
- null_configuration_spec_manager: |-
33
- Configuration spec manager not configured in the ServiceInstance
34
- missing_configuration_spec: |-
35
- Configured configuration spec not found
36
- missing_datastore: |-
37
- Configured data store not found
38
- rsync_error: |-
39
- There was an error when attemping to rsync a share folder.
40
- Please inspect the error message below for more info.
41
-
42
- Host path: %{hostpath}
43
- Guest path: %{guestpath}
44
- Error: %{stderr}
45
- too_many_private_networks: |-
46
- There a more private networks configured than can be assigned to the customization spec
47
- rsync_not_found: |-
48
- Warning! Folder sync disabled because the rsync binary is
49
- missing. Make sure rsync is installed and the binary can
50
- be found in PATH.
51
- config:
52
- host: |-
53
- Configuration must specify a vSphere host
54
- user: |-
55
- Configuration must specify a vSphere user
56
- password: |-
57
- Configuration must specify a vSphere password
58
- name: |-
59
- Configuration must specify a VM name
60
- template: |-
61
- Configuration must specify a template name
62
- compute_resource: |-
63
- Configuration must specify a compute resource name
64
- resource_pool: |-
65
- Configuration must specify a resource pool name
1
+ en:
2
+ vsphere:
3
+ creating_cloned_vm: |-
4
+ Calling vSphere CloneVM with the following settings:
5
+ vm_clone_success: |-
6
+ New virtual machine successfully cloned and started
7
+ destroy_vm: |-
8
+ Calling vShpere Destroy
9
+ power_off_vm: |-
10
+ Calling vSphere PowerOff
11
+ power_on_vm: |-
12
+ Calling vSphere PowerOn
13
+ vm_already_created: |-
14
+ The VM is already created
15
+ vm_not_created: |-
16
+ The VM has not been created
17
+ vm_not_running: |-
18
+ The VM is not running
19
+ waiting_for_ssh: |-
20
+ Waiting for SSH to become available...
21
+ rsync_folder: |-
22
+ Rsyncing folder: %{hostpath} => %{guestpath}
23
+ errors:
24
+ missing_template: |-
25
+ Configured template/source VM could not be found
26
+ missing_datacenter: |-
27
+ Configured data center not found
28
+ missing_compute_resource: |-
29
+ Configured compute resource not found
30
+ missing_resource_pool: |-
31
+ Configured resource pool not found
32
+ null_configuration_spec_manager: |-
33
+ Configuration spec manager not configured in the ServiceInstance
34
+ missing_configuration_spec: |-
35
+ Configured configuration spec not found
36
+ missing_datastore: |-
37
+ Configured data store not found
38
+ rsync_error: |-
39
+ There was an error when attemping to rsync a share folder.
40
+ Please inspect the error message below for more info.
41
+
42
+ Host path: %{hostpath}
43
+ Guest path: %{guestpath}
44
+ Error: %{stderr}
45
+ too_many_private_networks: |-
46
+ There a more private networks configured than can be assigned to the customization spec
47
+ rsync_not_found: |-
48
+ Warning! Folder sync disabled because the rsync binary is
49
+ missing. Make sure rsync is installed and the binary can
50
+ be found in PATH.
51
+ config:
52
+ host: |-
53
+ Configuration must specify a vSphere host
54
+ user: |-
55
+ Configuration must specify a vSphere user
56
+ password: |-
57
+ Configuration must specify a vSphere password
58
+ name: |-
59
+ Configuration must specify a VM name
60
+ template: |-
61
+ Configuration must specify a template name
62
+ compute_resource: |-
63
+ Configuration must specify a compute resource name
64
+ resource_pool: |-
65
+ Configuration must specify a resource pool name
data/spec/action_spec.rb CHANGED
@@ -1,116 +1,116 @@
1
- require 'spec_helper'
2
- require 'vagrant'
3
-
4
- describe VagrantPlugins::VSphere::Action do
5
- def run(action)
6
- Vagrant::Action::Runner.new.run described_class.send("action_#{action}"), @env
7
- end
8
-
9
- before :each do
10
- @machine.stub(:id).and_return(EXISTING_UUID)
11
- end
12
-
13
- describe 'up' do
14
- def run_up
15
- run :up
16
- end
17
-
18
- it 'should connect to vSphere' do
19
- VagrantPlugins::VSphere::Action::ConnectVSphere.any_instance.should_receive(:call)
20
-
21
- run_up
22
- end
23
-
24
- it 'should check if the VM exits' do
25
- VagrantPlugins::VSphere::Action::IsCreated.any_instance.should_receive(:call)
26
-
27
- run_up
28
- end
29
-
30
- it 'should create the VM when the VM does already not exist' do
31
- @machine.state.stub(:id).and_return(:not_created)
32
-
33
- VagrantPlugins::VSphere::Action::Clone.any_instance.should_receive(:call)
34
-
35
- run_up
36
- end
37
-
38
- it 'should not create the VM when the VM already exists' do
39
- @machine.state.stub(:id).and_return(:running)
40
-
41
- VagrantPlugins::VSphere::Action::Clone.any_instance.should_not_receive(:call)
42
-
43
- run_up
44
- end
45
- end
46
-
47
- describe 'destroy' do
48
- def run_destroy
49
- run :destroy
50
- end
51
-
52
- it 'should connect to vSphere' do
53
- VagrantPlugins::VSphere::Action::ConnectVSphere.any_instance.should_receive(:call)
54
-
55
- run_destroy
56
- end
57
-
58
- it 'should power off the VM' do
59
- VagrantPlugins::VSphere::Action::PowerOff.any_instance.should_receive(:call)
60
-
61
- run_destroy
62
- end
63
-
64
- it 'should destroy the VM' do
65
- VagrantPlugins::VSphere::Action::Destroy.any_instance.should_receive(:call)
66
-
67
- run_destroy
68
- end
69
- end
70
-
71
- describe 'halt' do
72
- it 'should power off the VM' do
73
- @machine.state.stub(:id).and_return(:running)
74
-
75
- VagrantPlugins::VSphere::Action::PowerOff.any_instance.should_receive(:call)
76
-
77
- run :halt
78
- end
79
- end
80
-
81
- describe 'get state' do
82
- def run_get_state
83
- run :get_state
84
- end
85
-
86
- it 'should connect to vSphere' do
87
- VagrantPlugins::VSphere::Action::ConnectVSphere.any_instance.should_receive(:call)
88
-
89
- run_get_state
90
- end
91
-
92
- it 'should get the power state' do
93
- VagrantPlugins::VSphere::Action::GetState.any_instance.should_receive(:call)
94
-
95
- run_get_state
96
- end
97
- end
98
-
99
- describe 'get ssh info' do
100
- def run_get_ssh_info
101
- run :get_ssh_info
102
- end
103
-
104
- it 'should connect to vSphere' do
105
- VagrantPlugins::VSphere::Action::ConnectVSphere.any_instance.should_receive(:call)
106
-
107
- run_get_ssh_info
108
- end
109
-
110
- it 'should get the power state' do
111
- VagrantPlugins::VSphere::Action::GetSshInfo.any_instance.should_receive(:call)
112
-
113
- run_get_ssh_info
114
- end
115
- end
116
- end
1
+ require 'spec_helper'
2
+ require 'vagrant'
3
+
4
+ describe VagrantPlugins::VSphere::Action do
5
+ def run(action)
6
+ Vagrant::Action::Runner.new.run described_class.send("action_#{action}"), @env
7
+ end
8
+
9
+ before :each do
10
+ @machine.stub(:id).and_return(EXISTING_UUID)
11
+ end
12
+
13
+ describe 'up' do
14
+ def run_up
15
+ run :up
16
+ end
17
+
18
+ it 'should connect to vSphere' do
19
+ VagrantPlugins::VSphere::Action::ConnectVSphere.any_instance.should_receive(:call)
20
+
21
+ run_up
22
+ end
23
+
24
+ it 'should check if the VM exits' do
25
+ VagrantPlugins::VSphere::Action::IsCreated.any_instance.should_receive(:call)
26
+
27
+ run_up
28
+ end
29
+
30
+ it 'should create the VM when the VM does already not exist' do
31
+ @machine.state.stub(:id).and_return(:not_created)
32
+
33
+ VagrantPlugins::VSphere::Action::Clone.any_instance.should_receive(:call)
34
+
35
+ run_up
36
+ end
37
+
38
+ it 'should not create the VM when the VM already exists' do
39
+ @machine.state.stub(:id).and_return(:running)
40
+
41
+ VagrantPlugins::VSphere::Action::Clone.any_instance.should_not_receive(:call)
42
+
43
+ run_up
44
+ end
45
+ end
46
+
47
+ describe 'destroy' do
48
+ def run_destroy
49
+ run :destroy
50
+ end
51
+
52
+ it 'should connect to vSphere' do
53
+ VagrantPlugins::VSphere::Action::ConnectVSphere.any_instance.should_receive(:call)
54
+
55
+ run_destroy
56
+ end
57
+
58
+ it 'should power off the VM' do
59
+ VagrantPlugins::VSphere::Action::PowerOff.any_instance.should_receive(:call)
60
+
61
+ run_destroy
62
+ end
63
+
64
+ it 'should destroy the VM' do
65
+ VagrantPlugins::VSphere::Action::Destroy.any_instance.should_receive(:call)
66
+
67
+ run_destroy
68
+ end
69
+ end
70
+
71
+ describe 'halt' do
72
+ it 'should power off the VM' do
73
+ @machine.state.stub(:id).and_return(:running)
74
+
75
+ VagrantPlugins::VSphere::Action::PowerOff.any_instance.should_receive(:call)
76
+
77
+ run :halt
78
+ end
79
+ end
80
+
81
+ describe 'get state' do
82
+ def run_get_state
83
+ run :get_state
84
+ end
85
+
86
+ it 'should connect to vSphere' do
87
+ VagrantPlugins::VSphere::Action::ConnectVSphere.any_instance.should_receive(:call)
88
+
89
+ run_get_state
90
+ end
91
+
92
+ it 'should get the power state' do
93
+ VagrantPlugins::VSphere::Action::GetState.any_instance.should_receive(:call)
94
+
95
+ run_get_state
96
+ end
97
+ end
98
+
99
+ describe 'get ssh info' do
100
+ def run_get_ssh_info
101
+ run :get_ssh_info
102
+ end
103
+
104
+ it 'should connect to vSphere' do
105
+ VagrantPlugins::VSphere::Action::ConnectVSphere.any_instance.should_receive(:call)
106
+
107
+ run_get_ssh_info
108
+ end
109
+
110
+ it 'should get the power state' do
111
+ VagrantPlugins::VSphere::Action::GetSshInfo.any_instance.should_receive(:call)
112
+
113
+ run_get_ssh_info
114
+ end
115
+ end
116
+ end
data/spec/clone_spec.rb CHANGED
@@ -1,32 +1,32 @@
1
- require 'spec_helper'
2
-
3
- describe VagrantPlugins::VSphere::Action::Clone do
4
- before :each do
5
- @env[:vSphere_connection] = @vim
6
- end
7
-
8
- it 'should create a CloneVM task' do
9
- call
10
- @template.should have_received(:CloneVM_Task).with({
11
- :folder => @data_center,
12
- :name => NAME,
13
- :spec => {}
14
- })
15
- end
16
-
17
- it 'should set the machine id to be the new UUID' do
18
- call
19
- @machine.should have_received(:id=).with(NEW_UUID)
20
- end
21
-
22
- it 'should call the next item in the middleware stack' do
23
- call
24
- @app.should have_received :call
25
- end
26
-
27
- it 'should set static IP when given config spec' do
28
- @machine.provider_config.stub(:customization_spec_name).and_return('spec')
29
- call
30
- @ip.should have_received(:ipAddress=).with('0.0.0.0')
31
- end
1
+ require 'spec_helper'
2
+
3
+ describe VagrantPlugins::VSphere::Action::Clone do
4
+ before :each do
5
+ @env[:vSphere_connection] = @vim
6
+ end
7
+
8
+ it 'should create a CloneVM task' do
9
+ call
10
+ @template.should have_received(:CloneVM_Task).with({
11
+ :folder => @data_center,
12
+ :name => NAME,
13
+ :spec => {}
14
+ })
15
+ end
16
+
17
+ it 'should set the machine id to be the new UUID' do
18
+ call
19
+ @machine.should have_received(:id=).with(NEW_UUID)
20
+ end
21
+
22
+ it 'should call the next item in the middleware stack' do
23
+ call
24
+ @app.should have_received :call
25
+ end
26
+
27
+ it 'should set static IP when given config spec' do
28
+ @machine.provider_config.stub(:customization_spec_name).and_return('spec')
29
+ call
30
+ @ip.should have_received(:ipAddress=).with('0.0.0.0')
31
+ end
32
32
  end
@@ -1,24 +1,24 @@
1
- require 'spec_helper'
2
-
3
- describe VagrantPlugins::VSphere::Action::ConnectVSphere do
4
- before :each do
5
- described_class.new(@app, @env).call(@env)
6
- end
7
-
8
- it 'should connect to vSphere' do
9
- VIM.should have_received(:connect).with({
10
- :host => @env[:machine].provider_config.host,
11
- :user => @env[:machine].provider_config.user,
12
- :password => @env[:machine].provider_config.password,
13
- :insecure => @env[:machine].provider_config.insecure,
14
- })
15
- end
16
-
17
- it 'should add the vSphere connection to the environment' do
18
- @env[:vSphere_connection].should be @vim
19
- end
20
-
21
- it 'should call the next item in the middleware stack' do
22
- @app.should have_received :call
23
- end
1
+ require 'spec_helper'
2
+
3
+ describe VagrantPlugins::VSphere::Action::ConnectVSphere do
4
+ before :each do
5
+ described_class.new(@app, @env).call(@env)
6
+ end
7
+
8
+ it 'should connect to vSphere' do
9
+ VIM.should have_received(:connect).with({
10
+ :host => @env[:machine].provider_config.host,
11
+ :user => @env[:machine].provider_config.user,
12
+ :password => @env[:machine].provider_config.password,
13
+ :insecure => @env[:machine].provider_config.insecure,
14
+ })
15
+ end
16
+
17
+ it 'should add the vSphere connection to the environment' do
18
+ @env[:vSphere_connection].should be @vim
19
+ end
20
+
21
+ it 'should call the next item in the middleware stack' do
22
+ @app.should have_received :call
23
+ end
24
24
  end
data/spec/destroy_spec.rb CHANGED
@@ -1,31 +1,31 @@
1
- require 'spec_helper'
2
-
3
- describe VagrantPlugins::VSphere::Action::Destroy do
4
- before :each do
5
- @env[:vSphere_connection] = @vim
6
- end
7
-
8
- it 'should set the machine id to nil' do
9
- @env[:machine].stub(:id).and_return(MISSING_UUID)
10
-
11
- call
12
-
13
- @env[:machine].should have_received(:id=).with(nil)
14
- end
15
-
16
- it 'should not create a Destroy task if VM is not found' do
17
- @env[:machine].stub(:id).and_return(MISSING_UUID)
18
-
19
- call
20
-
21
- @vm.should_not have_received :Destroy_Task
22
- end
23
-
24
- it 'should create a VM Destroy task if the VM exists' do
25
- @env[:machine].stub(:id).and_return(EXISTING_UUID)
26
-
27
- call
28
-
29
- @vm.should have_received :Destroy_Task
30
- end
1
+ require 'spec_helper'
2
+
3
+ describe VagrantPlugins::VSphere::Action::Destroy do
4
+ before :each do
5
+ @env[:vSphere_connection] = @vim
6
+ end
7
+
8
+ it 'should set the machine id to nil' do
9
+ @env[:machine].stub(:id).and_return(MISSING_UUID)
10
+
11
+ call
12
+
13
+ @env[:machine].should have_received(:id=).with(nil)
14
+ end
15
+
16
+ it 'should not create a Destroy task if VM is not found' do
17
+ @env[:machine].stub(:id).and_return(MISSING_UUID)
18
+
19
+ call
20
+
21
+ @vm.should_not have_received :Destroy_Task
22
+ end
23
+
24
+ it 'should create a VM Destroy task if the VM exists' do
25
+ @env[:machine].stub(:id).and_return(EXISTING_UUID)
26
+
27
+ call
28
+
29
+ @vm.should have_received :Destroy_Task
30
+ end
31
31
  end