test: Allow specifying object transient state in driver XML

Similar to the runstate commit, allow a boolean <test:transient/>
element for setting domain persistence at driver startup.
This commit is contained in:
Cole Robinson 2013-08-06 18:36:30 -04:00
parent a924d9d083
commit d82ea6ec4e

View File

@ -159,6 +159,7 @@ typedef struct _testDomainNamespaceDef testDomainNamespaceDef;
typedef testDomainNamespaceDef *testDomainNamespaceDefPtr;
struct _testDomainNamespaceDef {
int runstate;
bool transient;
};
static void
@ -189,6 +190,13 @@ testDomainDefNamespaceParse(xmlDocPtr xml ATTRIBUTE_UNUSED,
if (VIR_ALLOC(nsdata) < 0)
return -1;
tmp = virXPathBoolean("boolean(./test:transient)", ctxt);
if (tmp == -1) {
virReportError(VIR_ERR_XML_ERROR, "%s", _("invalid transient"));
goto error;
}
nsdata->transient = tmp;
tmp = virXPathUInt("string(./test:runstate)", ctxt, &tmpuint);
if (tmp == 0) {
if (tmpuint >= VIR_DOMAIN_LAST) {
@ -205,6 +213,12 @@ testDomainDefNamespaceParse(xmlDocPtr xml ATTRIBUTE_UNUSED,
goto error;
}
if (nsdata->transient && nsdata->runstate == VIR_DOMAIN_SHUTOFF) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("transient domain cannot have runstate 'shutoff'"));
goto error;
}
*data = nsdata;
return 0;
@ -922,7 +936,7 @@ testParseDomains(testConnPtr privconn,
}
nsdata = def->namespaceData;
obj->persistent = 1;
obj->persistent = !nsdata->transient;
if (nsdata->runstate != VIR_DOMAIN_SHUTOFF) {
if (testDomainStartState(privconn, obj,