On 12/04/2014 11:00 AM, Aline Manera wrote:
On 12/02/2014 08:55 PM, Christy Perez wrote:
> If a pool happens to be busy at the time the pool.refresh() is
> called, then libvirt will throw an error: "internal error:
> pool 'default' has asynchronous jobs running." Currently, kimchi
> rasise an exception and no pools' storage volumes are listed.
> This patch returns a 0 for that particular pool, and allows
> the user to continue to request information for other pools.
>
> Without this patch, nothing is shown at all on the Storage tab
> if one pool is busy.
>
> In the future, we can check for VIR_ERR_RESOURCE_BUSY and
> come up with a plan that works with the UI to display "Busy"
> for a pool. But for now, this works around the issue.
>
> Signed-off-by: Christy Perez <christy(a)linux.vnet.ibm.com>
> ---
> src/kimchi/model/storagepools.py | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/src/kimchi/model/storagepools.py
> b/src/kimchi/model/storagepools.py
> index 20c9e5a..ba2cf3e 100644
> --- a/src/kimchi/model/storagepools.py
> +++ b/src/kimchi/model/storagepools.py
> @@ -202,6 +202,11 @@ def _get_storagepool_vols_num(self, pool):
> else:
> return 0
> except libvirt.libvirtError as e:
> + # If something (say a busy pool) prevents the refresh,
> + # throwing an Exception here would prevent all pools from
> + # displaying information -- so return None for busy
> + return 0
Please, log the error and exception so we can get a start point when
debugging problems related to it.
ACK. V2 sent. Thanks!
> + except Exception as e:
> raise OperationFailed("KCHPOOL0008E",
> {'name': pool.name(),
> 'err': e.get_error_message()})