From b8b4fd4c7dae8a52c3d9bf48b7f86fd61fc0966c Mon Sep 17 00:00:00 2001 From: John Levon Date: Thu, 5 Feb 2009 17:24:51 +0000 Subject: [PATCH] report error for some xend operations on shutdown domain --- ChangeLog | 5 +++++ src/xend_internal.c | 55 ++++++++++++++++++++++++++++++++++++++------- 2 files changed, 52 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9d26ca7c57..7c22b5ccbd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu Feb 5 17:19:24 GMT 2009 John Levon + + * src/xend_internal.c: report error for some xend operations on + shutdown domain + Thu Feb 5 16:53:37 GMT 2009 John Levon * src/xend_internal.c: robustify sexpr parser for NICs diff --git a/src/xend_internal.c b/src/xend_internal.c index 3229674f06..3ae97e312e 100644 --- a/src/xend_internal.c +++ b/src/xend_internal.c @@ -2828,8 +2828,13 @@ xenDaemonDomainSuspend(virDomainPtr domain) __FUNCTION__); return(-1); } - if (domain->id < 0) + + if (domain->id < 0) { + virXendError(domain->conn, VIR_ERR_INVALID_ARG, + _("Domain %s isn't running."), domain->name); return(-1); + } + return xend_op(domain->conn, domain->name, "op", "pause", NULL); } @@ -2850,8 +2855,13 @@ xenDaemonDomainResume(virDomainPtr domain) __FUNCTION__); return(-1); } - if (domain->id < 0) + + if (domain->id < 0) { + virXendError(domain->conn, VIR_ERR_INVALID_ARG, + _("Domain %s isn't running."), domain->name); return(-1); + } + return xend_op(domain->conn, domain->name, "op", "unpause", NULL); } @@ -2873,8 +2883,13 @@ xenDaemonDomainShutdown(virDomainPtr domain) __FUNCTION__); return(-1); } - if (domain->id < 0) + + if (domain->id < 0) { + virXendError(domain->conn, VIR_ERR_INVALID_ARG, + _("Domain %s isn't running."), domain->name); return(-1); + } + return xend_op(domain->conn, domain->name, "op", "shutdown", "reason", "poweroff", NULL); } @@ -2897,8 +2912,13 @@ xenDaemonDomainReboot(virDomainPtr domain, unsigned int flags ATTRIBUTE_UNUSED) __FUNCTION__); return(-1); } - if (domain->id < 0) + + if (domain->id < 0) { + virXendError(domain->conn, VIR_ERR_INVALID_ARG, + _("Domain %s isn't running."), domain->name); return(-1); + } + return xend_op(domain->conn, domain->name, "op", "shutdown", "reason", "reboot", NULL); } @@ -2923,8 +2943,13 @@ xenDaemonDomainDestroy(virDomainPtr domain) __FUNCTION__); return(-1); } - if (domain->id < 0) + + if (domain->id < 0) { + virXendError(domain->conn, VIR_ERR_INVALID_ARG, + _("Domain %s isn't running."), domain->name); return(-1); + } + return xend_op(domain->conn, domain->name, "op", "destroy", NULL); } @@ -2988,12 +3013,17 @@ int xenDaemonDomainSave(virDomainPtr domain, const char *filename) { if ((domain == NULL) || (domain->conn == NULL) || (domain->name == NULL) || - (filename == NULL) || (domain->id < 0)) { + (filename == NULL)) { virXendError((domain ? domain->conn : NULL), VIR_ERR_INVALID_ARG, __FUNCTION__); return(-1); } + if (domain->id < 0) { + virXendError(domain->conn, VIR_ERR_INVALID_ARG, + _("Domain %s isn't running."), domain->name); + return(-1); + } /* We can't save the state of Domain-0, that would mean stopping it too */ if (domain->id == 0) { @@ -3025,8 +3055,13 @@ xenDaemonDomainCoreDump(virDomainPtr domain, const char *filename, __FUNCTION__); return(-1); } - if (domain->id < 0) + + if (domain->id < 0) { + virXendError(domain->conn, VIR_ERR_INVALID_ARG, + _("Domain %s isn't running."), domain->name); return(-1); + } + return xend_op(domain->conn, domain->name, "op", "dump", "file", filename, "live", "0", "crash", "0", NULL); } @@ -3594,8 +3629,12 @@ xenDaemonDomainPinVcpu(virDomainPtr domain, unsigned int vcpu, __FUNCTION__); return (-1); } - if (domain->id < 0) + + if (domain->id < 0) { + virXendError(domain->conn, VIR_ERR_INVALID_ARG, + _("Domain %s isn't running."), domain->name); return(-1); + } /* from bit map, build character string of mapped CPU numbers */ for (i = 0; i < maplen; i++) for (j = 0; j < 8; j++)