]> xenbits.xensource.com Git - libvirt.git/commitdiff
libxl: support enabling and disabling <hap> feature
authorJim Fehlig <jfehlig@suse.com>
Tue, 23 Feb 2016 03:06:57 +0000 (20:06 -0700)
committerJim Fehlig <jfehlig@suse.com>
Mon, 21 Mar 2016 15:28:18 +0000 (09:28 -0600)
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.

src/libxl/libxl_conf.c

index 7883ed6b0949df9ab7143ebe4ac64a779df9d1a1..82ba417bceeaebfacc24f079ed39bb3444faf1bc 100644 (file)
@@ -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;