There is no need to have dynamic allocation every time the API
is called. Rewrites commit <314b2346df>.
Signed-off-by: Pavel Hrdina <phrdina(a)redhat.com>
---
libvirt-override.c | 149 ++++++++++++-----------------------------------------
libvirt-utils.h | 2 +
2 files changed, 34 insertions(+), 117 deletions(-)
diff --git a/libvirt-override.c b/libvirt-override.c
index dba42d4..ab4232f 100644
--- a/libvirt-override.c
+++ b/libvirt-override.c
@@ -7739,6 +7739,25 @@ libvirt_virDomainMigrateGetMaxDowntime(PyObject *self
ATTRIBUTE_UNUSED,
#endif /* LIBVIR_CHECK_VERSION(3, 7, 0) */
#if LIBVIR_CHECK_VERSION(1, 1, 0)
+static virPyTypedParamsHint virPyDomainMigrate3Params[] = {
+ { VIR_MIGRATE_PARAM_URI, VIR_TYPED_PARAM_STRING },
+ { VIR_MIGRATE_PARAM_DEST_NAME, VIR_TYPED_PARAM_STRING },
+ { VIR_MIGRATE_PARAM_DEST_XML, VIR_TYPED_PARAM_STRING },
+ { VIR_MIGRATE_PARAM_GRAPHICS_URI, VIR_TYPED_PARAM_STRING },
+ { VIR_MIGRATE_PARAM_BANDWIDTH, VIR_TYPED_PARAM_ULLONG },
+ { VIR_MIGRATE_PARAM_LISTEN_ADDRESS, VIR_TYPED_PARAM_STRING },
+ { VIR_MIGRATE_PARAM_DISKS_PORT, VIR_TYPED_PARAM_INT },
+ { VIR_MIGRATE_PARAM_COMPRESSION, VIR_TYPED_PARAM_STRING },
+ { VIR_MIGRATE_PARAM_COMPRESSION_MT_DTHREADS, VIR_TYPED_PARAM_INT },
+ { VIR_MIGRATE_PARAM_COMPRESSION_MT_LEVEL, VIR_TYPED_PARAM_INT },
+ { VIR_MIGRATE_PARAM_COMPRESSION_MT_THREADS, VIR_TYPED_PARAM_INT },
+ { VIR_MIGRATE_PARAM_COMPRESSION_XBZRLE_CACHE, VIR_TYPED_PARAM_ULLONG },
+ { VIR_MIGRATE_PARAM_PERSIST_XML, VIR_TYPED_PARAM_STRING },
+ { VIR_MIGRATE_PARAM_AUTO_CONVERGE_INITIAL, VIR_TYPED_PARAM_INT },
+ { VIR_MIGRATE_PARAM_AUTO_CONVERGE_INCREMENT, VIR_TYPED_PARAM_INT },
+};
+
+
static PyObject *
libvirt_virDomainMigrate3(PyObject *self ATTRIBUTE_UNUSED,
PyObject *args)
@@ -7750,9 +7769,7 @@ libvirt_virDomainMigrate3(PyObject *self ATTRIBUTE_UNUSED,
PyObject *dict;
unsigned int flags;
virTypedParameterPtr params;
- virPyTypedParamsHintPtr hparams;
int nparams = 0;
- int nhparams = 15;
virDomainPtr ddom = NULL;
if (!PyArg_ParseTuple(args, (char *) "OOOI:virDomainMigrate3",
@@ -7762,55 +7779,9 @@ libvirt_virDomainMigrate3(PyObject *self ATTRIBUTE_UNUSED,
domain = (virDomainPtr) PyvirDomain_Get(pyobj_domain);
dconn = (virConnectPtr) PyvirConnect_Get(pyobj_dconn);
- hparams = malloc(sizeof(virPyTypedParamsHint) * nhparams);
- hparams[0].name = VIR_MIGRATE_PARAM_URI;
- hparams[0].type = VIR_TYPED_PARAM_STRING;
-
- hparams[1].name = VIR_MIGRATE_PARAM_DEST_NAME;
- hparams[1].type = VIR_TYPED_PARAM_STRING;
-
- hparams[2].name = VIR_MIGRATE_PARAM_DEST_XML;
- hparams[2].type = VIR_TYPED_PARAM_STRING;
-
- hparams[3].name = VIR_MIGRATE_PARAM_GRAPHICS_URI;
- hparams[3].type = VIR_TYPED_PARAM_STRING;
-
- hparams[4].name = VIR_MIGRATE_PARAM_BANDWIDTH;
- hparams[4].type = VIR_TYPED_PARAM_ULLONG;
-
- hparams[5].name = VIR_MIGRATE_PARAM_LISTEN_ADDRESS;
- hparams[5].type = VIR_TYPED_PARAM_STRING;
-
- hparams[6].name = VIR_MIGRATE_PARAM_DISKS_PORT;
- hparams[6].type = VIR_TYPED_PARAM_INT;
-
- hparams[7].name = VIR_MIGRATE_PARAM_COMPRESSION;
- hparams[7].type = VIR_TYPED_PARAM_STRING;
-
- hparams[8].name = VIR_MIGRATE_PARAM_COMPRESSION_MT_DTHREADS;
- hparams[8].type = VIR_TYPED_PARAM_INT;
-
- hparams[9].name = VIR_MIGRATE_PARAM_COMPRESSION_MT_LEVEL;
- hparams[9].type = VIR_TYPED_PARAM_INT;
-
- hparams[10].name = VIR_MIGRATE_PARAM_COMPRESSION_MT_THREADS;
- hparams[10].type = VIR_TYPED_PARAM_INT;
-
- hparams[11].name = VIR_MIGRATE_PARAM_COMPRESSION_XBZRLE_CACHE;
- hparams[11].type = VIR_TYPED_PARAM_ULLONG;
-
- hparams[12].name = VIR_MIGRATE_PARAM_PERSIST_XML;
- hparams[12].type = VIR_TYPED_PARAM_STRING;
-
- hparams[13].name = VIR_MIGRATE_PARAM_AUTO_CONVERGE_INITIAL;
- hparams[13].type = VIR_TYPED_PARAM_INT;
-
- hparams[14].name = VIR_MIGRATE_PARAM_AUTO_CONVERGE_INCREMENT;
- hparams[14].type = VIR_TYPED_PARAM_INT;
-
if (virPyDictToTypedParams(dict, ¶ms, &nparams,
- hparams, nhparams) < 0) {
- free(hparams);
+ virPyDomainMigrate3Params,
+ VIR_N_ELEMENTS(virPyDomainMigrate3Params)) < 0) {
return NULL;
}
@@ -7819,7 +7790,6 @@ libvirt_virDomainMigrate3(PyObject *self ATTRIBUTE_UNUSED,
LIBVIRT_END_ALLOW_THREADS;
virTypedParamsFree(params, nparams);
- free(hparams);
return libvirt_virDomainPtrWrap(ddom);
}
@@ -7833,9 +7803,7 @@ libvirt_virDomainMigrateToURI3(PyObject *self ATTRIBUTE_UNUSED,
PyObject *dict;
unsigned int flags;
virTypedParameterPtr params;
- virPyTypedParamsHintPtr hparams;
int nparams;
- int nhparams = 15;
int ret = -1;
if (!PyArg_ParseTuple(args, (char *) "OzOI:virDomainMigrate3",
@@ -7844,55 +7812,9 @@ libvirt_virDomainMigrateToURI3(PyObject *self ATTRIBUTE_UNUSED,
domain = (virDomainPtr) PyvirDomain_Get(pyobj_domain);
- hparams = malloc(sizeof(virPyTypedParamsHint) * nhparams);
- hparams[0].name = VIR_MIGRATE_PARAM_URI;
- hparams[0].type = VIR_TYPED_PARAM_STRING;
-
- hparams[1].name = VIR_MIGRATE_PARAM_DEST_NAME;
- hparams[1].type = VIR_TYPED_PARAM_STRING;
-
- hparams[2].name = VIR_MIGRATE_PARAM_DEST_XML;
- hparams[2].type = VIR_TYPED_PARAM_STRING;
-
- hparams[3].name = VIR_MIGRATE_PARAM_GRAPHICS_URI;
- hparams[3].type = VIR_TYPED_PARAM_STRING;
-
- hparams[4].name = VIR_MIGRATE_PARAM_BANDWIDTH;
- hparams[4].type = VIR_TYPED_PARAM_ULLONG;
-
- hparams[5].name = VIR_MIGRATE_PARAM_LISTEN_ADDRESS;
- hparams[5].type = VIR_TYPED_PARAM_STRING;
-
- hparams[6].name = VIR_MIGRATE_PARAM_DISKS_PORT;
- hparams[6].type = VIR_TYPED_PARAM_INT;
-
- hparams[7].name = VIR_MIGRATE_PARAM_COMPRESSION;
- hparams[7].type = VIR_TYPED_PARAM_STRING;
-
- hparams[8].name = VIR_MIGRATE_PARAM_COMPRESSION_MT_DTHREADS;
- hparams[8].type = VIR_TYPED_PARAM_INT;
-
- hparams[9].name = VIR_MIGRATE_PARAM_COMPRESSION_MT_LEVEL;
- hparams[9].type = VIR_TYPED_PARAM_INT;
-
- hparams[10].name = VIR_MIGRATE_PARAM_COMPRESSION_MT_THREADS;
- hparams[10].type = VIR_TYPED_PARAM_INT;
-
- hparams[11].name = VIR_MIGRATE_PARAM_COMPRESSION_XBZRLE_CACHE;
- hparams[11].type = VIR_TYPED_PARAM_ULLONG;
-
- hparams[12].name = VIR_MIGRATE_PARAM_PERSIST_XML;
- hparams[12].type = VIR_TYPED_PARAM_STRING;
-
- hparams[13].name = VIR_MIGRATE_PARAM_AUTO_CONVERGE_INITIAL;
- hparams[13].type = VIR_TYPED_PARAM_INT;
-
- hparams[14].name = VIR_MIGRATE_PARAM_AUTO_CONVERGE_INCREMENT;
- hparams[14].type = VIR_TYPED_PARAM_INT;
-
if (virPyDictToTypedParams(dict, ¶ms, &nparams,
- hparams, nhparams) < 0) {
- free(hparams);
+ virPyDomainMigrate3Params,
+ VIR_N_ELEMENTS(virPyDomainMigrate3Params)) < 0) {
return NULL;
}
@@ -7901,7 +7823,6 @@ libvirt_virDomainMigrateToURI3(PyObject *self ATTRIBUTE_UNUSED,
LIBVIRT_END_ALLOW_THREADS;
virTypedParamsFree(params, nparams);
- free(hparams);
return libvirt_intWrap(ret);
}
#endif /* LIBVIR_CHECK_VERSION(1, 1, 0) */
@@ -8743,6 +8664,13 @@ libvirt_virDomainListGetStats(PyObject *self ATTRIBUTE_UNUSED,
}
+static virPyTypedParamsHint virPyDomainBlockCopyParams[] = {
+ { VIR_DOMAIN_BLOCK_COPY_BANDWIDTH, VIR_TYPED_PARAM_ULLONG },
+ { VIR_DOMAIN_BLOCK_COPY_GRANULARITY, VIR_TYPED_PARAM_UINT },
+ { VIR_DOMAIN_BLOCK_COPY_BUF_SIZE, VIR_TYPED_PARAM_UINT },
+};
+
+
static PyObject *
libvirt_virDomainBlockCopy(PyObject *self ATTRIBUTE_UNUSED,
PyObject *args)
@@ -8754,9 +8682,7 @@ libvirt_virDomainBlockCopy(PyObject *self ATTRIBUTE_UNUSED,
char *disk = NULL;
char *destxml = NULL;
virTypedParameterPtr params = NULL;
- virPyTypedParamsHintPtr hparams;
int nparams = 0;
- int nhparams = 3;
unsigned int flags = 0;
int c_retval;
@@ -8765,22 +8691,11 @@ libvirt_virDomainBlockCopy(PyObject *self ATTRIBUTE_UNUSED,
return NULL;
if (PyDict_Check(pyobj_dict)) {
- hparams = malloc(sizeof(virPyTypedParamsHint) * nhparams);
- hparams[0].name = VIR_DOMAIN_BLOCK_COPY_BANDWIDTH;
- hparams[0].type = VIR_TYPED_PARAM_ULLONG;
-
- hparams[1].name = VIR_DOMAIN_BLOCK_COPY_GRANULARITY;
- hparams[1].type = VIR_TYPED_PARAM_UINT;
-
- hparams[2].name = VIR_DOMAIN_BLOCK_COPY_BUF_SIZE;
- hparams[2].type = VIR_TYPED_PARAM_UINT;
-
if (virPyDictToTypedParams(pyobj_dict, ¶ms, &nparams,
- hparams, nhparams) < 0) {
- free(hparams);
+ virPyDomainBlockCopyParams,
+ VIR_N_ELEMENTS(virPyDomainBlockCopyParams)) < 0) {
return NULL;
}
- free(hparams);
}
dom = (virDomainPtr) PyvirDomain_Get(pyobj_dom);
diff --git a/libvirt-utils.h b/libvirt-utils.h
index 779fd56..0af1e62 100644
--- a/libvirt-utils.h
+++ b/libvirt-utils.h
@@ -146,6 +146,8 @@ void virFree(void *ptrptr) ATTRIBUTE_NONNULL(1);
# endif
+#define VIR_N_ELEMENTS(array) (sizeof(array) / sizeof(*(array)))
+
/* The two-statement sequence "Py_INCREF(Py_None); return Py_None;"
is so common that we encapsulate it here. Now, each use is simply
return VIR_PY_NONE; */
--
2.14.3