Hello community,

here is the log from the commit of package libvirt for openSUSE:Factory checked 
in at 2018-01-30 15:38:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libvirt (Old)
 and      /work/SRC/openSUSE:Factory/.libvirt.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libvirt"

Tue Jan 30 15:38:35 2018 rev:249 rq:569998 version:4.0.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/libvirt/libvirt.changes  2018-01-25 
12:35:22.841116755 +0100
+++ /work/SRC/openSUSE:Factory/.libvirt.new/libvirt.changes     2018-01-30 
15:38:46.922352045 +0100
@@ -1,0 +2,17 @@
+Fri Jan 26 15:44:30 UTC 2018 - [email protected]
+
+- qemu: Support setting OEM strings in SMBIOS
+  68eed56b-conf-smbios-oem-strings.patch,
+  76977061-qemu-smbios-oem-strings.patch
+  FATE#323624
+- libxl: resume lock process after failed migration
+  0c710a37-libxl-resume-lock-on-mig-failure.patch
+  bsc#1076861
+
+-------------------------------------------------------------------
+Thu Jan 25 16:46:32 UTC 2018 - [email protected]
+
+- qemu hook: Change shebang to /usr/bin/python3
+- spec: Require python lxml in daemon-hooks subpackage
+
+-------------------------------------------------------------------

New:
----
  0c710a37-libxl-resume-lock-on-mig-failure.patch
  68eed56b-conf-smbios-oem-strings.patch
  76977061-qemu-smbios-oem-strings.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libvirt.spec ++++++
--- /var/tmp/diff_new_pack.4yMlxE/_old  2018-01-30 15:38:48.818263530 +0100
+++ /var/tmp/diff_new_pack.4yMlxE/_new  2018-01-30 15:38:48.822263342 +0100
@@ -237,7 +237,6 @@
 BuildRequires:  ncurses-devel
 BuildRequires:  perl
 BuildRequires:  python
-BuildRequires:  python-xml
 BuildRequires:  readline-devel
 # perl XPath is needed since we have a patch touching files that cause
 # hvsupport.html to be regenerated
@@ -320,6 +319,9 @@
 # Upstream patches
 Patch0:         72adaf2f-revert-qemu-monitor-error-report.patch
 Patch1:         71d56a39-nodedev-fix-parse-PCI-address.patch
+Patch2:         68eed56b-conf-smbios-oem-strings.patch
+Patch3:         76977061-qemu-smbios-oem-strings.patch
+Patch4:         0c710a37-libxl-resume-lock-on-mig-failure.patch
 # Patches pending upstream review
 Patch100:       libxl-dom-reset.patch
 Patch101:       network-don-t-use-dhcp-authoritative-on-static-netwo.patch
@@ -416,6 +418,7 @@
 Group:          Development/Libraries/C and C++
 
 Requires:       %{name}-daemon = %{version}-%{release}
+Requires:       python3-lxml
 
 %description daemon-hooks
 Default hook scripts for the libvirt daemon
@@ -906,6 +909,9 @@
 %setup -q
 %patch0 -p1
 %patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
 %patch100 -p1
 %patch101 -p1
 %patch150 -p1

++++++ 0c710a37-libxl-resume-lock-on-mig-failure.patch ++++++
commit 0c710a37ea265dc7dfa0ebcebf1e21e4c6b2ea21
Author: Jim Fehlig <[email protected]>
Date:   Wed Jan 24 14:23:04 2018 -0700

    libxl: resume lock process after failed migration
    
    During migration, the lock process is paused in the perform phase
    but not resumed if there is a subsequent failure, leaving the locked
    resource unprotected.
    
    The perform phase itself can fail, in which case the lock process
    should be resumed before returning from perform. The finish phase
    could also fail on the destination host, in which case the migration
    is canceled in the confirm phase and the VM is resumed. The lock
    process needs to be resumed there as well.
    
    Signed-off-by: Jim Fehlig <[email protected]>

Index: libvirt-4.0.0/src/libxl/libxl_migration.c
===================================================================
--- libvirt-4.0.0.orig/src/libxl/libxl_migration.c
+++ libvirt-4.0.0/src/libxl/libxl_migration.c
@@ -1238,6 +1238,12 @@ libxlDomainMigrationPerform(libxlDriverP
     ret = libxlDoMigrateSend(driver, vm, flags, sockfd);
     virObjectLock(vm);
 
+    if (ret < 0)
+        virDomainLockProcessResume(driver->lockManager,
+                                   "xen:///system",
+                                   vm,
+                                   priv->lockState);
+
  cleanup:
     VIR_FORCE_CLOSE(sockfd);
     virURIFree(uri);
@@ -1349,10 +1355,16 @@ libxlDomainMigrationConfirm(libxlDriverP
                             int cancelled)
 {
     libxlDriverConfigPtr cfg = libxlDriverConfigGet(driver);
+    libxlDomainObjPrivatePtr priv = vm->privateData;
     virObjectEventPtr event = NULL;
     int ret = -1;
 
     if (cancelled) {
+        /* Resume lock process that was paused in MigrationPerform */
+        virDomainLockProcessResume(driver->lockManager,
+                                   "xen:///system",
+                                   vm,
+                                   priv->lockState);
         if (libxl_domain_resume(cfg->ctx, vm->def->id, 1, 0) == 0) {
             ret = 0;
         } else {
++++++ 68eed56b-conf-smbios-oem-strings.patch ++++++
commit 68eed56b2d51e66bb540062fe09f5ffd44e99f6e
Author: Daniel P. Berrange <[email protected]>
Date:   Sat Oct 28 14:56:51 2017 +0100

    conf: add support for setting OEM strings SMBIOS data fields
    
    The OEM strings table in SMBIOS allows the vendor to pass arbitrary
    strings into the guest OS. This can be used as a way to pass data to an
    application like cloud-init, or potentially as an alternative to the
    kernel command line for OS installers where you can't modify the install
    ISO image to change the kernel args.
    
    As an example, consider if cloud-init and anaconda supported OEM strings
    you could use something like
    
        <oemStrings>
          <entry>cloud-init:ds=nocloud-net;s=http://10.10.0.1:8000/</entry>
          
<entry>anaconda:method=http://dl.fedoraproject.org/pub/fedora/linux/releases/25/x86_64/os</entry>
        </oemStrings>
    
    use of a application specific prefix as illustrated above is
    recommended, but not mandated, so that an app can reliably identify
    which of the many OEM strings are targetted at it.
    
    Reviewed-by: John Ferlan <[email protected]>
    Signed-off-by: Daniel P. Berrange <[email protected]>

Index: libvirt-4.0.0/docs/formatdomain.html.in
===================================================================
--- libvirt-4.0.0.orig/docs/formatdomain.html.in
+++ libvirt-4.0.0/docs/formatdomain.html.in
@@ -411,6 +411,10 @@
     &lt;entry name='version'&gt;0B98401 Pro&lt;/entry&gt;
     &lt;entry name='serial'&gt;W1KS427111E&lt;/entry&gt;
   &lt;/baseBoard&gt;
+  &lt;oemStrings&gt;
+    &lt;entry&gt;myappname:some arbitrary data&lt;/entry&gt;
+    &lt;entry&gt;otherappname:more arbitrary data&lt;/entry&gt;
+  &lt;/oemStrings&gt;
 &lt;/sysinfo&gt;
 ...</pre>
 
@@ -498,6 +502,15 @@
             validation and <code>date</code> format checking, all values are
             passed as strings to the hypervisor driver.
           </dd>
+          <dt><code>oemStrings</code></dt>
+          <dd>
+            This is block 11 of SMBIOS. This element should appear once and
+            can have multiple <code>entry</code> child elements, each providing
+            arbitrary string data. There are no restrictions on what data can
+            be provided in the entries, however, if the data is intended to be
+            consumed by an application in the guest, it is recommended to use
+            the application name as a prefix in the string. (<span 
class="since">Since 4.1.0</span>)
+          </dd>
         </dl>
       </dd>
     </dl>
Index: libvirt-4.0.0/docs/schemas/domaincommon.rng
===================================================================
--- libvirt-4.0.0.orig/docs/schemas/domaincommon.rng
+++ libvirt-4.0.0/docs/schemas/domaincommon.rng
@@ -4857,6 +4857,15 @@
             </oneOrMore>
           </element>
         </zeroOrMore>
+        <optional>
+          <element name="oemStrings">
+            <oneOrMore>
+              <element name="entry">
+                <ref name="sysinfo-value"/>
+              </element>
+            </oneOrMore>
+          </element>
+        </optional>
       </interleave>
     </element>
   </define>
Index: libvirt-4.0.0/src/conf/domain_conf.c
===================================================================
--- libvirt-4.0.0.orig/src/conf/domain_conf.c
+++ libvirt-4.0.0/src/conf/domain_conf.c
@@ -14461,6 +14461,42 @@ virSysinfoBaseBoardParseXML(xmlXPathCont
     return ret;
 }
 
+
+static int
+virSysinfoOEMStringsParseXML(xmlXPathContextPtr ctxt,
+                             virSysinfoOEMStringsDefPtr *oem)
+{
+    int ret = -1;
+    virSysinfoOEMStringsDefPtr def;
+    xmlNodePtr *strings = NULL;
+    int nstrings;
+    size_t i;
+
+    nstrings = virXPathNodeSet("./entry", ctxt, &strings);
+    if (nstrings < 0)
+        return -1;
+    if (nstrings == 0)
+        return 0;
+
+    if (VIR_ALLOC(def) < 0)
+        goto cleanup;
+
+    if (VIR_ALLOC_N(def->values, nstrings) < 0)
+        goto cleanup;
+
+    def->nvalues = nstrings;
+    for (i = 0; i < nstrings; i++)
+        def->values[i] = virXMLNodeContentString(strings[i]);
+
+    *oem = def;
+    def = NULL;
+    ret = 0;
+ cleanup:
+    VIR_FREE(strings);
+    virSysinfoOEMStringsDefFree(def);
+    return ret;
+}
+
 static virSysinfoDefPtr
 virSysinfoParseXML(xmlNodePtr node,
                   xmlXPathContextPtr ctxt,
@@ -14519,6 +14555,17 @@ virSysinfoParseXML(xmlNodePtr node,
     if (virSysinfoBaseBoardParseXML(ctxt, &def->baseBoard, &def->nbaseBoard) < 
0)
         goto error;
 
+    /* Extract system related metadata */
+    if ((tmpnode = virXPathNode("./oemStrings[1]", ctxt)) != NULL) {
+        oldnode = ctxt->node;
+        ctxt->node = tmpnode;
+        if (virSysinfoOEMStringsParseXML(ctxt, &def->oemStrings) < 0) {
+            ctxt->node = oldnode;
+            goto error;
+        }
+        ctxt->node = oldnode;
+    }
+
  cleanup:
     VIR_FREE(type);
     return def;
Index: libvirt-4.0.0/src/util/virsysinfo.c
===================================================================
--- libvirt-4.0.0.orig/src/util/virsysinfo.c
+++ libvirt-4.0.0/src/util/virsysinfo.c
@@ -108,6 +108,20 @@ void virSysinfoBaseBoardDefClear(virSysi
     VIR_FREE(def->location);
 }
 
+void virSysinfoOEMStringsDefFree(virSysinfoOEMStringsDefPtr def)
+{
+    size_t i;
+
+    if (def == NULL)
+        return;
+
+    for (i = 0; i < def->nvalues; i++)
+        VIR_FREE(def->values[i]);
+    VIR_FREE(def->values);
+
+    VIR_FREE(def);
+}
+
 /**
  * virSysinfoDefFree:
  * @def: a sysinfo structure
@@ -157,6 +171,8 @@ void virSysinfoDefFree(virSysinfoDefPtr
     }
     VIR_FREE(def->memory);
 
+    virSysinfoOEMStringsDefFree(def->oemStrings);
+
     VIR_FREE(def);
 }
 
@@ -1294,6 +1310,24 @@ virSysinfoMemoryFormat(virBufferPtr buf,
     }
 }
 
+static void
+virSysinfoOEMStringsFormat(virBufferPtr buf, virSysinfoOEMStringsDefPtr def)
+{
+    size_t i;
+
+    if (!def)
+        return;
+
+    virBufferAddLit(buf, "<oemStrings>\n");
+    virBufferAdjustIndent(buf, 2);
+    for (i = 0; i < def->nvalues; i++) {
+        virBufferEscapeString(buf, "<entry>%s</entry>\n",
+                              def->values[i]);
+    }
+    virBufferAdjustIndent(buf, -2);
+    virBufferAddLit(buf, "</oemStrings>\n");
+}
+
 /**
  * virSysinfoFormat:
  * @buf: buffer to append output to (may use auto-indentation)
@@ -1324,6 +1358,7 @@ virSysinfoFormat(virBufferPtr buf, virSy
     virSysinfoBaseBoardFormat(&childrenBuf, def->baseBoard, def->nbaseBoard);
     virSysinfoProcessorFormat(&childrenBuf, def);
     virSysinfoMemoryFormat(&childrenBuf, def);
+    virSysinfoOEMStringsFormat(&childrenBuf, def->oemStrings);
 
     virBufferAsprintf(buf, "<sysinfo type='%s'", type);
     if (virBufferUse(&childrenBuf)) {
Index: libvirt-4.0.0/src/util/virsysinfo.h
===================================================================
--- libvirt-4.0.0.orig/src/util/virsysinfo.h
+++ libvirt-4.0.0/src/util/virsysinfo.h
@@ -98,6 +98,13 @@ struct _virSysinfoBaseBoardDef {
     /* XXX board type */
 };
 
+typedef struct _virSysinfoOEMStringsDef virSysinfoOEMStringsDef;
+typedef virSysinfoOEMStringsDef *virSysinfoOEMStringsDefPtr;
+struct _virSysinfoOEMStringsDef {
+    size_t nvalues;
+    char **values;
+};
+
 typedef struct _virSysinfoDef virSysinfoDef;
 typedef virSysinfoDef *virSysinfoDefPtr;
 struct _virSysinfoDef {
@@ -114,6 +121,8 @@ struct _virSysinfoDef {
 
     size_t nmemory;
     virSysinfoMemoryDefPtr memory;
+
+    virSysinfoOEMStringsDefPtr oemStrings;
 };
 
 virSysinfoDefPtr virSysinfoRead(void);
@@ -121,6 +130,7 @@ virSysinfoDefPtr virSysinfoRead(void);
 void virSysinfoBIOSDefFree(virSysinfoBIOSDefPtr def);
 void virSysinfoSystemDefFree(virSysinfoSystemDefPtr def);
 void virSysinfoBaseBoardDefClear(virSysinfoBaseBoardDefPtr def);
+void virSysinfoOEMStringsDefFree(virSysinfoOEMStringsDefPtr def);
 void virSysinfoDefFree(virSysinfoDefPtr def);
 
 int virSysinfoFormat(virBufferPtr buf, virSysinfoDefPtr def)
++++++ 76977061-qemu-smbios-oem-strings.patch ++++++
commit 7697706135562121732a5ddb5574a4afb269645f
Author: Daniel P. Berrange <[email protected]>
Date:   Wed Jan 17 17:35:13 2018 +0000

    qemu: add support for generating SMBIOS OEM strings command line
    
    This wires up the previously added OEM strings XML schema to be able to
    generate comamnd line args for QEMU. This requires QEMU >= 2.12 release
    containing this patch:
    
      commit 2d6dcbf93fb01b4a7f45a93d276d4d74b16392dd
      Author: Daniel P. Berrange <[email protected]>
      Date:   Sat Oct 28 21:51:36 2017 +0100
    
        smbios: support setting OEM strings table
    
    Reviewed-by: John Ferlan <[email protected]>
    Signed-off-by: Daniel P. Berrange <[email protected]>

Index: libvirt-4.0.0/src/qemu/qemu_command.c
===================================================================
--- libvirt-4.0.0.orig/src/qemu/qemu_command.c
+++ libvirt-4.0.0/src/qemu/qemu_command.c
@@ -6142,6 +6142,26 @@ qemuBuildSmbiosBaseBoardStr(virSysinfoBa
 }
 
 
+static char *
+qemuBuildSmbiosOEMStringsStr(virSysinfoOEMStringsDefPtr def)
+{
+    virBuffer buf = VIR_BUFFER_INITIALIZER;
+    size_t i;
+
+    if (!def)
+        return NULL;
+
+    virBufferAddLit(&buf, "type=11");
+
+    for (i = 0; i < def->nvalues; i++) {
+        virBufferAddLit(&buf, ",value=");
+        virQEMUBuildBufferEscapeComma(&buf, def->values[i]);
+    }
+
+    return virBufferContentAndReset(&buf);
+}
+
+
 static int
 qemuBuildSmbiosCommandLine(virCommandPtr cmd,
                            virQEMUDriverPtr driver,
@@ -6210,6 +6230,14 @@ qemuBuildSmbiosCommandLine(virCommandPtr
                 return -1;
 
             virCommandAddArgList(cmd, "-smbios", smbioscmd, NULL);
+            VIR_FREE(smbioscmd);
+        }
+
+        if (source->oemStrings) {
+            if (!(smbioscmd = 
qemuBuildSmbiosOEMStringsStr(source->oemStrings)))
+                return -1;
+
+            virCommandAddArgList(cmd, "-smbios", smbioscmd, NULL);
             VIR_FREE(smbioscmd);
         }
     }
Index: libvirt-4.0.0/tests/qemuxml2argvdata/smbios.args
===================================================================
--- libvirt-4.0.0.orig/tests/qemuxml2argvdata/smbios.args
+++ libvirt-4.0.0/tests/qemuxml2argvdata/smbios.args
@@ -17,6 +17,8 @@ serial=32dfcb37-5af1-552b-357c-be8c3aa38
 uuid=c7a5fdbd-edaf-9455-926a-d65c16db1809,sku=1234567890,family=Red Hat' \
 -smbios 'type=2,manufacturer=Hewlett-Packard,product=0B4Ch,version=D,\
 serial=CZC1065993,asset=CZC1065993,location=Upside down' \
+-smbios 'type=11,value=Hello,value=World,value=This is,,\
+ more tricky value=escaped' \
 -nographic \
 -nodefaults \
 -chardev 
socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\
Index: libvirt-4.0.0/tests/qemuxml2argvdata/smbios.xml
===================================================================
--- libvirt-4.0.0.orig/tests/qemuxml2argvdata/smbios.xml
+++ libvirt-4.0.0/tests/qemuxml2argvdata/smbios.xml
@@ -26,6 +26,11 @@
       <entry name='asset'>CZC1065993</entry>
       <entry name='location'>Upside down</entry>
     </baseBoard>
+    <oemStrings>
+      <entry>Hello</entry>
+      <entry>World</entry>
+      <entry>This is, more tricky value=escaped</entry>
+    </oemStrings>
   </sysinfo>
   <os>
     <type arch='i686' machine='pc'>hvm</type>
Index: libvirt-4.0.0/tests/qemuxml2xmloutdata/smbios.xml
===================================================================
--- libvirt-4.0.0.orig/tests/qemuxml2xmloutdata/smbios.xml
+++ libvirt-4.0.0/tests/qemuxml2xmloutdata/smbios.xml
@@ -26,6 +26,11 @@
       <entry name='asset'>CZC1065993</entry>
       <entry name='location'>Upside down</entry>
     </baseBoard>
+    <oemStrings>
+      <entry>Hello</entry>
+      <entry>World</entry>
+      <entry>This is, more tricky value=escaped</entry>
+    </oemStrings>
   </sysinfo>
   <os>
     <type arch='i686' machine='pc'>hvm</type>

++++++ libxl-set-migration-constraints.patch ++++++
--- /var/tmp/diff_new_pack.4yMlxE/_old  2018-01-30 15:38:49.046252885 +0100
+++ /var/tmp/diff_new_pack.4yMlxE/_new  2018-01-30 15:38:49.050252699 +0100
@@ -262,7 +262,7 @@
 +    ret = libxlDoMigrateSend(driver, vm, props, sockfd);
      virObjectLock(vm);
  
-  cleanup:
+     if (ret < 0)
 Index: libvirt-4.0.0/src/libxl/libxl_migration.h
 ===================================================================
 --- libvirt-4.0.0.orig/src/libxl/libxl_migration.h

++++++ suse-qemu-domain-hook.py ++++++
--- /var/tmp/diff_new_pack.4yMlxE/_old  2018-01-30 15:38:49.122249337 +0100
+++ /var/tmp/diff_new_pack.4yMlxE/_new  2018-01-30 15:38:49.122249337 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
 # libvirt hook script for QEMU/KVM domains. See the libvirt hooks
 # documenation for more details
 #


Reply via email to