> > ----- Original Message ----- > > From: "Cole Robinson" <crobinso@xxxxxxxxxx> > > To: "Xiaodai Wang" <xiaodwan@xxxxxxxxxx>, "Christophe Fergeau" > > <cfergeau@xxxxxxxxxx> > > Cc: virt-tools-list@xxxxxxxxxx > > Sent: Friday, April 14, 2017 2:23:55 AM > > Subject: Re: [virt-manager] Reset Guest.domain to None on > > domain creation error > > > > On 04/13/2017 07:04 AM, Xiaodai Wang wrote: > > > > > > > > > > > > > > > ----- Original Message ----- > > >> From: "Christophe Fergeau" <cfergeau@xxxxxxxxxx> > > >> To: virt-tools-list@xxxxxxxxxx > > >> Sent: Thursday, April 13, 2017 5:18:46 PM > > >> Subject: [virt-manager] Reset Guest.domain to None on > > >> domain creation error > > >> > > >> When an error occurs when the VM creation wizard tries to start the VM, > > >> it's then not possible to press again the "Finish" button to try again > > >> to start it, as this errors out with: > > >> > > >> Traceback (most recent call last): > > >> File "/home/teuf/redhat/virt/virt-manager/virtManager/asyncjob.py", > > >> line > > >> 88, in cb_wrapper > > >> callback(asyncjob, *args, **kwargs) > > >> File "/home/teuf/redhat/virt/virt-manager/virtManager/create.py", line > > >> 2341, in _do_async_install > > >> guest.start_install(meter=meter) > > >> File "/home/teuf/redhat/virt/virt-manager/virtinst/guest.py", line > > >> 457, > > >> in > > >> start_install > > >> raise RuntimeError(_("Domain has already been started!")) > > >> RuntimeError: Domain has already been started! > > >> > > >> This is caused by code introduced in commit fc6778 which does not reset > > >> self.domain to None when an exception is caught. > > >> > > >> Signed-off-by: Christophe Fergeau <cfergeau@xxxxxxxxxx> > > >> --- > > >> virtinst/guest.py | 1 + > > >> 1 file changed, 1 insertion(+) > > >> > > >> diff --git a/virtinst/guest.py b/virtinst/guest.py > > >> index c8c3d14..3997519 100644 > > >> --- a/virtinst/guest.py > > >> +++ b/virtinst/guest.py > > >> @@ -408,6 +408,7 @@ class Guest(XMLBuilder): > > >> exc_info = sys.exc_info() > > >> try: > > >> self.domain.undefine() > > >> + self.domain = None > > > > > > > > > This will still have other problems. Since the guest has already been > > > created, if you begin installation again, > > > some conflict like "The Mac address 'xxx' is in use by another virtual > > > machine" will occur. > > > > This isn't correct, the case Christophe is talking about leaves the guest > > 'undefined' afterwards, so there won't be any MAC collision > > In my testing (did as bz 1441902), undefine() always fail at here (don't know > why) and the guest will not be removed. > So the self.domain=None will not be ran and the problem is still there. undefine() fail because "libvirtError: Requested operation is not valid: cannot delete inactive domain with nvram". > when move self.domain = None before line "raise exc_info[0]". The problem > disappear but has new problem like Mac conflict > since the same guest has already existed. > > > > - Cole > > > > > > _______________________________________________ > virt-tools-list mailing list > virt-tools-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/virt-tools-list > _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list