Bug 558160
Summary: | RFE: guest rename: Support renaming of guests | ||
---|---|---|---|
Product: | [Community] Virtualization Tools | Reporter: | Jens Petersen <petersen> |
Component: | libvirt | Assignee: | Peter Krempa <pkrempa> |
Status: | CLOSED NEXTRELEASE | QA Contact: | |
Severity: | medium | Docs Contact: | |
Priority: | low | ||
Version: | unspecified | CC: | berrange, clalance, crobinso, eblake, itamar, jeharris, jforbes, thozza, veillard, virt-maint, xen-maint |
Target Milestone: | --- | Keywords: | FutureFeature |
Target Release: | --- | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Enhancement | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2015-08-14 11:04:12 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: | |||
Bug Depends On: | |||
Bug Blocks: | 636033 |
Description
Jens Petersen
2010-01-24 01:39:32 UTC
*** Bug 827346 has been marked as a duplicate of this bug. *** *** Bug 827346 has been marked as a duplicate of this bug. *** *** Bug 827346 has been marked as a duplicate of this bug. *** Copied from bug 827346: I am trying to use libvirt API implement. The same like virsh tools. virsh dumpxml myvm > foo.xml I used virDomainGetXMLDesc API to get xml description of domain, then convert to virDomainDef, and I changed def->name, the last I convert def back to xml. virsh undefine myvm I used virDomainUndefine. virsh define foo.xml I used virDomainDefineXML. These APIs all called successed. the domain name show on virt-manager was not changed yet,but the name show on open window was changed and details changed too. the vir-manager must reconnect, then the name is correct. use virsh tools is ok. Did I forget something? (In reply to comment #4) > Copied from bug 827346: > > I am trying to use libvirt API implement. The same like virsh tools. > > virsh dumpxml myvm > foo.xml > > I used virDomainGetXMLDesc API to get xml description of domain, then > convert to virDomainDef, and I changed def->name, the last I convert def > back to xml. > > virsh undefine myvm > > I used virDomainUndefine. > > virsh define foo.xml > > I used virDomainDefineXML. > > These APIs all called successed. the domain name show on virt-manager was > not changed yet,but the name show on open window was changed and details > changed too. the vir-manager must reconnect, then the name is correct. > > use virsh tools is ok. > > Did I forget something? Yes, you discovered a poor-man's workaround. However, note that you missed a few things: if your domain had a managedsave image, you will lose that state in the process of your manual rename. If your domain has any snapshots, you will have to manually save and delete the snapshots from the old name, then redefine them with the new domain name after creating the new name. If you want your logs to be continuous across the rename, you will have to track down and rename log files. That argues that libvirt really should provide an API that adjusts ALL of these aspects, automatically, as part of a single API call, rather than making you piece the steps together and possibly missing something. I have a new idea, I add a alias name for domain, just show on virt-manager. The all operations are based on the real name of domain. so all questions are solved. Sounds like a good idea to me. *** Bug 1044564 has been marked as a duplicate of this bug. *** If we ever add a rename API, we need to make sure it handles snapshot and managedsave data migration as well. *** Bug 1070746 has been marked as a duplicate of this bug. *** From my point of view this is a BUG not a Feature request as renaming of VM works for VMs without snapshots in virt-manager. With snapshots it does not work. The behaviour should be consistent... Upstream added the feature recently: commit b5d63e997bb4cbaa3c9d5e35e38998b0c1e78fd1 Author: Tomas Meszaros <exo> Date: Mon Aug 10 21:59:18 2015 +0200 qemu: Implement virDomainRename Currently supports only renaming inactive domains without snapshots. Signed-off-by: Tomas Meszaros <exo> Signed-off-by: Michal Privoznik <mprivozn> commit 9877d8406cd32864278dfa7bb040c542782d4cfb Author: Tomas Meszaros <exo> Date: Mon Aug 10 21:59:17 2015 +0200 Introduce new VIR_DOMAIN_EVENT_DEFINED_RENAMED event This should be emitted whenever a domain is renamed. Signed-off-by: Tomas Meszaros <exo> commit 28257dc2bee84f386c51f647a1824789e3b11862 Author: Tomas Meszaros <exo> Date: Mon Aug 10 21:59:16 2015 +0200 domain_conf: Introducde virDomainObjListRenameAddNew() & virDomainObjListRenameRemove() We just need to update the entry in the second hash table. Since commit 8728a56 we have two hash tables for the domain list so that we can do O(1) lookup regardless of looking up by UUID or name. Since with renaming a domain UUID does not change, we only need to update the second hash table, where domains are referenced by their name. We will call both functions from the qemuDomainRename(). Signed-off-by: Tomas Meszaros <exo> commit ff486e0d29a7c08e7131447ca3c878ed791def4e Author: Tomas Meszaros <exo> Date: Mon Aug 10 21:59:15 2015 +0200 virsh: Implement "domrename" command This patch implements new virsh command, domrename. Using domrename, it will be possible to rename domain from the virsh shell by calling virRenameDomain API. It takes two arguments, current domain name and new domain name. Example: virsh # list --all Id Name State ---------------------------------------------------- - bar shut off virsh # domrename bar foo Domain successfully renamed virsh # list --all Id Name State ---------------------------------------------------- - foo shut off virsh # Signed-off-by: Tomas Meszaros <exo> commit 9f7a559a6d1ab4103de238d59910baefa7b425ff Author: Tomas Meszaros <exo> Date: Mon Aug 10 21:59:14 2015 +0200 Introduce virDomainRename API Also, among with this new API new ACL that restricts rename capability is invented too. Signed-off-by: Tomas Meszaros <exo> Signed-off-by: Michal Privoznik <mprivozn> |