rbovirt times out when listing VMs in RHEV compute resource
Cloned from https://bugzilla.redhat.com/show_bug.cgi?id=1294676
Description of problem:
Timeout when trying to list the VMs in a RHEV compute resource.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. Add a RHEV compute resource with a large number of VMs
2. Try to view the list of VMs in the RHEV compute resource
- Web ui displays "There was an error listing VMs: Request Timeout".
- /var/log/foreman/production.log shows the request is timing out after 60 seconds:
2015-12-29 09:29:00 [D] RestClient.get "https://rhevm.example.com/api/datacenters/f4f8fd40-452c-4042-8152-4d5dc84a764c", "Accept"=>"application/xml", "Accept-Encoding"=>"gzip, deflate", "Authorization"=>"Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "Content-Type"=>"application/xml"
2015-12-29 09:29:00 [D] # => 200 OK | application/xml 379 bytes
2015-12-29 09:29:00 [D] RestClient.get "https://rhevm.example.com/api/vms?search=datacenter%3DRHEV-DC", "Accept"=>"application/xml; detail=disks; detail=nics; detail=hosts", "Accept-Encoding"=>"gzip, deflate", "Authorization"=>"Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "Content-Type"=>"application/xml"
2015-12-29 09:30:01 [W] Error has occurred while listing VMs on RHEV-DC (RHEV): Request Timeout
The VMs are listed.
rbovirt seems to be inheriting the default timeout from Net::HTTP .
In file /usr/share/ruby/net/http.rb:
630 # Creates a new Net::HTTP object for the specified server address,
631 # without opening the TCP connection or initializing the HTTP session.
633 def initialize(address, port = nil)
645 @read_timeout = 60
Fixes #13091 - Paginate VMs for supporting compute resources
Loading all VMs for the compute resource view can be a very heavy task,
which leads to timeouts when attempting to load all VMs for a compute
resource that has many hundreds or thousands of VMs. This patch allows
us to take advantage of datatable's ability to dynamically load data
from the server so we only load 10 VMs at a time. Currently this is only
supported for oVirt (dependant on https://github.com/abenari/rbovirt/pull/102
being merged into rbovirt) but can easily be extended for other
providers as well.
#1 Updated by Dominic Cleal over 6 years ago
- Subject changed from rbovirt: sat6 times out when listing VMs in RHEV compute resource to rbovirt times out when listing VMs in RHEV compute resource
- Category changed from Compute resources to Compute resources - oVirt
- Priority changed from High to Normal
#2 Updated by Ohad Levy about 6 years ago
rhev by default does not paginate, it is possible to force pagination by using the max attribute, see https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Virtualization/3.4/html/Technical_Guide/Maximum_Results_Parameter.html
however, in order to use it with datatables, we would need to support passing pagination information via the compute resource vms controller, and respond with json instead.