Until now, the libxl driver ignored any <hap> setting in domain XML
and deferred to libxl, which enables hap if not specified. While
this is a good default, it prevents disabling hap if desired.
This change allows disabling hap with <hap state='off'/>. hap is
explicitly enabled with <hap/> or <hap state='on/>. Absense of
<hap>
retains current behavior of deferring default state to libxl.
Signed-off-by: Jim Fehlig <jfehlig(a)suse.com>
---
src/libxl/libxl_conf.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
index 6efd9b5..116dc22 100644
--- a/src/libxl/libxl_conf.c
+++ b/src/libxl/libxl_conf.c
@@ -511,10 +511,24 @@ libxlMakeDomCreateInfo(libxl_ctx *ctx,
libxl_domain_create_info_init(c_info);
- if (def->os.type == VIR_DOMAIN_OSTYPE_HVM)
+ if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) {
c_info->type = LIBXL_DOMAIN_TYPE_HVM;
- else
+ switch ((virTristateSwitch) def->features[VIR_DOMAIN_FEATURE_HAP]) {
+ case VIR_TRISTATE_SWITCH_OFF:
+ libxl_defbool_set(&c_info->hap, false);
+ break;
+
+ case VIR_TRISTATE_SWITCH_ON:
+ libxl_defbool_set(&c_info->hap, true);
+ break;
+
+ case VIR_TRISTATE_SWITCH_ABSENT:
+ case VIR_TRISTATE_SWITCH_LAST:
+ break;
+ }
+ } else {
c_info->type = LIBXL_DOMAIN_TYPE_PV;
+ }
if (VIR_STRDUP(c_info->name, def->name) < 0)
goto error;
--
2.1.4