test: Add testDomainShutdownState helper
Performs changes needed when stopping a VM (which are currently duplicated in several places, and forgotten in others).
This commit is contained in:
parent
7d10811312
commit
b712bfb46c
@ -469,6 +469,15 @@ cleanup:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
testDomainShutdownState(virDomainPtr domain,
|
||||||
|
virDomainObjPtr privdom)
|
||||||
|
{
|
||||||
|
privdom->state = VIR_DOMAIN_SHUTOFF;
|
||||||
|
privdom->def->id = -1;
|
||||||
|
domain->id = -1;
|
||||||
|
}
|
||||||
|
|
||||||
static int testOpenDefault(virConnectPtr conn) {
|
static int testOpenDefault(virConnectPtr conn) {
|
||||||
int u;
|
int u;
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
@ -1365,19 +1374,17 @@ static int testDestroyDomain (virDomainPtr domain)
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
privdom->state = VIR_DOMAIN_SHUTOFF;
|
testDomainShutdownState(domain, privdom);
|
||||||
privdom->def->id = -1;
|
|
||||||
domain->id = -1;
|
|
||||||
event = virDomainEventNewFromObj(privdom,
|
event = virDomainEventNewFromObj(privdom,
|
||||||
VIR_DOMAIN_EVENT_STOPPED,
|
VIR_DOMAIN_EVENT_STOPPED,
|
||||||
VIR_DOMAIN_EVENT_STOPPED_DESTROYED);
|
VIR_DOMAIN_EVENT_STOPPED_DESTROYED);
|
||||||
|
|
||||||
if (!privdom->persistent) {
|
if (!privdom->persistent) {
|
||||||
virDomainRemoveInactive(&privconn->domains,
|
virDomainRemoveInactive(&privconn->domains,
|
||||||
privdom);
|
privdom);
|
||||||
privdom = NULL;
|
privdom = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
cleanup:
|
cleanup:
|
||||||
if (privdom)
|
if (privdom)
|
||||||
@ -1494,19 +1501,18 @@ static int testShutdownDomain (virDomainPtr domain)
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
privdom->state = VIR_DOMAIN_SHUTOFF;
|
testDomainShutdownState(domain, privdom);
|
||||||
domain->id = -1;
|
|
||||||
privdom->def->id = -1;
|
|
||||||
event = virDomainEventNewFromObj(privdom,
|
event = virDomainEventNewFromObj(privdom,
|
||||||
VIR_DOMAIN_EVENT_STOPPED,
|
VIR_DOMAIN_EVENT_STOPPED,
|
||||||
VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN);
|
VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN);
|
||||||
|
|
||||||
if (!privdom->persistent) {
|
if (!privdom->persistent) {
|
||||||
virDomainRemoveInactive(&privconn->domains,
|
virDomainRemoveInactive(&privconn->domains,
|
||||||
privdom);
|
privdom);
|
||||||
privdom = NULL;
|
privdom = NULL;
|
||||||
}
|
}
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
|
ret = 0;
|
||||||
cleanup:
|
cleanup:
|
||||||
if (privdom)
|
if (privdom)
|
||||||
virDomainObjUnlock(privdom);
|
virDomainObjUnlock(privdom);
|
||||||
@ -1538,8 +1544,6 @@ static int testRebootDomain (virDomainPtr domain,
|
|||||||
switch (privdom->def->onReboot) {
|
switch (privdom->def->onReboot) {
|
||||||
case VIR_DOMAIN_LIFECYCLE_DESTROY:
|
case VIR_DOMAIN_LIFECYCLE_DESTROY:
|
||||||
privdom->state = VIR_DOMAIN_SHUTOFF;
|
privdom->state = VIR_DOMAIN_SHUTOFF;
|
||||||
domain->id = -1;
|
|
||||||
privdom->def->id = -1;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_LIFECYCLE_RESTART:
|
case VIR_DOMAIN_LIFECYCLE_RESTART:
|
||||||
@ -1548,8 +1552,6 @@ static int testRebootDomain (virDomainPtr domain,
|
|||||||
|
|
||||||
case VIR_DOMAIN_LIFECYCLE_PRESERVE:
|
case VIR_DOMAIN_LIFECYCLE_PRESERVE:
|
||||||
privdom->state = VIR_DOMAIN_SHUTOFF;
|
privdom->state = VIR_DOMAIN_SHUTOFF;
|
||||||
domain->id = -1;
|
|
||||||
privdom->def->id = -1;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_LIFECYCLE_RESTART_RENAME:
|
case VIR_DOMAIN_LIFECYCLE_RESTART_RENAME:
|
||||||
@ -1558,15 +1560,15 @@ static int testRebootDomain (virDomainPtr domain,
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
privdom->state = VIR_DOMAIN_SHUTOFF;
|
privdom->state = VIR_DOMAIN_SHUTOFF;
|
||||||
domain->id = -1;
|
|
||||||
privdom->def->id = -1;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (privdom->state == VIR_DOMAIN_SHUTOFF) {
|
if (privdom->state == VIR_DOMAIN_SHUTOFF) {
|
||||||
|
testDomainShutdownState(domain, privdom);
|
||||||
event = virDomainEventNewFromObj(privdom,
|
event = virDomainEventNewFromObj(privdom,
|
||||||
VIR_DOMAIN_EVENT_STOPPED,
|
VIR_DOMAIN_EVENT_STOPPED,
|
||||||
VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN);
|
VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN);
|
||||||
|
|
||||||
if (!privdom->persistent) {
|
if (!privdom->persistent) {
|
||||||
virDomainRemoveInactive(&privconn->domains,
|
virDomainRemoveInactive(&privconn->domains,
|
||||||
privdom);
|
privdom);
|
||||||
@ -1575,7 +1577,6 @@ static int testRebootDomain (virDomainPtr domain,
|
|||||||
}
|
}
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
if (privdom)
|
if (privdom)
|
||||||
virDomainObjUnlock(privdom);
|
virDomainObjUnlock(privdom);
|
||||||
@ -1689,17 +1690,18 @@ static int testDomainSave(virDomainPtr domain,
|
|||||||
}
|
}
|
||||||
fd = -1;
|
fd = -1;
|
||||||
|
|
||||||
privdom->state = VIR_DOMAIN_SHUTOFF;
|
testDomainShutdownState(domain, privdom);
|
||||||
event = virDomainEventNewFromObj(privdom,
|
event = virDomainEventNewFromObj(privdom,
|
||||||
VIR_DOMAIN_EVENT_STOPPED,
|
VIR_DOMAIN_EVENT_STOPPED,
|
||||||
VIR_DOMAIN_EVENT_STOPPED_SAVED);
|
VIR_DOMAIN_EVENT_STOPPED_SAVED);
|
||||||
|
|
||||||
if (!privdom->persistent) {
|
if (!privdom->persistent) {
|
||||||
virDomainRemoveInactive(&privconn->domains,
|
virDomainRemoveInactive(&privconn->domains,
|
||||||
privdom);
|
privdom);
|
||||||
privdom = NULL;
|
privdom = NULL;
|
||||||
}
|
}
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
|
ret = 0;
|
||||||
cleanup:
|
cleanup:
|
||||||
VIR_FREE(xml);
|
VIR_FREE(xml);
|
||||||
|
|
||||||
@ -1842,17 +1844,19 @@ static int testDomainCoreDump(virDomainPtr domain,
|
|||||||
domain->name, to);
|
domain->name, to);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
privdom->state = VIR_DOMAIN_SHUTOFF;
|
|
||||||
|
testDomainShutdownState(domain, privdom);
|
||||||
event = virDomainEventNewFromObj(privdom,
|
event = virDomainEventNewFromObj(privdom,
|
||||||
VIR_DOMAIN_EVENT_STOPPED,
|
VIR_DOMAIN_EVENT_STOPPED,
|
||||||
VIR_DOMAIN_EVENT_STOPPED_CRASHED);
|
VIR_DOMAIN_EVENT_STOPPED_CRASHED);
|
||||||
|
|
||||||
if (!privdom->persistent) {
|
if (!privdom->persistent) {
|
||||||
virDomainRemoveInactive(&privconn->domains,
|
virDomainRemoveInactive(&privconn->domains,
|
||||||
privdom);
|
privdom);
|
||||||
privdom = NULL;
|
privdom = NULL;
|
||||||
}
|
}
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
|
ret = 0;
|
||||||
cleanup:
|
cleanup:
|
||||||
if (fd != -1)
|
if (fd != -1)
|
||||||
close(fd);
|
close(fd);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user