def vm_action(id, action, headers={})
headers.merge!(auth_header)
headers.merge!({
:content_type => 'application/xml',
:accept => 'application/xml',
})
if action==:delete
RHEVM::client(@api_entrypoint)["/vms/%s" % id].delete(headers)
else
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