conf: Add on_lockfailure event configuration

Using this new element, one can configure an action that should be
performed when resource locks are lost.
This commit is contained in:
Jiri Denemark 2012-09-06 22:17:01 +02:00
parent d0ea530b00
commit 76f5bcabe6
5 changed files with 79 additions and 0 deletions

View File

@ -919,6 +919,7 @@
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<on_lockfailure>poweroff</on_lockfailure>
...</pre>
<p>
@ -974,6 +975,27 @@
domain will be restarted with the same configuration</dd>
</dl>
<p>
The <code>on_lockfailure</code> element (<span class="since">since
0.10.3</span>) may be used to configure what action should be
taken when a lock manager loses resource locks. The following
actions are recognized by libvirt, although not all of them need
to be supported by individual lock managers. When no action is
specified, each lock manager will take its default action.
</p>
<dl>
<dt><code>poweroff</code></dt>
<dd>The domain will be forcefully powered off.</dd>
<dt><code>restart</code></dt>
<dd>The domain will be powered off and started up again to
reacquire its locks.</dd>
<dt><code>pause</code></dt>
<dd>The domain will be paused so that it can be manually resumed
when lock issues are solved.</dd>
<dt><code>ignore</code></dt>
<dd>Keep the domain running as if nothing happened.</dd>
</dl>
<h3><a name="elementsPowerManagement">Power Management</a></h3>
<p>

View File

@ -2246,6 +2246,11 @@
<ref name="crashOptions"/>
</element>
</optional>
<optional>
<element name="on_lockfailure">
<ref name="lockfailureOptions"/>
</element>
</optional>
</interleave>
</define>
<!--
@ -2287,6 +2292,23 @@
<value>coredump-restart</value>
</choice>
</define>
<!--
Options when resource locks are lost:
poweroff: power off the domain
restart: power off the domain and start it up again to reacquire the
locks
pause: pause the execution of the domain so that it can be manually
resumed when lock issues are solved
ignore: keep the domain running
-->
<define name="lockfailureOptions">
<choice>
<value>poweroff</value>
<value>restart</value>
<value>pause</value>
<value>ignore</value>
</choice>
</define>
<!--
Control ACPI sleep states (dis)allowed for the domain
For each of the states the following rules apply:

View File

@ -134,6 +134,13 @@ VIR_ENUM_IMPL(virDomainLifecycleCrash, VIR_DOMAIN_LIFECYCLE_CRASH_LAST,
"coredump-destroy",
"coredump-restart")
VIR_ENUM_IMPL(virDomainLockFailure, VIR_DOMAIN_LOCK_FAILURE_LAST,
"default",
"poweroff",
"restart",
"pause",
"ignore")
VIR_ENUM_IMPL(virDomainPMState, VIR_DOMAIN_PM_STATE_LAST,
"default",
"yes",
@ -8963,6 +8970,13 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps,
virDomainLifecycleCrashTypeFromString) < 0)
goto error;
if (virDomainEventActionParseXML(ctxt, "on_lockfailure",
"string(./on_lockfailure[1])",
&def->onLockFailure,
VIR_DOMAIN_LOCK_FAILURE_DEFAULT,
virDomainLockFailureTypeFromString) < 0)
goto error;
if (virDomainPMStateParseXML(ctxt,
"string(./pm/suspend-to-mem/@enabled)",
&def->pm.s3) < 0)
@ -13692,6 +13706,11 @@ virDomainDefFormatInternal(virDomainDefPtr def,
"on_crash",
virDomainLifecycleCrashTypeToString) < 0)
goto cleanup;
if (def->onLockFailure != VIR_DOMAIN_LOCK_FAILURE_DEFAULT &&
virDomainEventActionDefFormat(buf, def->onLockFailure,
"on_lockfailure",
virDomainLockFailureTypeToString) < 0)
goto cleanup;
if (def->pm.s3 || def->pm.s4) {
virBufferAddLit(buf, " <pm>\n");

View File

@ -1413,6 +1413,18 @@ enum virDomainLifecycleCrashAction {
VIR_DOMAIN_LIFECYCLE_CRASH_LAST
};
typedef enum {
VIR_DOMAIN_LOCK_FAILURE_DEFAULT,
VIR_DOMAIN_LOCK_FAILURE_POWEROFF,
VIR_DOMAIN_LOCK_FAILURE_RESTART,
VIR_DOMAIN_LOCK_FAILURE_PAUSE,
VIR_DOMAIN_LOCK_FAILURE_IGNORE,
VIR_DOMAIN_LOCK_FAILURE_LAST
} virDomainLockFailureAction;
VIR_ENUM_DECL(virDomainLockFailure)
enum virDomainPMState {
VIR_DOMAIN_PM_STATE_DEFAULT = 0,
VIR_DOMAIN_PM_STATE_ENABLED,
@ -1681,6 +1693,8 @@ struct _virDomainDef {
int onPoweroff;
int onCrash;
int onLockFailure; /* enum virDomainLockFailureAction */
struct {
/* These options are actually type of enum virDomainPMState */
int s3;

View File

@ -421,6 +421,8 @@ virDomainLifecycleTypeFromString;
virDomainLifecycleTypeToString;
virDomainLiveConfigHelperMethod;
virDomainLoadAllConfigs;
virDomainLockFailureTypeFromString;
virDomainLockFailureTypeToString;
virDomainMemballoonModelTypeFromString;
virDomainMemballoonModelTypeToString;
virDomainMemDumpTypeFromString;