diff options
-rwxr-xr-x | generator.py | 1 | ||||
-rw-r--r-- | libvirt-override-api.xml | 7 | ||||
-rw-r--r-- | libvirt-override.c | 51 |
3 files changed, 59 insertions, 0 deletions
diff --git a/generator.py b/generator.py index c7466a8..e62abae 100755 --- a/generator.py +++ b/generator.py @@ -473,6 +473,7 @@ skip_impl = { 'virDomainGetGuestVcpus', 'virConnectBaselineHypervisorCPU', 'virDomainGetLaunchSecurityInfo', + 'virDomainSetLaunchSecurityState', 'virNodeGetSEVInfo', 'virNetworkPortGetParameters', 'virNetworkPortSetParameters', diff --git a/libvirt-override-api.xml b/libvirt-override-api.xml index e36a611..1ba184c 100644 --- a/libvirt-override-api.xml +++ b/libvirt-override-api.xml @@ -845,5 +845,12 @@ <arg name='domain' type='virDomainPtr' info='a domain object'/> <arg name='flags' type='unsigned int' info='optional fine-tuning flags'/> </function> + <function name='virDomainSetLaunchSecurityState' file='python'> + <info>Set a launch security secret in the guest's memory.</info> + <return type='int' info='0 in case of success, -1 in case of failure.'/> + <arg name='domain' type='virDomainPtr' info='pointer to domain object'/> + <arg name='params' type='virTypedParameterPtr' info='pointer to launch security state objects'/> + <arg name='flags' type='unsigned int' info='currently used, set to 0.'/> + </function> </symbols> </api> diff --git a/libvirt-override.c b/libvirt-override.c index 671d90c..8119643 100644 --- a/libvirt-override.c +++ b/libvirt-override.c @@ -10647,6 +10647,54 @@ libvirt_virDomainGetMessages(PyObject *self ATTRIBUTE_UNUSED, } #endif /* LIBVIR_CHECK_VERSION(7, 1, 0) */ +#if LIBVIR_CHECK_VERSION(8, 0, 0) + +static virPyTypedParamsHint virPyDomainSetLaunchSecurityStateParams[] = { + { VIR_DOMAIN_LAUNCH_SECURITY_SEV_SECRET, VIR_TYPED_PARAM_STRING }, + { VIR_DOMAIN_LAUNCH_SECURITY_SEV_SECRET_HEADER, VIR_TYPED_PARAM_STRING }, + { VIR_DOMAIN_LAUNCH_SECURITY_SEV_SECRET_SET_ADDRESS, VIR_TYPED_PARAM_ULLONG }, +}; + +static PyObject * +libvirt_virDomainSetLaunchSecurityState(PyObject *self ATTRIBUTE_UNUSED, + PyObject *args) +{ + PyObject *pyobj_dom = NULL; + PyObject *pyobj_dict = NULL; + + virDomainPtr dom; + virTypedParameterPtr params = NULL; + int nparams = 0; + unsigned int flags; + int c_retval; + + if (!PyArg_ParseTuple(args, (char *)"OOI:virDomainSetLaunchSecurityState", + &pyobj_dom, &pyobj_dict, &flags)) + return NULL; + + if (PyDict_Check(pyobj_dict)) { + if (virPyDictToTypedParams(pyobj_dict, ¶ms, &nparams, + virPyDomainSetLaunchSecurityStateParams, + VIR_N_ELEMENTS(virPyDomainSetLaunchSecurityStateParams)) < 0) { + return NULL; + } + } else { + PyErr_Format(PyExc_TypeError, "Launch security state params must be " + "a dictionary"); + return NULL; + } + + dom = (virDomainPtr) PyvirDomain_Get(pyobj_dom); + + LIBVIRT_BEGIN_ALLOW_THREADS; + c_retval = virDomainSetLaunchSecurityState(dom, params, nparams, flags); + LIBVIRT_END_ALLOW_THREADS; + + virTypedParamsFree(params, nparams); + + return libvirt_intWrap(c_retval); +} +#endif /* LIBVIR_CHECK_VERSION(8, 0, 0) */ /************************************************************************ * * @@ -10922,6 +10970,9 @@ static PyMethodDef libvirtMethods[] = { #if LIBVIR_CHECK_VERSION(7, 8, 0) {(char *) "virNodeDeviceGetAutostart", libvirt_virNodeDeviceGetAutostart, METH_VARARGS, NULL}, #endif /* LIBVIR_CHECK_VERSION(7, 8, 0) */ +#if LIBVIR_CHECK_VERSION(8, 0, 0) + {(char *) "virDomainSetLaunchSecurityState", libvirt_virDomainSetLaunchSecurityState, METH_VARARGS, NULL}, +#endif /* LIBVIR_CHECK_VERSION(8, 0, 0) */ {NULL, NULL, 0, NULL} }; |