Hello community, here is the log from the commit of package python-libvirt-python for openSUSE:Factory checked in at 2019-07-31 14:12:38 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-libvirt-python (Old) and /work/SRC/openSUSE:Factory/.python-libvirt-python.new.4126 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "python-libvirt-python" Wed Jul 31 14:12:38 2019 rev:24 rq:718356 version:5.5.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-libvirt-python/python-libvirt-python.changes 2019-06-07 12:18:47.680782286 +0200 +++ /work/SRC/openSUSE:Factory/.python-libvirt-python.new.4126/python-libvirt-python.changes 2019-07-31 14:12:43.478938126 +0200 @@ -1,0 +2,6 @@ +Wed Jul 24 20:39:48 UTC 2019 - James Fehlig <jfehlig@suse.com> + +- Update to 5.5.0 + - Add all new APIs and constants in libvirt 5.5.0 + +------------------------------------------------------------------- Old: ---- libvirt-python-5.4.0.tar.gz libvirt-python-5.4.0.tar.gz.asc New: ---- libvirt-python-5.5.0.tar.gz libvirt-python-5.5.0.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-libvirt-python.spec ++++++ --- /var/tmp/diff_new_pack.G6buNB/_old 2019-07-31 14:12:45.074937198 +0200 +++ /var/tmp/diff_new_pack.G6buNB/_new 2019-07-31 14:12:45.086937189 +0200 @@ -20,7 +20,7 @@ %define srcname libvirt-python Name: python-libvirt-python Url: https://libvirt.org/ -Version: 5.4.0 +Version: 5.5.0 Release: 0 Summary: Library providing a virtualization API License: LGPL-2.1-or-later ++++++ libvirt-python-5.4.0.tar.gz -> libvirt-python-5.5.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-5.4.0/AUTHORS new/libvirt-python-5.5.0/AUTHORS --- old/libvirt-python-5.4.0/AUTHORS 2019-06-03 17:06:51.000000000 +0200 +++ new/libvirt-python-5.5.0/AUTHORS 2019-07-02 22:45:32.000000000 +0200 @@ -77,6 +77,7 @@ Richard W.M. Jones <rjones@redhat.com> Robie Basak <robie.basak@canonical.com> Serge E. Hallyn <serge.hallyn@canonical.com> + Sergei Turchanov <turchanov@farpost.com> Stefan Berger <stefanb@us.ibm.com> Taizo ITO <taizo.ito@hde.co.jp> Taku Izumi <izumi.taku@jp.fujitsu.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-5.4.0/ChangeLog new/libvirt-python-5.5.0/ChangeLog --- old/libvirt-python-5.4.0/ChangeLog 2019-06-03 17:06:51.000000000 +0200 +++ new/libvirt-python-5.5.0/ChangeLog 2019-07-02 22:45:32.000000000 +0200 @@ -1,3 +1,61 @@ +2019-06-26 Sergei Turchanov <turchanov@farpost.com> + + Fix regression in lxcOpenNamespace + This fixes regression caused by the 1d39dbaf637db03f6e597ed56b96aa065710b4a1 + + fdlist[i] erroneously was replaced by fdlist[1] which caused + lxcOpenNamespace to return a list with identical elements. + + Reviewed-by: Ján Tomko <jtomko@redhat.com> + + +2019-06-20 Daniel P. Berrangé <berrange@redhat.com> + + Add new override file to dist + + +2019-06-20 Daniel P. Berrangé <berrange@redhat.com> + + Add missing impl of virNetworkListAllPorts + This API needs manual impl as the generator cannot cope + + + +2019-06-20 Daniel P. Berrangé <berrange@redhat.com> + + sanitytest: add some special cases for virNetworkPort APIs + + +2019-06-20 Daniel P. Berrangé <berrange@redhat.com> + + generator: fix naming of getter APIs for virNetworkPort + + +2019-06-20 Daniel P. Berrangé <berrange@redhat.com> + + Define virNetworkPortPtr typedef on old libvirt + + +2019-06-20 Daniel P. Berrangé <berrange@redhat.com> + + Fix syntax error with missing ; and too many ) + + +2019-06-20 Daniel P. Berrangé <berrange@redhat.com> + + Add support for virNetworkPort object & APIs + Define the various rules in the generator to wire up methods into the + virNetwork class and create the new virNetworkPort class. + + Reviewed-by: Pavel Hrdina <phrdina@redhat.com> + Reviewed-by: Ján Tomko <jtomko@redhat.com> + + +2019-06-03 Daniel Veillard <veillard@redhat.com> + + Release of Libvirt-python 5.4.0 + + 2019-05-04 Daniel Veillard <veillard@redhat.com> Release of libvirt-python 5.3.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-5.4.0/PKG-INFO new/libvirt-python-5.5.0/PKG-INFO --- old/libvirt-python-5.4.0/PKG-INFO 2019-06-03 17:06:51.000000000 +0200 +++ new/libvirt-python-5.5.0/PKG-INFO 2019-07-02 22:45:32.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: libvirt-python -Version: 5.4.0 +Version: 5.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-5.4.0/generator.py new/libvirt-python-5.5.0/generator.py --- old/libvirt-python-5.4.0/generator.py 2019-03-04 11:18:33.000000000 +0100 +++ new/libvirt-python-5.5.0/generator.py 2019-07-02 22:37:42.000000000 +0200 @@ -328,6 +328,10 @@ 'virNetwork *': ('O', "virNetwork", "virNetworkPtr", "virNetworkPtr"), 'const virNetwork *': ('O', "virNetwork", "virNetworkPtr", "virNetworkPtr"), + 'virNetworkPortPtr': ('O', "virNetworkPort", "virNetworkPortPtr", "virNetworkPortPtr"), + 'virNetworkPort *': ('O', "virNetworkPort", "virNetworkPortPtr", "virNetworkPortPtr"), + 'const virNetworkPort *': ('O', "virNetworkPort", "virNetworkPortPtr", "virNetworkPortPtr"), + 'virInterfacePtr': ('O', "virInterface", "virInterfacePtr", "virInterfacePtr"), 'virInterface *': ('O', "virInterface", "virInterfacePtr", "virInterfacePtr"), 'const virInterface *': ('O', "virInterface", "virInterfacePtr", "virInterfacePtr"), @@ -496,6 +500,8 @@ 'virConnectBaselineHypervisorCPU', 'virDomainGetLaunchSecurityInfo', 'virNodeGetSEVInfo', + 'virNetworkPortGetParameters', + 'virNetworkPortSetParameters', ) lxc_skip_impl = ( @@ -541,6 +547,7 @@ 'virConnectListAllStoragePools', # overridden in virConnect.py 'virStoragePoolListAllVolumes', # overridden in virStoragePool.py 'virConnectListAllNetworks', # overridden in virConnect.py + 'virNetworkListAllPorts', # overridden in virConnect.py 'virConnectListAllInterfaces', # overridden in virConnect.py 'virConnectListAllNodeDevices', # overridden in virConnect.py 'virConnectListAllNWFilters', # overridden in virConnect.py @@ -575,6 +582,7 @@ "virDomainRef", "virInterfaceRef", "virNetworkRef", + "virNetworkPortRef", "virNodeDeviceRef", "virSecretRef", "virNWFilterRef", @@ -590,6 +598,7 @@ "virDomainGetConnect", "virInterfaceGetConnect", "virNetworkGetConnect", + "virNetworkPortGetNetwork", "virSecretGetConnect", "virNWFilterGetConnect", "virStoragePoolGetConnect", @@ -1005,6 +1014,8 @@ "virDomain *": ("._o", "virDomain(self, _obj=%s)", "virDomain"), "virNetworkPtr": ("._o", "virNetwork(self, _obj=%s)", "virNetwork"), "virNetwork *": ("._o", "virNetwork(self, _obj=%s)", "virNetwork"), + "virNetworkPortPtr": ("._o", "virNetworkPort(self, _obj=%s)", "virNetworkPort"), + "virNetworkPort *": ("._o", "virNetworkPort(self, _obj=%s)", "virNetworkPort"), "virInterfacePtr": ("._o", "virInterface(self, _obj=%s)", "virInterface"), "virInterface *": ("._o", "virInterface(self, _obj=%s)", "virInterface"), "virStoragePoolPtr": ("._o", "virStoragePool(self, _obj=%s)", "virStoragePool"), @@ -1027,8 +1038,8 @@ "virDomainSnapshot *": ("._o", "virDomainSnapshot(self, _obj=%s)", "virDomainSnapshot"), } -primary_classes = ["virDomain", "virNetwork", "virInterface", - "virStoragePool", "virStorageVol", +primary_classes = ["virDomain", "virNetwork", "virNetworkPort", + "virInterface", "virStoragePool", "virStorageVol", "virConnect", "virNodeDevice", "virSecret", "virNWFilter", "virNWFilterBinding", "virStream", "virDomainSnapshot"] @@ -1036,6 +1047,7 @@ classes_destructors = { "virDomain": "virDomainFree", "virNetwork": "virNetworkFree", + "virNetworkPort": "virNetworkPortFree", "virInterface": "virInterfaceFree", "virStoragePool": "virStoragePoolFree", "virStorageVol": "virStorageVolFree", @@ -1111,6 +1123,12 @@ elif name[0:16] == "virNetworkLookup": func = name[3:] func = func[0:1].lower() + func[1:] + elif name[0:23] == "virNetworkPortCreateXML": + func = name[10:] + func = func[0:1].lower() + func[1:] + elif name[0:20] == "virNetworkPortLookup": + func = name[10:] + func = func[0:1].lower() + func[1:] elif name[0:18] == "virInterfaceDefine": func = name[3:] func = func[0:1].lower() + func[1:] @@ -1195,10 +1213,16 @@ elif name[0:9] == "virDomain": func = name[9:] func = func[0:1].lower() + func[1:] + elif name[0:17] == "virNetworkPortGet": + func = name[17:] + func = func[0:1].lower() + func[1:] elif name[0:13] == "virNetworkGet": func = name[13:] func = func[0:1].lower() + func[1:] func = func.replace("dHCP", "DHCP") + elif name[0:14] == "virNetworkPort": + func = name[14:] + func = func[0:1].lower() + func[1:] elif name[0:10] == "virNetwork": func = name[10:] func = func[0:1].lower() + func[1:] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-5.4.0/libvirt-lxc-override.c new/libvirt-python-5.5.0/libvirt-lxc-override.c --- old/libvirt-python-5.4.0/libvirt-lxc-override.c 2018-09-03 19:31:03.000000000 +0200 +++ new/libvirt-python-5.5.0/libvirt-lxc-override.c 2019-07-02 22:37:42.000000000 +0200 @@ -83,7 +83,7 @@ goto error; for (i = 0; i < c_retval; i++) - VIR_PY_LIST_APPEND_GOTO(py_retval, libvirt_intWrap(fdlist[1]), error); + VIR_PY_LIST_APPEND_GOTO(py_retval, libvirt_intWrap(fdlist[i]), error); cleanup: VIR_FREE(fdlist); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-5.4.0/libvirt-override-api.xml new/libvirt-python-5.5.0/libvirt-override-api.xml --- old/libvirt-python-5.4.0/libvirt-override-api.xml 2019-05-04 20:17:16.000000000 +0200 +++ new/libvirt-python-5.5.0/libvirt-override-api.xml 2019-07-02 22:37:42.000000000 +0200 @@ -764,5 +764,18 @@ <arg name='virttype' type='const char *' info='optional virtualization type'/> <arg name='flags' type='int' info='unused, always pass 0'/> </function> + <function name='virNetworkPortSetParameters' file='python'> + <info>Change the port tunables</info> + <return type='int' info='-1 in case of error, 0 in case of success.'/> + <arg name='port' type='virNetworkPortPtr' info='pointer to network port object'/> + <arg name='params' type='virTypedParameterPtr' info='pointer to tunable objects'/> + <arg name='flags' type='int' info='unused, always pass 0'/> + </function> + <function name='virNetworkPortGetParameters' file='python'> + <info>Get the port parameters</info> + <return type='char *' info='None in case of error, returns a dictionary of params'/> + <arg name='port' type='virNetworkPortPtr' info='pointer to network port object'/> + <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-5.4.0/libvirt-override-virNetwork.py new/libvirt-python-5.5.0/libvirt-override-virNetwork.py --- old/libvirt-python-5.4.0/libvirt-override-virNetwork.py 1970-01-01 01:00:00.000000000 +0100 +++ new/libvirt-python-5.5.0/libvirt-override-virNetwork.py 2019-07-02 22:37:42.000000000 +0200 @@ -0,0 +1,11 @@ + def listAllPorts(self, flags=0): + """List all domains and returns a list of domain objects""" + ret = libvirtmod.virNetworkListAllPorts(self._o, flags) + if ret is None: + raise libvirtError("virNetworkListAllPorts() failed", conn=self) + + retlist = list() + for domptr in ret: + retlist.append(virNetwork(self, _obj=domptr)) + + return retlist diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-5.4.0/libvirt-override.c new/libvirt-python-5.5.0/libvirt-override.c --- old/libvirt-python-5.4.0/libvirt-override.c 2019-04-03 09:44:53.000000000 +0200 +++ new/libvirt-python-5.5.0/libvirt-override.c 2019-07-02 22:37:42.000000000 +0200 @@ -9945,6 +9945,144 @@ } #endif /* LIBVIR_CHECK_VERSION(4, 5, 0) */ +#if LIBVIR_CHECK_VERSION(5, 5, 0) +static PyObject * +libvirt_virNetworkListAllPorts(PyObject *self ATTRIBUTE_UNUSED, + PyObject *args) +{ + PyObject *pyobj_conn; + PyObject *py_retval = NULL; + virNetworkPtr conn; + virNetworkPortPtr *doms = NULL; + int c_retval = 0; + ssize_t i; + unsigned int flags; + + if (!PyArg_ParseTuple(args, (char *)"OI:virNetworkListAllPorts", + &pyobj_conn, &flags)) + return NULL; + conn = (virNetworkPtr) PyvirNetwork_Get(pyobj_conn); + + LIBVIRT_BEGIN_ALLOW_THREADS; + c_retval = virNetworkListAllPorts(conn, &doms, 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_virNetworkPortPtrWrap(doms[i]), error); + /* python steals the pointer */ + doms[i] = NULL; + } + + cleanup: + for (i = 0; i < c_retval; i++) + if (doms[i]) + virNetworkPortFree(doms[i]); + VIR_FREE(doms); + return py_retval; + + error: + Py_CLEAR(py_retval); + goto cleanup; +} + +static PyObject * +libvirt_virNetworkPortSetParameters(PyObject *self ATTRIBUTE_UNUSED, + PyObject *args) +{ + virNetworkPortPtr port; + PyObject *pyobj_port, *info; + PyObject *ret = NULL; + int i_retval; + int nparams = 0; + Py_ssize_t size = 0; + unsigned int flags; + virTypedParameterPtr params = NULL, new_params = NULL; + + if (!PyArg_ParseTuple(args, + (char *)"OOI:virNetworkPortSetParameters", + &pyobj_port, &info, &flags)) + return NULL; + port = (virNetworkPortPtr) PyvirNetworkPort_Get(pyobj_port); + + if ((size = PyDict_Size(info)) < 0) + return NULL; + + if (size == 0) { + PyErr_Format(PyExc_LookupError, + "Need non-empty dictionary to set attributes"); + return NULL; + } + + LIBVIRT_BEGIN_ALLOW_THREADS; + i_retval = virNetworkPortGetParameters(port, ¶ms, &nparams, flags); + LIBVIRT_END_ALLOW_THREADS; + + if (i_retval < 0) + return VIR_PY_INT_FAIL; + + if (nparams == 0) { + PyErr_Format(PyExc_LookupError, + "Port has no settable attributes"); + return NULL; + } + + new_params = setPyVirTypedParameter(info, params, nparams); + if (!new_params) + goto cleanup; + + LIBVIRT_BEGIN_ALLOW_THREADS; + i_retval = virNetworkPortSetParameters(port, new_params, size, flags); + LIBVIRT_END_ALLOW_THREADS; + + if (i_retval < 0) { + ret = VIR_PY_INT_FAIL; + goto cleanup; + } + + ret = VIR_PY_INT_SUCCESS; + + cleanup: + virTypedParamsFree(params, nparams); + virTypedParamsFree(new_params, size); + return ret; +} + +static PyObject * +libvirt_virNetworkPortGetParameters(PyObject *self ATTRIBUTE_UNUSED, + PyObject *args) +{ + PyObject *pyobj_port; + virNetworkPortPtr port; + virTypedParameterPtr params = NULL; + int nparams = 0; + PyObject *dict = NULL; + unsigned int flags; + int rc; + + if (!PyArg_ParseTuple(args, (char *) "OI:virNetworkPortGetParameters", + &pyobj_port, &flags)) + return NULL; + port = (virNetworkPortPtr) PyvirNetworkPort_Get(pyobj_port); + + LIBVIRT_BEGIN_ALLOW_THREADS; + rc = virNetworkPortGetParameters(port, ¶ms, &nparams, flags); + LIBVIRT_END_ALLOW_THREADS; + + if (rc < 0) + return VIR_PY_NONE; + + dict = getPyVirTypedParameter(params, nparams); + + virTypedParamsFree(params, nparams); + return dict; +} +#endif /* LIBVIR_CHECK_VERSION(5, 5, 0) */ /************************************************************************ * * @@ -10192,6 +10330,11 @@ {(char *) "virDomainGetLaunchSecurityInfo", libvirt_virDomainGetLaunchSecurityInfo, METH_VARARGS, NULL}, {(char *) "virNodeGetSEVInfo", libvirt_virNodeGetSEVInfo, METH_VARARGS, NULL}, #endif /* LIBVIR_CHECK_VERSION(4, 5, 0) */ +#if LIBVIR_CHECK_VERSION(5, 5, 0) + {(char *) "virNetworkListAllPorts", libvirt_virNetworkListAllPorts, METH_VARARGS, NULL}, + {(char *) "virNetworkPortSetParameters", libvirt_virNetworkPortSetParameters, METH_VARARGS, NULL}, + {(char *) "virNetworkPortGetParameters", libvirt_virNetworkPortGetParameters, METH_VARARGS, NULL}, +#endif /* LIBVIR_CHECK_VERSION(5, 5, 0) */ {NULL, NULL, 0, NULL} }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-5.4.0/libvirt-python.spec new/libvirt-python-5.5.0/libvirt-python.spec --- old/libvirt-python-5.4.0/libvirt-python.spec 2019-06-03 17:06:51.000000000 +0200 +++ new/libvirt-python-5.5.0/libvirt-python.spec 2019-07-02 22:45:32.000000000 +0200 @@ -33,7 +33,7 @@ Summary: The libvirt virtualization API python2 binding Name: libvirt-python -Version: 5.4.0 +Version: 5.5.0 Release: 1%{?dist} 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-5.4.0/sanitytest.py new/libvirt-python-5.5.0/sanitytest.py --- old/libvirt-python-5.4.0/sanitytest.py 2018-09-03 19:31:03.000000000 +0200 +++ new/libvirt-python-5.5.0/sanitytest.py 2019-07-02 22:37:42.000000000 +0200 @@ -220,7 +220,7 @@ # The object lifecycle APIs are irrelevant since they're # used inside the object constructors/destructors. - if func in ["Ref", "Free", "New", "GetConnect", "GetDomain"]: + if func in ["Ref", "Free", "New", "GetConnect", "GetDomain", "GetNetwork"]: if klass == "virStream" and func == "New": klass = "virConnect" func = "NewStream" @@ -272,6 +272,9 @@ elif klass == "virStorageVol" and func in ["StorageVolCreateXMLFrom", "StorageVolCreateXML"]: klass = "virStoragePool" func = func[10:] + elif klass == "virNetworkPort": + klass = "virNetwork" + func = func[7:] elif func == "StoragePoolLookupByVolume": klass = "virStorageVol" elif func == "StorageVolLookupByName": diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-5.4.0/setup.py new/libvirt-python-5.5.0/setup.py --- old/libvirt-python-5.4.0/setup.py 2019-06-03 17:06:48.000000000 +0200 +++ new/libvirt-python-5.5.0/setup.py 2019-07-02 22:22:06.000000000 +0200 @@ -334,7 +334,7 @@ _c_modules, _py_modules = get_module_lists() setup(name = 'libvirt-python', - version = '5.4.0', + version = '5.5.0', url = 'http://www.libvirt.org', maintainer = 'Libvirt Maintainers', maintainer_email = 'libvir-list@redhat.com', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-5.4.0/typewrappers.c new/libvirt-python-5.5.0/typewrappers.c --- old/libvirt-python-5.4.0/typewrappers.c 2018-09-03 19:31:03.000000000 +0200 +++ new/libvirt-python-5.5.0/typewrappers.c 2019-07-02 22:37:42.000000000 +0200 @@ -452,6 +452,19 @@ } PyObject * +libvirt_virNetworkPortPtrWrap(virNetworkPortPtr node) +{ + PyObject *ret; + + if (node == NULL) { + return VIR_PY_NONE; + } + + ret = libvirt_buildPyObject(node, "virNetworkPortPtr", NULL); + return ret; +} + +PyObject * libvirt_virInterfacePtrWrap(virInterfacePtr node) { PyObject *ret; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libvirt-python-5.4.0/typewrappers.h new/libvirt-python-5.5.0/typewrappers.h --- old/libvirt-python-5.4.0/typewrappers.h 2018-09-03 19:31:03.000000000 +0200 +++ new/libvirt-python-5.5.0/typewrappers.h 2019-07-02 22:37:42.000000000 +0200 @@ -30,6 +30,9 @@ #if !LIBVIR_CHECK_VERSION(4, 5, 0) typedef struct _virNWFilterBinding *virNWFilterBindingPtr; #endif +#if !LIBVIR_CHECK_VERSION(5, 5, 0) +typedef struct _virNetworkPort *virNetworkPortPtr; +#endif #define PyvirConnect_Get(v) (((v) == Py_None) ? NULL : \ (((PyvirConnect_Object *)(v))->obj)) @@ -58,6 +61,15 @@ } PyvirNetwork_Object; +#define PyvirNetworkPort_Get(v) (((v) == Py_None) ? NULL : \ + (((PyvirNetworkPort_Object *)(v))->obj)) + +typedef struct { + PyObject_HEAD + virNetworkPortPtr obj; +} PyvirNetworkPort_Object; + + #define PyvirInterface_Get(v) (((v) == Py_None) ? NULL : \ (((PyvirInterface_Object *)(v))->obj)) @@ -192,6 +204,7 @@ PyObject * libvirt_virConnectPtrWrap(virConnectPtr node); PyObject * libvirt_virDomainPtrWrap(virDomainPtr node); PyObject * libvirt_virNetworkPtrWrap(virNetworkPtr node); +PyObject * libvirt_virNetworkPortPtrWrap(virNetworkPortPtr node); PyObject * libvirt_virInterfacePtrWrap(virInterfacePtr node); PyObject * libvirt_virStoragePoolPtrWrap(virStoragePoolPtr node); PyObject * libvirt_virStorageVolPtrWrap(virStorageVolPtr node);