mirror of
https://gitlab.com/libvirt/libvirt-python.git
synced 2025-08-04 12:21:57 +03:00
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> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
25
generator.py
25
generator.py
@ -328,6 +328,10 @@ py_types = {
|
|||||||
'virNetwork *': ('O', "virNetwork", "virNetworkPtr", "virNetworkPtr"),
|
'virNetwork *': ('O', "virNetwork", "virNetworkPtr", "virNetworkPtr"),
|
||||||
'const 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"),
|
'virInterfacePtr': ('O', "virInterface", "virInterfacePtr", "virInterfacePtr"),
|
||||||
'virInterface *': ('O', "virInterface", "virInterfacePtr", "virInterfacePtr"),
|
'virInterface *': ('O', "virInterface", "virInterfacePtr", "virInterfacePtr"),
|
||||||
'const virInterface *': ('O', "virInterface", "virInterfacePtr", "virInterfacePtr"),
|
'const virInterface *': ('O', "virInterface", "virInterfacePtr", "virInterfacePtr"),
|
||||||
@ -496,6 +500,8 @@ skip_impl = (
|
|||||||
'virConnectBaselineHypervisorCPU',
|
'virConnectBaselineHypervisorCPU',
|
||||||
'virDomainGetLaunchSecurityInfo',
|
'virDomainGetLaunchSecurityInfo',
|
||||||
'virNodeGetSEVInfo',
|
'virNodeGetSEVInfo',
|
||||||
|
'virNetworkPortGetParameters',
|
||||||
|
'virNetworkPortSetParameters',
|
||||||
)
|
)
|
||||||
|
|
||||||
lxc_skip_impl = (
|
lxc_skip_impl = (
|
||||||
@ -541,6 +547,7 @@ skip_function = (
|
|||||||
'virConnectListAllStoragePools', # overridden in virConnect.py
|
'virConnectListAllStoragePools', # overridden in virConnect.py
|
||||||
'virStoragePoolListAllVolumes', # overridden in virStoragePool.py
|
'virStoragePoolListAllVolumes', # overridden in virStoragePool.py
|
||||||
'virConnectListAllNetworks', # overridden in virConnect.py
|
'virConnectListAllNetworks', # overridden in virConnect.py
|
||||||
|
'virNetworkListAllPorts', # overridden in virConnect.py
|
||||||
'virConnectListAllInterfaces', # overridden in virConnect.py
|
'virConnectListAllInterfaces', # overridden in virConnect.py
|
||||||
'virConnectListAllNodeDevices', # overridden in virConnect.py
|
'virConnectListAllNodeDevices', # overridden in virConnect.py
|
||||||
'virConnectListAllNWFilters', # overridden in virConnect.py
|
'virConnectListAllNWFilters', # overridden in virConnect.py
|
||||||
@ -575,6 +582,7 @@ skip_function = (
|
|||||||
"virDomainRef",
|
"virDomainRef",
|
||||||
"virInterfaceRef",
|
"virInterfaceRef",
|
||||||
"virNetworkRef",
|
"virNetworkRef",
|
||||||
|
"virNetworkPortRef",
|
||||||
"virNodeDeviceRef",
|
"virNodeDeviceRef",
|
||||||
"virSecretRef",
|
"virSecretRef",
|
||||||
"virNWFilterRef",
|
"virNWFilterRef",
|
||||||
@ -590,6 +598,7 @@ skip_function = (
|
|||||||
"virDomainGetConnect",
|
"virDomainGetConnect",
|
||||||
"virInterfaceGetConnect",
|
"virInterfaceGetConnect",
|
||||||
"virNetworkGetConnect",
|
"virNetworkGetConnect",
|
||||||
|
"virNetworkPortGetNetwork",
|
||||||
"virSecretGetConnect",
|
"virSecretGetConnect",
|
||||||
"virNWFilterGetConnect",
|
"virNWFilterGetConnect",
|
||||||
"virStoragePoolGetConnect",
|
"virStoragePoolGetConnect",
|
||||||
@ -1005,6 +1014,8 @@ classes_type = {
|
|||||||
"virDomain *": ("._o", "virDomain(self, _obj=%s)", "virDomain"),
|
"virDomain *": ("._o", "virDomain(self, _obj=%s)", "virDomain"),
|
||||||
"virNetworkPtr": ("._o", "virNetwork(self, _obj=%s)", "virNetwork"),
|
"virNetworkPtr": ("._o", "virNetwork(self, _obj=%s)", "virNetwork"),
|
||||||
"virNetwork *": ("._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"),
|
"virInterfacePtr": ("._o", "virInterface(self, _obj=%s)", "virInterface"),
|
||||||
"virInterface *": ("._o", "virInterface(self, _obj=%s)", "virInterface"),
|
"virInterface *": ("._o", "virInterface(self, _obj=%s)", "virInterface"),
|
||||||
"virStoragePoolPtr": ("._o", "virStoragePool(self, _obj=%s)", "virStoragePool"),
|
"virStoragePoolPtr": ("._o", "virStoragePool(self, _obj=%s)", "virStoragePool"),
|
||||||
@ -1027,8 +1038,8 @@ classes_type = {
|
|||||||
"virDomainSnapshot *": ("._o", "virDomainSnapshot(self, _obj=%s)", "virDomainSnapshot"),
|
"virDomainSnapshot *": ("._o", "virDomainSnapshot(self, _obj=%s)", "virDomainSnapshot"),
|
||||||
}
|
}
|
||||||
|
|
||||||
primary_classes = ["virDomain", "virNetwork", "virInterface",
|
primary_classes = ["virDomain", "virNetwork", "virNetworkPort",
|
||||||
"virStoragePool", "virStorageVol",
|
"virInterface", "virStoragePool", "virStorageVol",
|
||||||
"virConnect", "virNodeDevice", "virSecret",
|
"virConnect", "virNodeDevice", "virSecret",
|
||||||
"virNWFilter", "virNWFilterBinding",
|
"virNWFilter", "virNWFilterBinding",
|
||||||
"virStream", "virDomainSnapshot"]
|
"virStream", "virDomainSnapshot"]
|
||||||
@ -1036,6 +1047,7 @@ primary_classes = ["virDomain", "virNetwork", "virInterface",
|
|||||||
classes_destructors = {
|
classes_destructors = {
|
||||||
"virDomain": "virDomainFree",
|
"virDomain": "virDomainFree",
|
||||||
"virNetwork": "virNetworkFree",
|
"virNetwork": "virNetworkFree",
|
||||||
|
"virNetworkPort": "virNetworkPortFree",
|
||||||
"virInterface": "virInterfaceFree",
|
"virInterface": "virInterfaceFree",
|
||||||
"virStoragePool": "virStoragePoolFree",
|
"virStoragePool": "virStoragePoolFree",
|
||||||
"virStorageVol": "virStorageVolFree",
|
"virStorageVol": "virStorageVolFree",
|
||||||
@ -1111,6 +1123,12 @@ def nameFixup(name, classe, type, file):
|
|||||||
elif name[0:16] == "virNetworkLookup":
|
elif name[0:16] == "virNetworkLookup":
|
||||||
func = name[3:]
|
func = name[3:]
|
||||||
func = func[0:1].lower() + func[1:]
|
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":
|
elif name[0:18] == "virInterfaceDefine":
|
||||||
func = name[3:]
|
func = name[3:]
|
||||||
func = func[0:1].lower() + func[1:]
|
func = func[0:1].lower() + func[1:]
|
||||||
@ -1199,6 +1217,9 @@ def nameFixup(name, classe, type, file):
|
|||||||
func = name[13:]
|
func = name[13:]
|
||||||
func = func[0:1].lower() + func[1:]
|
func = func[0:1].lower() + func[1:]
|
||||||
func = func.replace("dHCP", "DHCP")
|
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":
|
elif name[0:10] == "virNetwork":
|
||||||
func = name[10:]
|
func = name[10:]
|
||||||
func = func[0:1].lower() + func[1:]
|
func = func[0:1].lower() + func[1:]
|
||||||
|
@ -764,5 +764,18 @@
|
|||||||
<arg name='virttype' type='const char *' info='optional virtualization type'/>
|
<arg name='virttype' type='const char *' info='optional virtualization type'/>
|
||||||
<arg name='flags' type='int' info='unused, always pass 0'/>
|
<arg name='flags' type='int' info='unused, always pass 0'/>
|
||||||
</function>
|
</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>
|
</symbols>
|
||||||
</api>
|
</api>
|
||||||
|
@ -9945,6 +9945,99 @@ libvirt_virNodeGetSEVInfo(PyObject *self ATTRIBUTE_UNUSED,
|
|||||||
}
|
}
|
||||||
#endif /* LIBVIR_CHECK_VERSION(4, 5, 0) */
|
#endif /* LIBVIR_CHECK_VERSION(4, 5, 0) */
|
||||||
|
|
||||||
|
#if LIBVIR_CHECK_VERSION(5, 5, 0)
|
||||||
|
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 +10285,10 @@ static PyMethodDef libvirtMethods[] = {
|
|||||||
{(char *) "virDomainGetLaunchSecurityInfo", libvirt_virDomainGetLaunchSecurityInfo, METH_VARARGS, NULL},
|
{(char *) "virDomainGetLaunchSecurityInfo", libvirt_virDomainGetLaunchSecurityInfo, METH_VARARGS, NULL},
|
||||||
{(char *) "virNodeGetSEVInfo", libvirt_virNodeGetSEVInfo, METH_VARARGS, NULL},
|
{(char *) "virNodeGetSEVInfo", libvirt_virNodeGetSEVInfo, METH_VARARGS, NULL},
|
||||||
#endif /* LIBVIR_CHECK_VERSION(4, 5, 0) */
|
#endif /* LIBVIR_CHECK_VERSION(4, 5, 0) */
|
||||||
|
#if LIBVIR_CHECK_VERSION(5, 5, 0)
|
||||||
|
{(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}
|
{NULL, NULL, 0, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -451,6 +451,19 @@ libvirt_virNetworkPtrWrap(virNetworkPtr node)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PyObject *
|
||||||
|
libvirt_virNetworkPortPtrWrap(virNetworkPortPtr node)
|
||||||
|
{
|
||||||
|
PyObject *ret;
|
||||||
|
|
||||||
|
if (node == NULL) {
|
||||||
|
return VIR_PY_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = libvirt_buildPyObject(node, "virNetworkPortPtr", NULL);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
PyObject *
|
PyObject *
|
||||||
libvirt_virInterfacePtrWrap(virInterfacePtr node)
|
libvirt_virInterfacePtrWrap(virInterfacePtr node)
|
||||||
{
|
{
|
||||||
|
@ -58,6 +58,15 @@ typedef struct {
|
|||||||
} PyvirNetwork_Object;
|
} 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 : \
|
#define PyvirInterface_Get(v) (((v) == Py_None) ? NULL : \
|
||||||
(((PyvirInterface_Object *)(v))->obj))
|
(((PyvirInterface_Object *)(v))->obj))
|
||||||
|
|
||||||
@ -192,6 +201,7 @@ int libvirt_charPtrSizeUnwrap(PyObject *obj, char **str, Py_ssize_t *size);
|
|||||||
PyObject * libvirt_virConnectPtrWrap(virConnectPtr node);
|
PyObject * libvirt_virConnectPtrWrap(virConnectPtr node);
|
||||||
PyObject * libvirt_virDomainPtrWrap(virDomainPtr node);
|
PyObject * libvirt_virDomainPtrWrap(virDomainPtr node);
|
||||||
PyObject * libvirt_virNetworkPtrWrap(virNetworkPtr node);
|
PyObject * libvirt_virNetworkPtrWrap(virNetworkPtr node);
|
||||||
|
PyObject * libvirt_virNetworkPortPtrWrap(virNetworkPortPtr node);
|
||||||
PyObject * libvirt_virInterfacePtrWrap(virInterfacePtr node);
|
PyObject * libvirt_virInterfacePtrWrap(virInterfacePtr node);
|
||||||
PyObject * libvirt_virStoragePoolPtrWrap(virStoragePoolPtr node);
|
PyObject * libvirt_virStoragePoolPtrWrap(virStoragePoolPtr node);
|
||||||
PyObject * libvirt_virStorageVolPtrWrap(virStorageVolPtr node);
|
PyObject * libvirt_virStorageVolPtrWrap(virStorageVolPtr node);
|
||||||
|
Reference in New Issue
Block a user