Since libvirt 1.2.19 there's a virDomainRename API, we should look into using this instead of our hacked up undefine/redefine method which loses some state like managedsave, etc. Though as of this writing it doesn't look like the API handles moving snapshots, so it's still not a 100% solution. API docs: https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainRename
*** Bug 1496394 has been marked as a duplicate of this bug. ***
If someone shows up on list with a patch for this I will consider it. But IMO the api doesn't add much over our current implementation, and having to support it will actually complicate code and testing since we will want to maintain the old code for non-qemu drivers. So I don't think this is worth explicitly tracking