Re: [virt-manager] Reset Guest.domain to None on domain creation error

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 






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



[Index of Archives]     [Linux Virtualization]     [KVM Development]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux