summaryrefslogtreecommitdiff
path: root/libvirt-override.c
diff options
context:
space:
mode:
authorMichal Privoznik <mprivozn@redhat.com>2020-11-19 17:30:14 +0100
committerMichal Privoznik <mprivozn@redhat.com>2020-11-19 18:12:33 +0100
commit767bf23ba64d82d6e1e53fd70208d010d8bf31d8 (patch)
treef7e56040702f77594088739d9c78d9e4678729cc /libvirt-override.c
parent417b39049ef01a39fd7789f6f1eb861d6893075f (diff)
downloadlibvirt-python-767bf23ba64d82d6e1e53fd70208d010d8bf31d8.tar.gz
Implement virDomainAuthorizedSSHKeys{Get,Set}
Both APIs work with string lists (the getter returns it, the setter gets keys to set from it) -> represent that as a python list. The rest is kept as is in C. Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Diffstat (limited to 'libvirt-override.c')
-rw-r--r--libvirt-override.c96
1 files changed, 96 insertions, 0 deletions
diff --git a/libvirt-override.c b/libvirt-override.c
index 2846f8a..b95cdd4 100644
--- a/libvirt-override.c
+++ b/libvirt-override.c
@@ -10423,6 +10423,98 @@ libvirt_virConnectSetIdentity(PyObject *self ATTRIBUTE_UNUSED,
#endif /* LIBVIR_CHECK_VERSION(5, 8, 0) */
+#if LIBVIR_CHECK_VERSION(6, 10, 0)
+static PyObject *
+libvirt_virDomainAuthorizedSSHKeysGet(PyObject *self ATTRIBUTE_UNUSED,
+ PyObject *args)
+{
+ PyObject *pyobj_dom = NULL;
+ virDomainPtr dom = NULL;
+ const char *user = NULL;
+ char **keys = NULL;
+ int nkeys;
+ size_t i;
+ unsigned int flags;
+ PyObject *ret = NULL;
+
+ if (!PyArg_ParseTuple(args, (char *)"OsI:virDomainAuthorizedSSHKeysGet",
+ &pyobj_dom, &user, &flags))
+ return NULL;
+ dom = (virDomainPtr) PyvirDomain_Get(pyobj_dom);
+
+ LIBVIRT_BEGIN_ALLOW_THREADS;
+ nkeys = virDomainAuthorizedSSHKeysGet(dom, user, &keys, flags);
+ LIBVIRT_END_ALLOW_THREADS;
+
+ if (nkeys < 0)
+ return VIR_PY_NONE;
+
+ if ((ret = PyList_New(nkeys)) == NULL)
+ goto error;
+
+ for (i = 0; i < nkeys; i++)
+ VIR_PY_LIST_SET_GOTO(ret, i, libvirt_constcharPtrWrap(keys[i]), error);
+
+ done:
+ for (i = 0; i < nkeys; i++)
+ VIR_FREE(keys[i]);
+ VIR_FREE(keys);
+ return ret;
+
+ error:
+ Py_CLEAR(ret);
+ goto done;
+}
+
+
+static PyObject *
+libvirt_virDomainAuthorizedSSHKeysSet(PyObject *self ATTRIBUTE_UNUSED,
+ PyObject *args)
+{
+ PyObject *pyobj_dom = NULL;
+ virDomainPtr dom = NULL;
+ const char *user = NULL;
+ PyObject *pyobj_keys = NULL;
+ char **keys = NULL;
+ int nkeys = 0;
+ size_t i;
+ unsigned int flags;
+ int c_retval;
+ PyObject *py_retval = NULL;
+
+ if (!PyArg_ParseTuple(args, (char *)"OsOI:virDomainAuthorizedSSHKeysSet",
+ &pyobj_dom, &user, &pyobj_keys, &flags))
+ return NULL;
+ dom = (virDomainPtr) PyvirDomain_Get(pyobj_dom);
+
+ if (PyList_Check(pyobj_keys)) {
+ nkeys = PyList_Size(pyobj_keys);
+
+ if (VIR_ALLOC_N(keys, nkeys) < 0)
+ return PyErr_NoMemory();
+
+ for (i = 0; i < nkeys; i++) {
+ if (libvirt_charPtrUnwrap(PyList_GetItem(pyobj_keys, i),
+ &(keys[i])) < 0)
+ goto cleanup;
+ }
+ }
+
+ LIBVIRT_BEGIN_ALLOW_THREADS;
+ c_retval = virDomainAuthorizedSSHKeysSet(dom, user, (const char **)keys, nkeys, flags);
+ LIBVIRT_END_ALLOW_THREADS;
+
+ py_retval = libvirt_intWrap(c_retval);
+ cleanup:
+ for (i = 0 ; i < nkeys ; i++)
+ VIR_FREE(keys[i]);
+ VIR_FREE(keys);
+
+ return py_retval;
+}
+#endif /* LIBVIR_CHECK_VERSION(6, 10, 0) */
+
+
/************************************************************************
* *
* The registration stuff *
@@ -10687,6 +10779,10 @@ static PyMethodDef libvirtMethods[] = {
#if LIBVIR_CHECK_VERSION(5, 8, 0)
{(char *) "virConnectSetIdentity", libvirt_virConnectSetIdentity, METH_VARARGS, NULL},
#endif /* LIBVIR_CHECK_VERSION(5, 8, 0) */
+#if LIBVIR_CHECK_VERSION(6, 10, 0)
+ {(char *) "virDomainAuthorizedSSHKeysGet", libvirt_virDomainAuthorizedSSHKeysGet, METH_VARARGS, NULL},
+ {(char *) "virDomainAuthorizedSSHKeysSet", libvirt_virDomainAuthorizedSSHKeysSet, METH_VARARGS, NULL},
+#endif /* LIBVIR_CHECK_VERSION(6, 10, 0) */
{NULL, NULL, 0, NULL}
};