Hello community,

here is the log from the commit of package python-libvirt-python for 
openSUSE:Factory checked in at 2018-07-28 12:45:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-libvirt-python (Old)
 and      /work/SRC/openSUSE:Factory/.python-libvirt-python.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-libvirt-python"

Sat Jul 28 12:45:35 2018 rev:13 rq:625842 version:4.5.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-libvirt-python/python-libvirt-python.changes  
    2018-07-06 10:43:32.867143904 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-libvirt-python.new/python-libvirt-python.changes
 2018-07-28 12:45:36.721012815 +0200
@@ -1,0 +2,6 @@
+Fri Jul 27 19:52:17 UTC 2018 - jfeh...@suse.com
+
+- Update to 4.5.0
+  - Add all new APIs and constants in libvirt 4.5.0
+
+-------------------------------------------------------------------

Old:
----
  libvirt-python-4.4.0.tar.gz
  libvirt-python-4.4.0.tar.gz.asc

New:
----
  libvirt-python-4.5.0.tar.gz
  libvirt-python-4.5.0.tar.gz.asc

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

Other differences:
------------------
++++++ python-libvirt-python.spec ++++++
--- /var/tmp/diff_new_pack.PdbJ2Y/_old  2018-07-28 12:45:37.249013775 +0200
+++ /var/tmp/diff_new_pack.PdbJ2Y/_new  2018-07-28 12:45:37.253013783 +0200
@@ -20,7 +20,7 @@
 %define srcname libvirt-python
 Name:           python-libvirt-python
 Url:            https://libvirt.org/
-Version:        4.4.0
+Version:        4.5.0
 Release:        0
 Summary:        Library providing a virtualization API
 License:        LGPL-2.1-or-later

++++++ libvirt-python-4.4.0.tar.gz -> libvirt-python-4.5.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-4.4.0/AUTHORS 
new/libvirt-python-4.5.0/AUTHORS
--- old/libvirt-python-4.4.0/AUTHORS    2018-06-04 22:32:32.000000000 +0200
+++ new/libvirt-python-4.5.0/AUTHORS    2018-07-02 22:18:22.000000000 +0200
@@ -28,6 +28,7 @@
    Doug Goldstein <car...@cardoe.com>
    Edgar Kaziakhmedov <edgar.kaziakhme...@virtuozzo.com>
    Eric Blake <ebl...@redhat.com>
+   Erik Skultety <eskul...@redhat.com>
    Federico Simoncelli <fsimo...@redhat.com>
    Giuseppe Scrivano <gscri...@redhat.com>
    Guan Qiang <hzguanqi...@corp.netease.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-4.4.0/ChangeLog 
new/libvirt-python-4.5.0/ChangeLog
--- old/libvirt-python-4.4.0/ChangeLog  2018-06-04 22:32:32.000000000 +0200
+++ new/libvirt-python-4.5.0/ChangeLog  2018-07-02 22:18:22.000000000 +0200
@@ -1,9 +1,110 @@
+2018-07-02 Daniel Veillard  <veill...@redhat.com>
+    
+    Release of libvirt-python-4.5.0
+    * setup.py: updated for release
+    
+    
+    
+2018-06-28 Daniel P. Berrangé  <berra...@redhat.com>
+    
+    Fix bugs in nwfilter binding APIs
+    We did not correctly mangle the API names in two cases, and we also
+    forgot to specialize the lookup method name in the sanity test.
+    
+    
+    
+2018-06-28 Daniel P. Berrangé  <berra...@redhat.com>
+    
+    Add support for nwfilter binding objects / apis
+    
+    
+2018-06-27 Cole Robinson  <crobi...@redhat.com>
+    
+    libvirtaio: Fix compat with python 3.7
+    In python 3.7, async is now a keyword, so this throws a syntax error:
+    
+    File "/usr/lib64/python3.7/site-packages/libvirtaio.py", line 49
+    from asyncio import async as ensure_future
+    ^
+    SyntaxError: invalid syntax
+    
+    Switch to getattr trickery to accomplish the same goal
+    
+    Reviewed-by: Pavel Hrdina <phrd...@redhat.com>
+    Reviewed-by: Andrea Bolognani <abolo...@redhat.com>
+    
+    
+2018-06-14 Erik Skultety  <eskul...@redhat.com>
+    
+    Add support for virNodeGetSEVInfo
+    This binding allows to query the AMD's SEV firmware for various platform
+    specific things, like a PDH certificate and a certificate chain to
+    establish a trusted connection with the firmware. Because the API uses
+    typed params, it's exempted from generation.
+    
+    Reviewed-by: Ján Tomko <jto...@redhat.com>
+    
+    
+2018-06-14 Erik Skultety  <eskul...@redhat.com>
+    
+    Add support for virDomainGetLaunchSecurityInfo
+    Libvirt recently introduced support for getting launch security
+    parameters, most notably AMD SEV VM memory measurement. This API can't
+    be generated as it's using typed parameters which we need to allocate.
+    
+    Reviewed-by: Ján Tomko <jto...@redhat.com>
+    
+    
+2018-06-12 Pavel Hrdina  <phrd...@redhat.com>
+    
+    libvirt_charPtrUnwrap: remove unnecessary check of returned string
+    Function libvirt_charPtrUnwrap() either fails or always sets the
+    unwrapped string so there is no need to check it explicitly.
+    
+    Reviewed-by: Ján Tomko <jto...@redhat.com>
+    
+    
+2018-06-12 Pavel Hrdina  <phrd...@redhat.com>
+    
+    libvirt-override: Reset exception if the error is ignored
+    In virConnectCredCallbackWrapper() we ignore the error case of
+    libvirt_charPtrUnwrap() function so we should also reset the exception.
+    
+    Reviewed-by: Ján Tomko <jto...@redhat.com>
+    
+    
+2018-06-12 Pavel Hrdina  <phrd...@redhat.com>
+    
+    typewrappers: Fix libvirt_charPtrUnwrap to set an exception if it fails
+    If the function fails it should always set an exception.
+    
+    Reviewed-by: Ján Tomko <jto...@redhat.com>
+    
+    
+2018-06-12 Pavel Hrdina  <phrd...@redhat.com>
+    
+    libvirt-utils: remove unused py_str function
+    Commit <57a160b5248ba47d4e1c9d22d95847dad8e0524f> removed last usage
+    but did not remove the function itself.
+    
+    Reviewed-by: Ján Tomko <jto...@redhat.com>
+    
+    
+2018-06-06 Daniel P. Berrangé  <berra...@redhat.com>
+    
+    Blacklist virGetLastError{Code,Domain}
+    These methods will not be exposed to apps, since we auto raise
+    all errors.
+    
+    
+    
 2018-06-04 Daniel Veillard  <veill...@redhat.com>
     
     Release of libvirt-python-4.4.0
     * setup.py: update for release
     
     
+    
 2018-06-01 Jiri Denemark  <jdene...@redhat.com>
     
     Add support for virConnectBaselineHypervisorCPU
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-4.4.0/PKG-INFO 
new/libvirt-python-4.5.0/PKG-INFO
--- old/libvirt-python-4.4.0/PKG-INFO   2018-06-04 22:32:32.000000000 +0200
+++ new/libvirt-python-4.5.0/PKG-INFO   2018-07-02 22:18:22.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: libvirt-python
-Version: 4.4.0
+Version: 4.5.0
 Summary: The libvirt virtualization API python binding
 Home-page: http://www.libvirt.org
 Author: Libvirt Maintainers
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-4.4.0/generator.py 
new/libvirt-python-4.5.0/generator.py
--- old/libvirt-python-4.4.0/generator.py       2018-06-04 22:28:09.000000000 
+0200
+++ new/libvirt-python-4.5.0/generator.py       2018-07-02 22:16:59.000000000 
+0200
@@ -356,6 +356,10 @@
     'virNWFilter *':  ('O', "virNWFilter", "virNWFilterPtr", "virNWFilterPtr"),
     'const virNWFilter *':  ('O', "virNWFilter", "virNWFilterPtr", 
"virNWFilterPtr"),
 
+    'virNWFilterBindingPtr':  ('O', "virNWFilterBinding", 
"virNWFilterBindingPtr", "virNWFilterBindingPtr"),
+    'virNWFilterBinding *':  ('O', "virNWFilterBinding", 
"virNWFilterBindingPtr", "virNWFilterBindingPtr"),
+    'const virNWFilterBinding *':  ('O', "virNWFilterBinding", 
"virNWFilterBindingPtr", "virNWFilterBindingPtr"),
+
     'virStreamPtr':  ('O', "virStream", "virStreamPtr", "virStreamPtr"),
     'virStream *':  ('O', "virStream", "virStreamPtr", "virStreamPtr"),
     'const virStream *':  ('O', "virStream", "virStreamPtr", "virStreamPtr"),
@@ -489,6 +493,8 @@
     'virDomainSetPerfEvents',
     'virDomainGetGuestVcpus',
     'virConnectBaselineHypervisorCPU',
+    'virDomainGetLaunchSecurityInfo',
+    'virNodeGetSEVInfo',
 )
 
 lxc_skip_impl = (
@@ -537,6 +543,7 @@
     'virConnectListAllInterfaces', # overridden in virConnect.py
     'virConnectListAllNodeDevices', # overridden in virConnect.py
     'virConnectListAllNWFilters', # overridden in virConnect.py
+    'virConnectListAllNWFilterBindings', # overridden in virConnect.py
     'virConnectListAllSecrets', # overridden in virConnect.py
     'virConnectGetAllDomainStats', # overridden in virConnect.py
     'virDomainListGetStats', # overriden in virConnect.py
@@ -570,6 +577,7 @@
     "virNodeDeviceRef",
     "virSecretRef",
     "virNWFilterRef",
+    "virNWFilterBindingRef",
     "virStoragePoolRef",
     "virStorageVolRef",
     "virStreamRef",
@@ -1008,6 +1016,8 @@
     "virSecret *": ("._o", "virSecret(self, _obj=%s)", "virSecret"),
     "virNWFilterPtr": ("._o", "virNWFilter(self, _obj=%s)", "virNWFilter"),
     "virNWFilter *": ("._o", "virNWFilter(self, _obj=%s)", "virNWFilter"),
+    "virNWFilterBindingPtr": ("._o", "virNWFilterBinding(self, _obj=%s)", 
"virNWFilterBinding"),
+    "virNWFilterBinding *": ("._o", "virNWFilterBinding(self, _obj=%s)", 
"virNWFilterBinding"),
     "virStreamPtr": ("._o", "virStream(self, _obj=%s)", "virStream"),
     "virStream *": ("._o", "virStream(self, _obj=%s)", "virStream"),
     "virConnectPtr": ("._o", "virConnect(_obj=%s)", "virConnect"),
@@ -1019,7 +1029,8 @@
 primary_classes = ["virDomain", "virNetwork", "virInterface",
                    "virStoragePool", "virStorageVol",
                    "virConnect", "virNodeDevice", "virSecret",
-                   "virNWFilter", "virStream", "virDomainSnapshot"]
+                   "virNWFilter", "virNWFilterBinding",
+                   "virStream", "virDomainSnapshot"]
 
 classes_destructors = {
     "virDomain": "virDomainFree",
@@ -1030,6 +1041,7 @@
     "virNodeDevice" : "virNodeDeviceFree",
     "virSecret": "virSecretFree",
     "virNWFilter": "virNWFilterFree",
+    "virNWFilterBinding": "virNWFilterBindingFree",
     "virDomainSnapshot": "virDomainSnapshotFree",
     # We hand-craft __del__ for this one
     #"virStream": "virStreamFree",
@@ -1056,6 +1068,8 @@
     'virSecretGetUsageType': True,
     'virSecretGetUsageID': True,
     'virNWFilterGetName': True,
+    'virNWFilterBindingGetFilterName': True,
+    'virNWFilterBindingGetPortDev': True,
 }
 
 function_classes = {}
@@ -1111,6 +1125,18 @@
     elif name[0:15] == "virSecretLookup":
         func = name[3:]
         func = func[0:1].lower() + func[1:]
+    elif name[0:27] == "virNWFilterBindingCreateXML":
+        func = name[3:]
+        func = func[0:3].lower() + func[3:]
+    elif name[0:24] == "virNWFilterBindingLookup":
+        func = name[3:]
+        func = func[0:3].lower() + func[3:]
+    elif name[0:24] == "virNWFilterBindingDefine":
+        func = name[3:]
+        func = func[0:3].lower() + func[3:]
+    elif name[0:24] == "virNWFilterBindingLookup":
+        func = name[3:]
+        func = func[0:3].lower() + func[3:]
     elif name[0:17] == "virNWFilterDefine":
         func = name[3:]
         func = func[0:3].lower() + func[3:]
@@ -1187,6 +1213,12 @@
     elif name[0:9] == 'virSecret':
         func = name[9:]
         func = func[0:1].lower() + func[1:]
+    elif name[0:21] == 'virNWFilterBindingGet':
+        func = name[21:]
+        func = func[0:1].lower() + func[1:]
+    elif name[0:18] == 'virNWFilterBinding':
+        func = name[18:]
+        func = func[0:1].lower() + func[1:]
     elif name[0:14] == 'virNWFilterGet':
         func = name[14:]
         func = func[0:1].lower() + func[1:]
@@ -1466,7 +1498,7 @@
             classes.write("class %s(object):\n" % (classname))
             if classname in [ "virDomain", "virNetwork", "virInterface", 
"virStoragePool",
                               "virStorageVol", "virNodeDevice", 
"virSecret","virStream",
-                              "virNWFilter" ]:
+                              "virNWFilter", "virNWFilterBinding" ]:
                 classes.write("    def __init__(self, conn, _obj=None):\n")
             elif classname in [ 'virDomainSnapshot' ]:
                 classes.write("    def __init__(self, dom, _obj=None):\n")
@@ -1474,7 +1506,7 @@
                 classes.write("    def __init__(self, _obj=None):\n")
             if classname in [ "virDomain", "virNetwork", "virInterface",
                               "virNodeDevice", "virSecret", "virStream",
-                              "virNWFilter" ]:
+                              "virNWFilter", "virNWFilterBinding" ]:
                 classes.write("        self._conn = conn\n")
             elif classname in [ "virStorageVol", "virStoragePool" ]:
                 classes.write("        self._conn = conn\n" + \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-4.4.0/libvirt-override-api.xml 
new/libvirt-python-4.5.0/libvirt-override-api.xml
--- old/libvirt-python-4.4.0/libvirt-override-api.xml   2018-06-04 
22:28:09.000000000 +0200
+++ new/libvirt-python-4.5.0/libvirt-override-api.xml   2018-07-02 
22:16:59.000000000 +0200
@@ -485,6 +485,12 @@
       <arg name='flags' type='unsigned int' info='optional flags'/>
       <return type='char *' info='the list of network filters or None in case 
of error'/>
     </function>
+    <function name='virConnectListAllNWFilterBindings' file='python'>
+      <info>returns list of all network fitler bindings</info>
+      <arg name='conn' type='virConnectPtr' info='pointer to the hypervisor 
connection'/>
+      <arg name='flags' type='unsigned int' info='optional flags'/>
+      <return type='char *' info='the list of network filter bindings or None 
in case of error'/>
+    </function>
     <function name='virNWFilterLookupByUUID' file='python'>
       <info>Try to lookup a network filter on the given hypervisor based on 
its UUID.</info>
       <return type='virNWFilterPtr' info='a new network filter object or NULL 
in case of failure'/>
@@ -728,5 +734,17 @@
       <arg name='xmlCPUs' type='const char **' info='array of XML descriptions 
of CPUs'/>
       <arg name='flags' type='unsigned int' info='bitwise-OR of 
virConnectBaselineCPUFlags'/>
     </function>
+    <function name='virDomainGetLaunchSecurityInfo' file='python'>
+      <info>Get launch security info for a domain</info>
+      <return type='char *' info='None in case of error, returns a dictionary 
of params'/>
+      <arg name='domain' type='virDomainPtr' info='pointer to domain object'/>
+      <arg name='flags' type='int' info='unused, always pass 0'/>
+    </function>
+    <function name='virNodeGetSEVInfo' file='python'>
+      <info>Get platform specific information from the SEV firmware</info>
+      <return type='char *' info='None in case of error, returns a dictionary 
of params'/>
+      <arg name='conn' type='virConnectPtr' info='pointer to hypervisor 
connection'/>
+      <arg name='flags' type='int' info='unused, always pass 0'/>
+    </function>
   </symbols>
 </api>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-4.4.0/libvirt-override-virConnect.py 
new/libvirt-python-4.5.0/libvirt-override-virConnect.py
--- old/libvirt-python-4.4.0/libvirt-override-virConnect.py     2018-06-04 
22:28:09.000000000 +0200
+++ new/libvirt-python-4.5.0/libvirt-override-virConnect.py     2018-07-02 
22:16:59.000000000 +0200
@@ -531,6 +531,18 @@
 
         return retlist
 
+    def listAllNWFilterBindings(self, flags=0):
+        """Returns a list of network filter binding objects"""
+        ret = libvirtmod.virConnectListAllNWFilterBindings(self._o, flags)
+        if ret is None:
+            raise libvirtError("virConnectListAllNWFilterBindings() failed", 
conn=self)
+
+        retlist = list()
+        for filter_ptr in ret:
+            retlist.append(virNWFilterBinding(self, _obj=filter_ptr))
+
+        return retlist
+
     def listAllSecrets(self, flags=0):
         """Returns a list of secret objects"""
         ret = libvirtmod.virConnectListAllSecrets(self._o, flags)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-4.4.0/libvirt-override.c 
new/libvirt-python-4.5.0/libvirt-override.c
--- old/libvirt-python-4.4.0/libvirt-override.c 2018-06-04 22:28:09.000000000 
+0200
+++ new/libvirt-python-4.5.0/libvirt-override.c 2018-07-02 22:16:59.000000000 
+0200
@@ -1918,8 +1918,10 @@
             char *result = NULL;
             pycreditem = PyTuple_GetItem(pycred, i);
             pyresult = PyList_GetItem(pycreditem, 4);
-            if (pyresult != Py_None)
+            if (pyresult != Py_None) {
                 libvirt_charPtrUnwrap(pyresult, &result);
+                PyErr_Clear();
+            }
             if (result != NULL) {
                 cred[i].result = result;
                 cred[i].resultlen = strlen(result);
@@ -4444,6 +4446,54 @@
 }
 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
 
+#if LIBVIR_CHECK_VERSION(4, 5, 0)
+static PyObject *
+libvirt_virConnectListAllNWFilterBindings(PyObject *self ATTRIBUTE_UNUSED,
+                                          PyObject *args)
+{
+    PyObject *pyobj_conn;
+    PyObject *py_retval = NULL;
+    virConnectPtr conn;
+    virNWFilterBindingPtr *bindings = NULL;
+    int c_retval = 0;
+    ssize_t i;
+    unsigned int flags;
+
+    if (!PyArg_ParseTuple(args, (char *)"OI:virConnectListAllNWFilterBindings",
+                          &pyobj_conn, &flags))
+        return NULL;
+    conn = (virConnectPtr) PyvirConnect_Get(pyobj_conn);
+
+    LIBVIRT_BEGIN_ALLOW_THREADS;
+    c_retval = virConnectListAllNWFilterBindings(conn, &bindings, flags);
+    LIBVIRT_END_ALLOW_THREADS;
+
+    if (c_retval < 0)
+        return VIR_PY_NONE;
+
+    if (!(py_retval = PyList_New(c_retval)))
+        goto cleanup;
+
+    for (i = 0; i < c_retval; i++) {
+        VIR_PY_LIST_SET_GOTO(py_retval, i,
+                             libvirt_virNWFilterBindingPtrWrap(bindings[i]), 
error);
+        /* python steals the pointer */
+        bindings[i] = NULL;
+    }
+
+ cleanup:
+    for (i = 0; i < c_retval; i++)
+        if (bindings[i])
+            virNWFilterBindingFree(bindings[i]);
+    VIR_FREE(bindings);
+    return py_retval;
+
+ error:
+    Py_CLEAR(py_retval);
+    goto cleanup;
+}
+#endif /* LIBVIR_CHECK_VERSION(4, 5, 0) */
+
 static PyObject *
 libvirt_virConnectListInterfaces(PyObject *self ATTRIBUTE_UNUSED,
                                  PyObject *args)
@@ -4637,8 +4687,7 @@
 
         for (i = 0; i < ncpus; i++) {
             if (libvirt_charPtrUnwrap(PyList_GetItem(list, i),
-                                      &(xmlcpus[i])) < 0 ||
-                xmlcpus[i] == NULL) {
+                                      &(xmlcpus[i])) < 0) {
                 for (j = 0 ; j < i ; j++)
                     VIR_FREE(xmlcpus[j]);
                 VIR_FREE(xmlcpus);
@@ -8243,8 +8292,7 @@
 
         for (i = 0; i < nmountpoints; i++) {
             if (libvirt_charPtrUnwrap(PyList_GetItem(pyobj_list, i),
-                                      mountpoints+i) < 0 ||
-                mountpoints[i] == NULL)
+                                      mountpoints+i) < 0)
                 goto cleanup;
         }
     }
@@ -8291,8 +8339,7 @@
 
         for (i = 0; i < nmountpoints; i++) {
             if (libvirt_charPtrUnwrap(PyList_GetItem(pyobj_list, i),
-                                      mountpoints+i) < 0 ||
-                mountpoints[i] == NULL)
+                                      mountpoints+i) < 0)
                 goto cleanup;
         }
     }
@@ -9741,8 +9788,7 @@
 
         for (i = 0; i < ncpus; i++) {
             if (libvirt_charPtrUnwrap(PyList_GetItem(list, i),
-                                      &(xmlCPUs[i])) < 0 ||
-                !xmlCPUs[i])
+                                      &(xmlCPUs[i])) < 0)
                 goto cleanup;
         }
     }
@@ -9765,6 +9811,76 @@
 #endif /* LIBVIR_CHECK_VERSION(4, 4, 0) */
 
 
+#if LIBVIR_CHECK_VERSION(4, 5, 0)
+static PyObject *
+libvirt_virDomainGetLaunchSecurityInfo(PyObject *self ATTRIBUTE_UNUSED,
+                                       PyObject *args)
+{
+    PyObject *pyobj_dom = NULL;
+    PyObject *ret = NULL;
+
+    virDomainPtr dom = NULL;
+    virTypedParameterPtr params = NULL;
+    int nparams = 0;
+    unsigned int flags = 0;
+    int i_retval;
+
+    if (!PyArg_ParseTuple(args, (char *)"OI:virDomainGetLaunchSecurityInfo",
+                          &pyobj_dom, &flags))
+        return NULL;
+    dom = (virDomainPtr) PyvirDomain_Get(pyobj_dom);
+
+    LIBVIRT_BEGIN_ALLOW_THREADS;
+    i_retval = virDomainGetLaunchSecurityInfo(dom, &params, &nparams, flags);
+    LIBVIRT_END_ALLOW_THREADS;
+
+    if (i_retval < 0) {
+        ret = VIR_PY_NONE;
+        goto cleanup;
+    }
+
+    ret = getPyVirTypedParameter(params, nparams);
+ cleanup:
+    virTypedParamsFree(params, nparams);
+    return ret;
+}
+
+
+static PyObject *
+libvirt_virNodeGetSEVInfo(PyObject *self ATTRIBUTE_UNUSED,
+                          PyObject *args)
+{
+    PyObject *pyobj_conn = NULL;
+    PyObject *ret = NULL;
+
+    virConnectPtr conn = NULL;
+    virTypedParameterPtr params = NULL;
+    int nparams = 0;
+    unsigned int flags = 0;
+    int i_retval;
+
+    if (!PyArg_ParseTuple(args, (char *)"OI:virNodeGetSEVInfo",
+                          &pyobj_conn, &flags))
+        return NULL;
+    conn = (virConnectPtr) PyvirConnect_Get(pyobj_conn);
+
+    LIBVIRT_BEGIN_ALLOW_THREADS;
+    i_retval = virNodeGetSEVInfo(conn, &params, &nparams, flags);
+    LIBVIRT_END_ALLOW_THREADS;
+
+    if (i_retval < 0) {
+        ret = VIR_PY_NONE;
+        goto cleanup;
+    }
+
+    ret = getPyVirTypedParameter(params, nparams);
+ cleanup:
+    virTypedParamsFree(params, nparams);
+    return ret;
+}
+#endif /* LIBVIR_CHECK_VERSION(4, 5, 0) */
+
+
 /************************************************************************
  *                                                                     *
  *                     The registration stuff                          *
@@ -9903,6 +10019,9 @@
 #if LIBVIR_CHECK_VERSION(0, 10, 2)
     {(char *) "virConnectListAllNWFilters", 
libvirt_virConnectListAllNWFilters, METH_VARARGS, NULL},
 #endif /* LIBVIR_CHECK_VERSION(0, 10, 2) */
+#if LIBVIR_CHECK_VERSION(4, 5, 0)
+    {(char *) "virConnectListAllNWFilterBindings", 
libvirt_virConnectListAllNWFilterBindings, METH_VARARGS, NULL},
+#endif /* LIBVIR_CHECK_VERSION(4, 5, 0) */
     {(char *) "virConnectListInterfaces", libvirt_virConnectListInterfaces, 
METH_VARARGS, NULL},
     {(char *) "virConnectListDefinedInterfaces", 
libvirt_virConnectListDefinedInterfaces, METH_VARARGS, NULL},
 #if LIBVIR_CHECK_VERSION(0, 10, 2)
@@ -10001,6 +10120,10 @@
 #if LIBVIR_CHECK_VERSION(4, 4, 0)
     {(char *) "virConnectBaselineHypervisorCPU", 
libvirt_virConnectBaselineHypervisorCPU, METH_VARARGS, NULL},
 #endif /* LIBVIR_CHECK_VERSION(4, 4, 0) */
+#if LIBVIR_CHECK_VERSION(4, 5, 0)
+    {(char *) "virDomainGetLaunchSecurityInfo", 
libvirt_virDomainGetLaunchSecurityInfo, METH_VARARGS, NULL},
+    {(char *) "virNodeGetSEVInfo", libvirt_virNodeGetSEVInfo, METH_VARARGS, 
NULL},
+#endif /* LIBVIR_CHECK_VERSION(4, 5, 0) */
     {NULL, NULL, 0, NULL}
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-4.4.0/libvirt-python.spec 
new/libvirt-python-4.5.0/libvirt-python.spec
--- old/libvirt-python-4.4.0/libvirt-python.spec        2018-06-04 
22:32:32.000000000 +0200
+++ new/libvirt-python-4.5.0/libvirt-python.spec        2018-07-02 
22:18:22.000000000 +0200
@@ -33,7 +33,7 @@
 
 Summary: The libvirt virtualization API python2 binding
 Name: libvirt-python
-Version: 4.4.0
+Version: 4.5.0
 Release: 1%{?dist}%{?extra_release}
 Source0: http://libvirt.org/sources/python/%{name}-%{version}.tar.gz
 Url: http://libvirt.org
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-4.4.0/libvirt-utils.c 
new/libvirt-python-4.5.0/libvirt-utils.c
--- old/libvirt-python-4.4.0/libvirt-utils.c    2018-05-02 14:42:55.000000000 
+0200
+++ new/libvirt-python-4.5.0/libvirt-utils.c    2018-07-02 22:16:59.000000000 
+0200
@@ -199,20 +199,6 @@
 }
 #endif /* ! LIBVIR_CHECK_VERSION(1, 0, 2) */
 
-char *
-py_str(PyObject *obj)
-{
-    PyObject *str = PyObject_Str(obj);
-    char *ret;
-    if (!str) {
-        PyErr_Print();
-        PyErr_Clear();
-        return NULL;
-    };
-    libvirt_charPtrUnwrap(str, &ret);
-    return ret;
-}
-
 /* Helper function to convert a virTypedParameter output array into a
  * Python dictionary for return to the user.  Return NULL on failure,
  * after raising a python exception.  */
@@ -316,8 +302,7 @@
     while (PyDict_Next(info, &pos, &key, &value)) {
         char *keystr = NULL;
 
-        if (libvirt_charPtrUnwrap(key, &keystr) < 0 ||
-            keystr == NULL)
+        if (libvirt_charPtrUnwrap(key, &keystr) < 0)
             goto cleanup;
 
         for (i = 0; i < nparams; i++) {
@@ -373,8 +358,7 @@
         case VIR_TYPED_PARAM_STRING:
         {
             char *string_val;
-            if (libvirt_charPtrUnwrap(value, &string_val) < 0 ||
-                !string_val)
+            if (libvirt_charPtrUnwrap(value, &string_val) < 0)
                 goto cleanup;
             temp->value.s = string_val;
             break;
@@ -503,7 +487,6 @@
     {
         char *val;;
         if (libvirt_charPtrUnwrap(value, &val) < 0 ||
-            !val ||
             virTypedParamsAddString(params, n, max, keystr, val) < 0) {
             VIR_FREE(val);
             goto cleanup;
@@ -555,8 +538,7 @@
         return -1;
 
     while (PyDict_Next(dict, &pos, &key, &value)) {
-        if (libvirt_charPtrUnwrap(key, &keystr) < 0 ||
-            !keystr)
+        if (libvirt_charPtrUnwrap(key, &keystr) < 0)
             goto cleanup;
 
         if (PyList_Check(value) || PyTuple_Check(value)) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-4.4.0/libvirt-utils.h 
new/libvirt-python-4.5.0/libvirt-utils.h
--- old/libvirt-python-4.4.0/libvirt-utils.h    2018-05-02 14:42:55.000000000 
+0200
+++ new/libvirt-python-4.5.0/libvirt-utils.h    2018-07-02 22:16:59.000000000 
+0200
@@ -319,7 +319,6 @@
 void virTypedParamsFree(virTypedParameterPtr params, int nparams);
 # endif /* ! LIBVIR_CHECK_VERSION(1, 0, 2) */
 
-char * py_str(PyObject *obj);
 PyObject * getPyVirTypedParameter(const virTypedParameter *params,
                                   int nparams);
 virTypedParameterPtr setPyVirTypedParameter(PyObject *info,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-4.4.0/libvirtaio.py 
new/libvirt-python-4.5.0/libvirtaio.py
--- old/libvirt-python-4.4.0/libvirtaio.py      2018-05-02 14:42:55.000000000 
+0200
+++ new/libvirt-python-4.5.0/libvirtaio.py      2018-07-02 22:16:59.000000000 
+0200
@@ -43,10 +43,13 @@
 
 import libvirt
 
-try:
-    from asyncio import ensure_future
-except ImportError:
-    from asyncio import async as ensure_future
+# Python < 3.4.4 doesn't have 'ensure_future', so we have to fall
+# back to 'async'; however, since 'async' is a reserved keyword
+# in Python >= 3.7, we can't perform a straightforward import and
+# we have to resort to getattr() instead
+ensure_future = getattr(asyncio, "ensure_future", None)
+if not ensure_future:
+    ensure_future = getattr(asyncio, "async")
 
 
 class Callback(object):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-4.4.0/sanitytest.py 
new/libvirt-python-4.5.0/sanitytest.py
--- old/libvirt-python-4.4.0/sanitytest.py      2018-05-02 14:42:55.000000000 
+0200
+++ new/libvirt-python-4.5.0/sanitytest.py      2018-07-02 22:16:59.000000000 
+0200
@@ -234,7 +234,9 @@
                     "ErrorFunc", "FreeError",
                     "SaveLastError", "ResetError"]:
             continue
-        elif func in ["GetLastError", "GetLastErrorMessage", "ResetLastError", 
"Initialize"]:
+        elif func in ["GetLastError", "GetLastErrorMessage",
+                      "GetLastErrorCode", "GetLastErrorDomain",
+                      "ResetLastError", "Initialize"]:
             func = "vir" + func
         elif func == "SetErrorFunc":
             func = "RegisterErrorHandler"
@@ -258,7 +260,7 @@
                 "LookupByUUIDString", "LookupByVolume" "LookupByName",
                 "LookupByID", "LookupByName", "LookupByKey", "LookupByPath",
                 "LookupByMACString", "LookupByUsage", "LookupByVolume",
-                "LookupByTargetPath","LookupSCSIHostByWWN",
+                "LookupByTargetPath","LookupSCSIHostByWWN", "LookupByPortDev",
                 "Restore", "RestoreFlags",
                 "SaveImageDefineXML", "SaveImageGetXMLDesc", "DefineXMLFlags"]:
         if klass != "virDomain":
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-4.4.0/setup.py 
new/libvirt-python-4.5.0/setup.py
--- old/libvirt-python-4.4.0/setup.py   2018-06-04 22:28:44.000000000 +0200
+++ new/libvirt-python-4.5.0/setup.py   2018-07-02 22:17:27.000000000 +0200
@@ -334,7 +334,7 @@
 _c_modules, _py_modules = get_module_lists()
 
 setup(name = 'libvirt-python',
-      version = '4.4.0',
+      version = '4.5.0',
       url = 'http://www.libvirt.org',
       maintainer = 'Libvirt Maintainers',
       maintainer_email = 'libvir-l...@redhat.com',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-4.4.0/typewrappers.c 
new/libvirt-python-4.5.0/typewrappers.c
--- old/libvirt-python-4.4.0/typewrappers.c     2018-05-02 14:42:55.000000000 
+0200
+++ new/libvirt-python-4.5.0/typewrappers.c     2018-07-02 22:16:59.000000000 
+0200
@@ -384,8 +384,11 @@
 #else
     ret = PyString_AsString(obj);
 #endif
-    if (ret)
+    if (ret) {
         *str = strdup(ret);
+        if (!*str)
+            PyErr_NoMemory();
+    }
 #if PY_MAJOR_VERSION > 2
     Py_DECREF(bytes);
 #endif
@@ -539,6 +542,19 @@
     return ret;
 }
 
+PyObject *
+libvirt_virNWFilterBindingPtrWrap(virNWFilterBindingPtr node)
+{
+    PyObject *ret;
+
+    if (node == NULL) {
+        return VIR_PY_NONE;
+    }
+
+    ret = libvirt_buildPyObject(node, "virNWFilterBindingPtr", NULL);
+    return ret;
+}
+
 PyObject *
 libvirt_virStreamPtrWrap(virStreamPtr node)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-4.4.0/typewrappers.h 
new/libvirt-python-4.5.0/typewrappers.h
--- old/libvirt-python-4.4.0/typewrappers.h     2018-05-02 14:42:55.000000000 
+0200
+++ new/libvirt-python-4.5.0/typewrappers.h     2018-07-02 22:16:59.000000000 
+0200
@@ -106,6 +106,15 @@
 } PyvirNWFilter_Object;
 
 
+#define PyvirNWFilterBinding_Get(v) (((v) == Py_None) ? NULL : \
+        (((PyvirNWFilterBinding_Object *)(v))->obj))
+
+typedef struct {
+    PyObject_HEAD
+    virNWFilterBindingPtr obj;
+} PyvirNWFilterBinding_Object;
+
+
 #define PyvirStream_Get(v) (((v) == Py_None) ? NULL : \
         (((PyvirStream_Object *)(v))->obj))
 
@@ -189,6 +198,7 @@
 PyObject * libvirt_virNodeDevicePtrWrap(virNodeDevicePtr node);
 PyObject * libvirt_virSecretPtrWrap(virSecretPtr node);
 PyObject * libvirt_virNWFilterPtrWrap(virNWFilterPtr node);
+PyObject * libvirt_virNWFilterBindingPtrWrap(virNWFilterBindingPtr node);
 PyObject * libvirt_virStreamPtrWrap(virStreamPtr node);
 PyObject * libvirt_virDomainSnapshotPtrWrap(virDomainSnapshotPtr node);
 


Reply via email to