On 07/29/2010 03:54 PM, Jim Fehlig wrote:
I'm not too fond of the schema change but thus far haven't
found a way
to condense it. Suggestions welcomed :-).
I don't see any of DV's promised comments, and it obviously didn't make
it into 0.8.3 :(
>From a27589eb861fd487cb07e537b5da25125599e8a5 Mon Sep 17 00:00:00
2001
From: Jim Fehlig <jfehlig(a)novell.com>
Date: Thu, 29 Jul 2010 12:21:47 -0600
Subject: [PATCH] Add actions to virDomainLifecycle enum
Xen supports on_crash actions coredump-{destroy,restart}. libvirt
cannot parse config returned by xend that contains either of these
actions
xen52 # xm li -l test | grep on_crash
(on_crash coredump-restart)
xen52 # virsh dumpxml test
error: internal error unknown lifecycle type coredump-restart
This patch includes these additional actions in virDomainLifecycle
enum. Docs have also been updated, although the schema changes
might be further collapsed.
---
docs/formatdomain.html.in | 14 ++++++++++++++
docs/schemas/domain.rng | 24 +++++++++++++++++++++++-
Thanks for remembering the docs alongside the patch!
+ <p>
+ on_crash supports these additional actions.
Should we add a <since>0.8.4</since> tag here?
+ </p>
+
+ <dl>
+ <dt><code>coredump-destroy</code></dt>
+ <dd>The crashed domain's core will be dumped, and then the
+ domain will be terminated completely and all resources
+ released</dd>
+ <dt><code>coredump-restart</code></dt>
+ <dd>The crashed domain's core will be dumped, and then the
+ domain will be restarted with the same configuration</dd>
+ </dl>
+
<h3><a name="elementsFeatures">Hypervisor
features</a></h3>
<p>
diff --git a/docs/schemas/domain.rng b/docs/schemas/domain.rng
index b2783b0..d384652 100644
--- a/docs/schemas/domain.rng
+++ b/docs/schemas/domain.rng
@@ -1177,7 +1177,7 @@
</optional>
<optional>
<element name="on_crash">
- <ref name="offOptions"/>
+ <ref name="crashOptions"/>
</element>
</optional>
</interleave>
@@ -1199,6 +1199,28 @@
</choice>
</define>
<!--
+ Options when a domain crashes:
+ destroy: The domain is cleaned up
+ restart: A new domain is started in place of the old one
+ preserve: The domain will remain in memory until it is destroyed manually
+ rename-restart: a variant of the previous one but where the old domain is
+ renamed before being saved to allow a restart
+ coredump-destroy: The crashed domain's core will be dumped, and then the
+ domain will be terminated completely and all resources
+ released
+ coredump-restart: The crashed domain's core will be dumped, and then the
domain will be restarted with the same configuration
+ -->
+ <define name="crashOptions">
+ <choice>
+ <value>destroy</value>
+ <value>restart</value>
+ <value>preserve</value>
+ <value>rename-restart</value>
+ <value>coredump-destroy</value>
+ <value>coredump-restart</value>
+ </choice>
+ </define>
I don't know if it works to inline <ref name="offOptions"/> into the
<choice> block rather than open-coding the first four <value>s, but I'm
assuming it doesn't, and that your fears about this being a non-optimal
.rng representation are unfounded.
+++ b/src/conf/domain_conf.c
@@ -81,7 +81,9 @@ VIR_ENUM_IMPL(virDomainLifecycle, VIR_DOMAIN_LIFECYCLE_LAST,
"destroy",
"restart",
"rename-restart",
- "preserve")
+ "preserve",
+ "coredump-destroy",
+ "coredump-restart")
Hmm. These two new values are only valid for on_crash, but I don't see
any code that rejects them for on_reboot or on_poweroff. Do we need a
separate enum here, or do we just need to add better checking to the
remaining clients to detect enum values they can't support?
So, we'll need a v2 of the patch, once you've sorted the answer to that
question.
--
Eric Blake eblake(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org