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_poweroff>destroy</on_poweroff>
|
||||||
<on_reboot>restart</on_reboot>
|
<on_reboot>restart</on_reboot>
|
||||||
<on_crash>restart</on_crash>
|
<on_crash>restart</on_crash>
|
||||||
|
<on_lockfailure>poweroff</on_lockfailure>
|
||||||
...</pre>
|
...</pre>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
@ -974,6 +975,27 @@
|
||||||
domain will be restarted with the same configuration</dd>
|
domain will be restarted with the same configuration</dd>
|
||||||
</dl>
|
</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>
|
<h3><a name="elementsPowerManagement">Power Management</a></h3>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|
|
@ -2246,6 +2246,11 @@
|
||||||
<ref name="crashOptions"/>
|
<ref name="crashOptions"/>
|
||||||
</element>
|
</element>
|
||||||
</optional>
|
</optional>
|
||||||
|
<optional>
|
||||||
|
<element name="on_lockfailure">
|
||||||
|
<ref name="lockfailureOptions"/>
|
||||||
|
</element>
|
||||||
|
</optional>
|
||||||
</interleave>
|
</interleave>
|
||||||
</define>
|
</define>
|
||||||
<!--
|
<!--
|
||||||
|
@ -2287,6 +2292,23 @@
|
||||||
<value>coredump-restart</value>
|
<value>coredump-restart</value>
|
||||||
</choice>
|
</choice>
|
||||||
</define>
|
</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
|
Control ACPI sleep states (dis)allowed for the domain
|
||||||
For each of the states the following rules apply:
|
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-destroy",
|
||||||
"coredump-restart")
|
"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,
|
VIR_ENUM_IMPL(virDomainPMState, VIR_DOMAIN_PM_STATE_LAST,
|
||||||
"default",
|
"default",
|
||||||
"yes",
|
"yes",
|
||||||
|
@ -8963,6 +8970,13 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps,
|
||||||
virDomainLifecycleCrashTypeFromString) < 0)
|
virDomainLifecycleCrashTypeFromString) < 0)
|
||||||
goto error;
|
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,
|
if (virDomainPMStateParseXML(ctxt,
|
||||||
"string(./pm/suspend-to-mem/@enabled)",
|
"string(./pm/suspend-to-mem/@enabled)",
|
||||||
&def->pm.s3) < 0)
|
&def->pm.s3) < 0)
|
||||||
|
@ -13692,6 +13706,11 @@ virDomainDefFormatInternal(virDomainDefPtr def,
|
||||||
"on_crash",
|
"on_crash",
|
||||||
virDomainLifecycleCrashTypeToString) < 0)
|
virDomainLifecycleCrashTypeToString) < 0)
|
||||||
goto cleanup;
|
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) {
|
if (def->pm.s3 || def->pm.s4) {
|
||||||
virBufferAddLit(buf, " <pm>\n");
|
virBufferAddLit(buf, " <pm>\n");
|
||||||
|
|
|
@ -1413,6 +1413,18 @@ enum virDomainLifecycleCrashAction {
|
||||||
VIR_DOMAIN_LIFECYCLE_CRASH_LAST
|
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 {
|
enum virDomainPMState {
|
||||||
VIR_DOMAIN_PM_STATE_DEFAULT = 0,
|
VIR_DOMAIN_PM_STATE_DEFAULT = 0,
|
||||||
VIR_DOMAIN_PM_STATE_ENABLED,
|
VIR_DOMAIN_PM_STATE_ENABLED,
|
||||||
|
@ -1681,6 +1693,8 @@ struct _virDomainDef {
|
||||||
int onPoweroff;
|
int onPoweroff;
|
||||||
int onCrash;
|
int onCrash;
|
||||||
|
|
||||||
|
int onLockFailure; /* enum virDomainLockFailureAction */
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
/* These options are actually type of enum virDomainPMState */
|
/* These options are actually type of enum virDomainPMState */
|
||||||
int s3;
|
int s3;
|
||||||
|
|
|
@ -421,6 +421,8 @@ virDomainLifecycleTypeFromString;
|
||||||
virDomainLifecycleTypeToString;
|
virDomainLifecycleTypeToString;
|
||||||
virDomainLiveConfigHelperMethod;
|
virDomainLiveConfigHelperMethod;
|
||||||
virDomainLoadAllConfigs;
|
virDomainLoadAllConfigs;
|
||||||
|
virDomainLockFailureTypeFromString;
|
||||||
|
virDomainLockFailureTypeToString;
|
||||||
virDomainMemballoonModelTypeFromString;
|
virDomainMemballoonModelTypeFromString;
|
||||||
virDomainMemballoonModelTypeToString;
|
virDomainMemballoonModelTypeToString;
|
||||||
virDomainMemDumpTypeFromString;
|
virDomainMemDumpTypeFromString;
|
||||||
|
|
Loading…
Reference in New Issue