----- 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. 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