From: Jiri Denemark Date: Mon, 3 May 2010 12:04:44 +0000 (+0200) Subject: lxc: Check domain is active/inactive as required by operation X-Git-Tag: v0.8.2~335 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eca81e08be2ca7fa322b91983e4aa65664341c47;p=thirdparty%2Flibvirt.git lxc: Check domain is active/inactive as required by operation Report VIR_ERR_OPERATION_INVALID when operation which requires running domain is called on inactive domain and vice versa. --- diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 6884fea8cc..fc0df37e79 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,