mirror of https://gitee.com/openkylin/libvirt.git
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:
parent
d0ea530b00
commit
76f5bcabe6
|
@ -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>
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -421,6 +421,8 @@ virDomainLifecycleTypeFromString;
|
|||
virDomainLifecycleTypeToString;
|
||||
virDomainLiveConfigHelperMethod;
|
||||
virDomainLoadAllConfigs;
|
||||
virDomainLockFailureTypeFromString;
|
||||
virDomainLockFailureTypeToString;
|
||||
virDomainMemballoonModelTypeFromString;
|
||||
virDomainMemballoonModelTypeToString;
|
||||
virDomainMemDumpTypeFromString;
|
||||
|
|
Loading…
Reference in New Issue