diff --git a/lib/fog/vsphere/compute.rb b/lib/fog/vsphere/compute.rb index 91a942d49..5aa38835f 100644 --- a/lib/fog/vsphere/compute.rb +++ b/lib/fog/vsphere/compute.rb @@ -18,6 +18,7 @@ module Fog request :vm_power_off request :vm_power_on request :vm_reboot + request :vm_destroy request :find_all_by_uuid request :find_all_by_instance_uuid diff --git a/lib/fog/vsphere/models/compute/server.rb b/lib/fog/vsphere/models/compute/server.rb index 34c663b19..4f42d4ded 100644 --- a/lib/fog/vsphere/models/compute/server.rb +++ b/lib/fog/vsphere/models/compute/server.rb @@ -70,6 +70,11 @@ module Fog connection.vm_reboot(:instance_uuid => instance_uuid, :force => params[:force]) end + def destroy(params = {}) + requires :instance_uuid + connection.vm_destroy(:instance_uuid => instance_uuid) + end + end end diff --git a/lib/fog/vsphere/requests/compute/vm_destroy.rb b/lib/fog/vsphere/requests/compute/vm_destroy.rb new file mode 100644 index 000000000..7be46081b --- /dev/null +++ b/lib/fog/vsphere/requests/compute/vm_destroy.rb @@ -0,0 +1,28 @@ +module Fog + module Compute + class Vsphere + class Real + + def vm_destroy(params = {}) + raise ArgumentError ":instance_uuid is a required parameter" unless params.has_key? :instance_uuid + vm = find_all_by_instance_uuid(params[:instance_uuid]).first + unless vm.kind_of? RbVmomi::VIM::VirtualMachine + raise Fog::Vsphere::Errors::NotFound, "Could not find VirtualMachine with instance uuid #{params[:instance_uuid]}" + end + task = vm.Destroy_Task + task.wait_for_completion + task.info.state + end + + end + + class Mock + + def vm_destroy(params = {}) + "success" + end + + end + end + end +end