mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
(#9241) Add destroy API request and model action
Without this patch we have no way to completely destroy a server instance. This patch adds a vm_destroy API request and implements the destroy method on the server model. The vSphere API requires the server to be in a poweredOff state. The model action and the request do not verify this is the case before issuing the command.
This commit is contained in:
parent
cb4e9701b5
commit
4264b1f99c
3 changed files with 34 additions and 0 deletions
|
@ -18,6 +18,7 @@ module Fog
|
||||||
request :vm_power_off
|
request :vm_power_off
|
||||||
request :vm_power_on
|
request :vm_power_on
|
||||||
request :vm_reboot
|
request :vm_reboot
|
||||||
|
request :vm_destroy
|
||||||
request :find_all_by_uuid
|
request :find_all_by_uuid
|
||||||
request :find_all_by_instance_uuid
|
request :find_all_by_instance_uuid
|
||||||
|
|
||||||
|
|
|
@ -70,6 +70,11 @@ module Fog
|
||||||
connection.vm_reboot(:instance_uuid => instance_uuid, :force => params[:force])
|
connection.vm_reboot(:instance_uuid => instance_uuid, :force => params[:force])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def destroy(params = {})
|
||||||
|
requires :instance_uuid
|
||||||
|
connection.vm_destroy(:instance_uuid => instance_uuid)
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
28
lib/fog/vsphere/requests/compute/vm_destroy.rb
Normal file
28
lib/fog/vsphere/requests/compute/vm_destroy.rb
Normal file
|
@ -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
|
Loading…
Reference in a new issue