def vm_action(id, action, headers={})
headers.merge!(auth_header)
headers.merge!({:accept => 'application/xml'})
vm = vms(:id => id)
raise RHEVMBackendException::new("Requested VM not found in datacenter #{self.current_datacenter.id}") if vm.empty?
if action==:delete
RHEVM::client(@api_entrypoint)["/vms/%s" % id].delete(headers)
else
headers.merge!({ :content_type => 'application/xml' })
begin
client_response = RHEVM::client(@api_entrypoint)["/vms/%s/%s" % [id, action]].post('<action/>', headers)
rescue
if $!.is_a?(RestClient::BadRequest)
fault = (Nokogiri::XML($!.http_body)/'//fault/detail')
fault = fault.text.gsub(/\[|\]/, '') if fault
end
fault ||= $!.message
raise RHEVMBackendException::new(fault)
end
xml_response = Client::parse_response(client_response)
return false if (xml_response/'action/status').first.text.strip.upcase!="COMPLETE"
end
return true
end