On Mon, May 03, 2010 at 02:20:28PM +0200, jdenemar(a)redhat.com wrote:
From: Jiri Denemark <jdenemar(a)redhat.com>
Report VIR_ERR_OPERATION_INVALID when operation which requires running
domain is called on inactive domain and vice versa.
---
src/lxc/lxc_driver.c | 18 ++++++++++++++++++
1 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
index 6884fea..fc0df37 100644
--- a/src/lxc/lxc_driver.c
+++ b/src/lxc/lxc_driver.c
@@ -1378,6 +1378,12 @@ static int lxcDomainStart(virDomainPtr dom)
goto cleanup;
}
+ if (virDomainObjIsActive(vm)) {
+ lxcError(VIR_ERR_OPERATION_INVALID,
+ "%s", _("Domain is already running"));
+ goto cleanup;
+ }
+
ret = lxcVmStart(dom->conn, driver, vm);
if (ret == 0)
@@ -1483,6 +1489,12 @@ static int lxcDomainShutdown(virDomainPtr dom)
goto cleanup;
}
+ if (!virDomainObjIsActive(vm)) {
+ lxcError(VIR_ERR_OPERATION_INVALID,
+ "%s", _("Domain is not running"));
+ goto cleanup;
+ }
+
ret = lxcVmTerminate(driver, vm, 0);
event = virDomainEventNewFromObj(vm,
VIR_DOMAIN_EVENT_STOPPED,
@@ -1662,6 +1674,12 @@ static int lxcDomainDestroy(virDomainPtr dom)
goto cleanup;
}
+ if (!virDomainObjIsActive(vm)) {
+ lxcError(VIR_ERR_OPERATION_INVALID,
+ "%s", _("Domain is not running"));
+ goto cleanup;
+ }
+
ret = lxcVmTerminate(driver, vm, SIGKILL);
event = virDomainEventNewFromObj(vm,
VIR_DOMAIN_EVENT_STOPPED,
Ah, sure :-)
ACK
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit
http://xmlsoft.org/
daniel(a)veillard.com | Rpmfind RPM search engine
http://rpmfind.net/
http://veillard.com/ | virtualization library
http://libvirt.org/