[virt-tools-list] [RFC PATCH v3 0/7] Guest time sync on snapshot resume

Michael Weiser michael.weiser at gmx.de
Mon Dec 9 21:53:10 UTC 2019


Hello Cole,

this is the third iteration of implementing guest time sync as per
your suggestions. The only change compared to v2 is in the way the last
patch blocks the toggled signal.

These patches do:
* add method _set_time() calling the libvirt setTime API
* wire it up in resume from paused and saved state as well as revert to
  a snapshot containing a running domain state
* only run the API if the connection is of type qemu or test
* only run the API if a guest agent channel is defined for a qemu
  connection
* wait for the guest agent channel state to become connected, i.e. the
  guest agent coming online inside the guest
* add global and per-vm option to disable time sync
* try to fix up some peculiar behaviour of checkable vm window menu
  items

If you drop me some quick pointers how to go about dispatching the set
time operation to a separate or already existing background thread so it
doesn't block the UI, I'll be happy to give that a whirl as well. As it
stands now, the attempts at syncing time cause a five second delay if
the agent does not come online. It would be nice to avoid that.

I would actually like the time sync enable/disable setting to live in
the domain XML so it could travel with the VM instead of the user
potentially having to configure multiple instances of virt-manager
identically. The metadata element would be the way to go here AFAICT.

Changes to v2:
- use handler_block_by_func instead of disconnect/connect, significantly
  lowering patch size and impact

Changes to v1:
- fix quoting and other minor stylistic changes
- rename _get_agent() and _agent_ready() to reflect they're private
- add the dconf settings and UI items


Michael Weiser (7):
  virtManager: object: domain: Set time on resume
  virtManager: object: domain: Restrict time sync to qemu
  virtManager: object: domain: Check for guest agent
  virtManager: object: domain: Set time on unpause and revert
  virtManager: config: Make guest time sync configurable
  virtManager: config: Correctly reflect global defaults change
  virtManager: config: Prevent global default write-through

 .../org.virt-manager.virt-manager.gschema.xml |  12 ++
 ui/preferences.ui                             |  15 ++
 ui/vmwindow.ui                                |  16 +++
 virtManager/baseclass.py                      |  13 +-
 virtManager/config.py                         |   9 ++
 virtManager/details/console.py                |  30 ++--
 virtManager/object/domain.py                  | 129 ++++++++++++++++--
 virtManager/preferences.py                    |   8 ++
 virtManager/vmwindow.py                       |  22 +++
 9 files changed, 229 insertions(+), 25 deletions(-)

-- 
2.24.0





More information about the virt-tools-list mailing list