[PATCH] Issue #289: catch the libvirtError when failed to start a vm

From: ShaoHe Feng <shaohef@linux.vnet.ibm.com> There are several reasons when failed to start domain. we should catch the libvirtError. issue: https://github.com/kimchi-project/kimchi/issues/289 Signed-off-by: ShaoHe Feng <shaohef@linux.vnet.ibm.com> --- src/kimchi/i18n.py | 1 + src/kimchi/model/vms.py | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/kimchi/i18n.py b/src/kimchi/i18n.py index dfc1b2b..fc4b1ff 100644 --- a/src/kimchi/i18n.py +++ b/src/kimchi/i18n.py @@ -76,6 +76,7 @@ messages = { "KCHVM0016E": _("Specify a template to create a virtual machine from"), "KCHVM0017E": _("Volume list (LUNs names) not given."), "KCHVM0018E": _("Virtual machine volumes must be a list of strings with distinct LUNs names."), + "KCHVM0019E": _("Unable to start virtual machine %(name)s. Details: %(err)s"), "KCHVMIF0001E": _("Interface %(iface)s does not exist in virtual machine %(name)s"), "KCHVMIF0002E": _("Network %(network)s specified for virtual machine %(name)s does not exist"), diff --git a/src/kimchi/model/vms.py b/src/kimchi/model/vms.py index 9da6688..b6a42e6 100644 --- a/src/kimchi/model/vms.py +++ b/src/kimchi/model/vms.py @@ -376,7 +376,11 @@ class VMModel(object): run_setfacl_set_attr(iso) dom = self.get_vm(name, self.conn) - dom.create() + try: + dom.create() + except libvirt.libvirtError as e: + raise OperationFailed("KCHVM0019E", + {'name': name, 'err': e.get_error_message()}) def stop(self, name): if self._vm_exists(name): -- 1.8.4.2

Reviewed-by: Aline Manera <alinefm@linux.vnet.ibm.com> On 02/24/2014 07:15 AM, shaohef@linux.vnet.ibm.com wrote:
From: ShaoHe Feng <shaohef@linux.vnet.ibm.com>
There are several reasons when failed to start domain. we should catch the libvirtError.
issue: https://github.com/kimchi-project/kimchi/issues/289
Signed-off-by: ShaoHe Feng <shaohef@linux.vnet.ibm.com> --- src/kimchi/i18n.py | 1 + src/kimchi/model/vms.py | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/kimchi/i18n.py b/src/kimchi/i18n.py index dfc1b2b..fc4b1ff 100644 --- a/src/kimchi/i18n.py +++ b/src/kimchi/i18n.py @@ -76,6 +76,7 @@ messages = { "KCHVM0016E": _("Specify a template to create a virtual machine from"), "KCHVM0017E": _("Volume list (LUNs names) not given."), "KCHVM0018E": _("Virtual machine volumes must be a list of strings with distinct LUNs names."), + "KCHVM0019E": _("Unable to start virtual machine %(name)s. Details: %(err)s"),
"KCHVMIF0001E": _("Interface %(iface)s does not exist in virtual machine %(name)s"), "KCHVMIF0002E": _("Network %(network)s specified for virtual machine %(name)s does not exist"), diff --git a/src/kimchi/model/vms.py b/src/kimchi/model/vms.py index 9da6688..b6a42e6 100644 --- a/src/kimchi/model/vms.py +++ b/src/kimchi/model/vms.py @@ -376,7 +376,11 @@ class VMModel(object): run_setfacl_set_attr(iso)
dom = self.get_vm(name, self.conn) - dom.create() + try: + dom.create() + except libvirt.libvirtError as e: + raise OperationFailed("KCHVM0019E", + {'name': name, 'err': e.get_error_message()})
def stop(self, name): if self._vm_exists(name):

Reviewed-by: Rodrigo Trujillo <rodrigo.trujillo@linux.vnet.ibm.com> On 02/24/2014 07:15 AM, shaohef@linux.vnet.ibm.com wrote:
From: ShaoHe Feng <shaohef@linux.vnet.ibm.com>
There are several reasons when failed to start domain. we should catch the libvirtError.
issue: https://github.com/kimchi-project/kimchi/issues/289
Signed-off-by: ShaoHe Feng <shaohef@linux.vnet.ibm.com> --- src/kimchi/i18n.py | 1 + src/kimchi/model/vms.py | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/kimchi/i18n.py b/src/kimchi/i18n.py index dfc1b2b..fc4b1ff 100644 --- a/src/kimchi/i18n.py +++ b/src/kimchi/i18n.py @@ -76,6 +76,7 @@ messages = { "KCHVM0016E": _("Specify a template to create a virtual machine from"), "KCHVM0017E": _("Volume list (LUNs names) not given."), "KCHVM0018E": _("Virtual machine volumes must be a list of strings with distinct LUNs names."), + "KCHVM0019E": _("Unable to start virtual machine %(name)s. Details: %(err)s"),
"KCHVMIF0001E": _("Interface %(iface)s does not exist in virtual machine %(name)s"), "KCHVMIF0002E": _("Network %(network)s specified for virtual machine %(name)s does not exist"), diff --git a/src/kimchi/model/vms.py b/src/kimchi/model/vms.py index 9da6688..b6a42e6 100644 --- a/src/kimchi/model/vms.py +++ b/src/kimchi/model/vms.py @@ -376,7 +376,11 @@ class VMModel(object): run_setfacl_set_attr(iso)
dom = self.get_vm(name, self.conn) - dom.create() + try: + dom.create() + except libvirt.libvirtError as e: + raise OperationFailed("KCHVM0019E", + {'name': name, 'err': e.get_error_message()})
def stop(self, name): if self._vm_exists(name):

I just noticed that the bug number is not #289 actually On 02/24/2014 02:52 PM, Rodrigo Trujillo wrote:
Reviewed-by: Rodrigo Trujillo <rodrigo.trujillo@linux.vnet.ibm.com>
On 02/24/2014 07:15 AM, shaohef@linux.vnet.ibm.com wrote:
From: ShaoHe Feng <shaohef@linux.vnet.ibm.com>
There are several reasons when failed to start domain. we should catch the libvirtError.
issue: https://github.com/kimchi-project/kimchi/issues/289
Signed-off-by: ShaoHe Feng <shaohef@linux.vnet.ibm.com> --- src/kimchi/i18n.py | 1 + src/kimchi/model/vms.py | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/kimchi/i18n.py b/src/kimchi/i18n.py index dfc1b2b..fc4b1ff 100644 --- a/src/kimchi/i18n.py +++ b/src/kimchi/i18n.py @@ -76,6 +76,7 @@ messages = { "KCHVM0016E": _("Specify a template to create a virtual machine from"), "KCHVM0017E": _("Volume list (LUNs names) not given."), "KCHVM0018E": _("Virtual machine volumes must be a list of strings with distinct LUNs names."), + "KCHVM0019E": _("Unable to start virtual machine %(name)s. Details: %(err)s"),
"KCHVMIF0001E": _("Interface %(iface)s does not exist in virtual machine %(name)s"), "KCHVMIF0002E": _("Network %(network)s specified for virtual machine %(name)s does not exist"), diff --git a/src/kimchi/model/vms.py b/src/kimchi/model/vms.py index 9da6688..b6a42e6 100644 --- a/src/kimchi/model/vms.py +++ b/src/kimchi/model/vms.py @@ -376,7 +376,11 @@ class VMModel(object): run_setfacl_set_attr(iso)
dom = self.get_vm(name, self.conn) - dom.create() + try: + dom.create() + except libvirt.libvirtError as e: + raise OperationFailed("KCHVM0019E", + {'name': name, 'err': e.get_error_message()})
def stop(self, name): if self._vm_exists(name):
_______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel
participants (3)
-
Aline Manera
-
Rodrigo Trujillo
-
shaohef@linux.vnet.ibm.com