[virt-tools-list] [virt-manager PATCH] host: catch KeyError in interface_selected

Cole Robinson crobinso at redhat.com
Tue Mar 11 12:26:06 UTC 2014


On 03/11/2014 03:12 AM, Chen Hanxiao wrote:
> We should catch KeyError in interface_selected,
> for that error could happen when
> singal on_interface_list_changed comes.
> 
> How to reproduce:
> 1. create 3 bridge by Edit->Connection Details->Network Interface
> 2. delete them
> 3. We would get a KeyError
> 
> Signed-off-by: Chen Hanxiao <chenhanxiao at cn.fujitsu.com>
> ---
>  virtManager/host.py | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/virtManager/host.py b/virtManager/host.py
> index c8d7ee0..97a4f74 100644
> --- a/virtManager/host.py
> +++ b/virtManager/host.py
> @@ -1098,6 +1098,15 @@ class vmmHost(vmmGObjectUI):
>          name = model[treeiter][0]
>  
>          try:
> +            self.conn.get_interface(name)
> +        except KeyError:
> +            self.widget("interface-apply").set_sensitive(False)
> +            return
> +        except Exception, e:
> +            logging.exception(e)
> +            self.set_interface_error_page(_("Error selecting interface: %s") %
> +                    e)
> +        try:
>              self.populate_interface_state(name)
>          except Exception, e:
>              logging.exception(e)
> 

If an interface is removed, vmmConnection should emit interface-removed, which
calls host.py:repopulate_interfaces and should remove the missing interface
from the list before the user has a chance to select anything. If that's not
working we should figure out why that is.

- Cole




More information about the virt-tools-list mailing list