{"push_id":2151801319,"size":1,"distinct_size":1,"ref":"refs/heads/master","head":"2421d75988a372997f04dbe0078d8d94d3cda390","before":"25b5a52ffa6d6e4ecb3a3ae2dc830be8c15f1bb6","commits":[{"sha":"2421d75988a372997f04dbe0078d8d94d3cda390","author":{"name":"Tomáš Golembiovský","email":"02979ebe0324249d0046e357963d3e46a604e693@redhat.com"},"message":"qga: add QEMU-GA polling facility\n\nWe want to replace our oVirt Guest Agent (OGA) with QEMU Guest Agent\n(QGA). OGA was pro-active and sent periodicaly information to VDSM. QGA\ndoes not do that and we have to poll for the information repeatedly on\nregular basis.\n\nPool of worker threads is created and each VM is served by a task. The\nconcept is much like in the periodic.py, in fact the core objects in\nexecutor.py and periodic.py are reused. Special executor managing the\npool of workers is created. Intentionaly it is not the same as for other\nperiodic operations because there are several reasons (unresponsive\nguest agents, OS under load, ...) for workers to block. This would put\nother periodic tasks at risk due to lack of available executor threads.\n\nThere are several notable risks and issues connected with using QEMU\nGuest Agent:\n\n- We (vdsm) have no easy way of knowing whether agent is installed,\n  running and responsive. Libvirt has pretty good idea whether agent is\n  running or not because it watches QEMU events related to the socket.\n  But we have no way of finding that out.\n\n- We can make a call to check the responsiveness of the agent and it\n  would quickly return if the agent is not running. However, if the\n  agent is running but is not responding then the call will block. This\n  is problematic because we cannot pro-actively \"ping\" the agent.\n  Why? Because of the following...\n\n- When we send call to the agent libvirt will lock the domain for the\n  time of the operations. This means that lots of other calls to libvirt\n  on that domain will block or become unavailable. Notably this affects\n  most (if not all) of the operations in periodic.py. All the\n  operations handled by VmDispatcher will become unavailable\n  (Vm.isDomainReadyForCommands() returns False). Bulk stats will\n  probably be delayed.\n\nWhen gather information we want (at least for now) to prefer information\nfrom OGA over the information from QGA if OGA is available.\n\nChange-Id: I83ea6874f2804631b8be48e166025bc937add2ad\nSigned-off-by: Tomáš Golembiovský <tgolembi@redhat.com>","distinct":true,"url":"https://api.github.com/repos/oVirt/vdsm/commits/2421d75988a372997f04dbe0078d8d94d3cda390"}]}
{"actor":{"display_login":"gerrit-ovirt-org"}}