Re: [libvirt] [PATCH] Add overrides for network port UUID getter/lookup methods

2020-01-03 Thread Daniel P . Berrangé
On Thu, Jan 02, 2020 at 07:46:40PM +0100, Fabiano Fidêncio wrote:
> [snip]
> 
> > +static PyObject *
> > +libvirt_virNetworkPortLookupByUUID(PyObject *self ATTRIBUTE_UNUSED,
> > +   PyObject *args)
> > +{
> > +virNetworkPortPtr c_retval;
> > +virNetworkPtr net;
> > +PyObject *pyobj_net;
> > +unsigned char *uuid;
> > +int len;
> > +
> > +if (!PyArg_ParseTuple(args, (char *)"Oz#:virNetworkPortLookupByUUID",
> > +  _net, , ))
> > +return NULL;
> > +net = (virNetworkPtr) PyvirNetwork_Get(pyobj_net);
> > +
> 
> Shouldn't we also check whether net is NULL here?

We don't because this C code is only called from our Python generated
stub which will always pass a non-NULL pointer. In any case.

> 
> > +if ((uuid == NULL) || (len != VIR_UUID_BUFLEN))
> > +return VIR_PY_NONE;
> > +
> > +LIBVIRT_BEGIN_ALLOW_THREADS;
> > +c_retval = virNetworkPortLookupByUUID(net, uuid);

...this method will report an error if "net" is NULL.

> > +LIBVIRT_END_ALLOW_THREADS;
> > +
> > +return libvirt_virNetworkPortPtrWrap((virNetworkPortPtr) c_retval);
> > +}
> > +
> 
> [snip]
> 
> With that fixed, Reviewed-by: Fabiano Fidêncio 
> 

Regards,
Daniel
-- 
|: https://berrange.com  -o-https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o-https://fstop138.berrange.com :|
|: https://entangle-photo.org-o-https://www.instagram.com/dberrange :|

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Re: [libvirt] [PATCH] Add overrides for network port UUID getter/lookup methods

2020-01-02 Thread Fabiano Fidêncio
[snip]

> +static PyObject *
> +libvirt_virNetworkPortLookupByUUID(PyObject *self ATTRIBUTE_UNUSED,
> +   PyObject *args)
> +{
> +virNetworkPortPtr c_retval;
> +virNetworkPtr net;
> +PyObject *pyobj_net;
> +unsigned char *uuid;
> +int len;
> +
> +if (!PyArg_ParseTuple(args, (char *)"Oz#:virNetworkPortLookupByUUID",
> +  _net, , ))
> +return NULL;
> +net = (virNetworkPtr) PyvirNetwork_Get(pyobj_net);
> +

Shouldn't we also check whether net is NULL here?

> +if ((uuid == NULL) || (len != VIR_UUID_BUFLEN))
> +return VIR_PY_NONE;
> +
> +LIBVIRT_BEGIN_ALLOW_THREADS;
> +c_retval = virNetworkPortLookupByUUID(net, uuid);
> +LIBVIRT_END_ALLOW_THREADS;
> +
> +return libvirt_virNetworkPortPtrWrap((virNetworkPortPtr) c_retval);
> +}
> +

[snip]

With that fixed, Reviewed-by: Fabiano Fidêncio 


--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

[libvirt] [PATCH] Add overrides for network port UUID getter/lookup methods

2020-01-02 Thread Daniel P . Berrangé
The generator creates broken code for all these methods.

Signed-off-by: Daniel P. Berrangé 
---
 generator.py |  3 ++
 libvirt-override-api.xml | 16 
 libvirt-override.c   | 83 
 3 files changed, 102 insertions(+)

diff --git a/generator.py b/generator.py
index cba9d47..426f007 100755
--- a/generator.py
+++ b/generator.py
@@ -430,6 +430,9 @@ skip_impl = (
 'virNetworkGetUUID',
 'virNetworkGetUUIDString',
 'virNetworkLookupByUUID',
+'virNetworkPortGetUUID',
+'virNetworkPortGetUUIDString',
+'virNetworkPortLookupByUUID',
 'virDomainGetAutostart',
 'virNetworkGetAutostart',
 'virDomainBlockStats',
diff --git a/libvirt-override-api.xml b/libvirt-override-api.xml
index 7a0d4c5..4ab403c 100644
--- a/libvirt-override-api.xml
+++ b/libvirt-override-api.xml
@@ -64,6 +64,12 @@
   
   
 
+
+  Try to lookup a port on the given network based on its UUID.
+  
+  
+  
+
 
   Extract information about a domain. Note that if the connection 
used to get the domain is limited only a partial set of the information can be 
extracted.
   
@@ -153,6 +159,16 @@
   
   
 
+
+  Extract the UUID unique Identifier of a network port.
+  
+  
+
+
+  Fetch globally unique ID of the network port as a string.
+  
+  
+
 
   Extract the UUID unique Identifier of a storage pool.
   
diff --git a/libvirt-override.c b/libvirt-override.c
index 4e4c00a..2b39ace 100644
--- a/libvirt-override.c
+++ b/libvirt-override.c
@@ -10185,6 +10185,86 @@ libvirt_virNetworkPortGetParameters(PyObject *self 
ATTRIBUTE_UNUSED,
 virTypedParamsFree(params, nparams);
 return dict;
 }
+
+static PyObject *
+libvirt_virNetworkPortGetUUID(PyObject *self ATTRIBUTE_UNUSED,
+  PyObject *args)
+{
+unsigned char uuid[VIR_UUID_BUFLEN];
+virNetworkPortPtr port;
+PyObject *pyobj_port;
+int c_retval;
+
+if (!PyArg_ParseTuple(args, (char *)"O:virNetworkPortGetUUID", 
_port))
+return NULL;
+port = (virNetworkPortPtr) PyvirNetworkPort_Get(pyobj_port);
+
+if (port == NULL)
+return VIR_PY_NONE;
+
+LIBVIRT_BEGIN_ALLOW_THREADS;
+c_retval = virNetworkPortGetUUID(port, [0]);
+LIBVIRT_END_ALLOW_THREADS;
+
+if (c_retval < 0)
+return VIR_PY_NONE;
+
+return libvirt_charPtrSizeWrap((char *) [0], VIR_UUID_BUFLEN);
+}
+
+static PyObject *
+libvirt_virNetworkPortGetUUIDString(PyObject *self ATTRIBUTE_UNUSED,
+PyObject *args)
+{
+char uuidstr[VIR_UUID_STRING_BUFLEN];
+virNetworkPortPtr port;
+PyObject *pyobj_port;
+int c_retval;
+
+if (!PyArg_ParseTuple(args, (char *)"O:virNetworkPortGetUUIDString",
+  _port))
+return NULL;
+port = (virNetworkPortPtr) PyvirNetworkPort_Get(pyobj_port);
+
+if (port == NULL)
+return VIR_PY_NONE;
+
+LIBVIRT_BEGIN_ALLOW_THREADS;
+c_retval = virNetworkPortGetUUIDString(port, [0]);
+LIBVIRT_END_ALLOW_THREADS;
+
+if (c_retval < 0)
+return VIR_PY_NONE;
+
+return libvirt_constcharPtrWrap((char *) [0]);
+}
+
+static PyObject *
+libvirt_virNetworkPortLookupByUUID(PyObject *self ATTRIBUTE_UNUSED,
+   PyObject *args)
+{
+virNetworkPortPtr c_retval;
+virNetworkPtr net;
+PyObject *pyobj_net;
+unsigned char *uuid;
+int len;
+
+if (!PyArg_ParseTuple(args, (char *)"Oz#:virNetworkPortLookupByUUID",
+  _net, , ))
+return NULL;
+net = (virNetworkPtr) PyvirNetwork_Get(pyobj_net);
+
+if ((uuid == NULL) || (len != VIR_UUID_BUFLEN))
+return VIR_PY_NONE;
+
+LIBVIRT_BEGIN_ALLOW_THREADS;
+c_retval = virNetworkPortLookupByUUID(net, uuid);
+LIBVIRT_END_ALLOW_THREADS;
+
+return libvirt_virNetworkPortPtrWrap((virNetworkPortPtr) c_retval);
+}
+
+
 #endif /* LIBVIR_CHECK_VERSION(5, 5, 0) */
 
 #if LIBVIR_CHECK_VERSION(5, 7, 0)
@@ -10535,6 +10615,9 @@ static PyMethodDef libvirtMethods[] = {
 {(char *) "virNetworkListAllPorts", libvirt_virNetworkListAllPorts, 
METH_VARARGS, NULL},
 {(char *) "virNetworkPortSetParameters", 
libvirt_virNetworkPortSetParameters, METH_VARARGS, NULL},
 {(char *) "virNetworkPortGetParameters", 
libvirt_virNetworkPortGetParameters, METH_VARARGS, NULL},
+{(char *) "virNetworkPortGetUUID", libvirt_virNetworkPortGetUUID, 
METH_VARARGS, NULL},
+{(char *) "virNetworkPortGetUUIDString", 
libvirt_virNetworkPortGetUUIDString, METH_VARARGS, NULL},
+{(char *) "virNetworkPortLookupByUUID", 
libvirt_virNetworkPortLookupByUUID, METH_VARARGS, NULL},
 #endif /* LIBVIR_CHECK_VERSION(5, 5, 0) */
 #if LIBVIR_CHECK_VERSION(5, 7, 0)
 {(char *) "virDomainGetGuestInfo", libvirt_virDomainGetGuestInfo, 
METH_VARARGS, NULL},
-- 
2.24.1

--
libvir-list mailing list
libvir-list@redhat.com