[libvirt] [PATCH v2 04/14] qemu: Refactor hotplug to introduce qemuDomain{Add|Del}TLSObjects
John Ferlan
jferlan at redhat.com
Mon Feb 27 13:20:38 UTC 2017
On 02/27/2017 04:41 AM, Jiri Denemark wrote:
> On Thu, Feb 23, 2017 at 13:42:06 -0500, John Ferlan wrote:
>> Refactor the TLS object adding code to make two separate API's that will
>> handle the add/remove of the "secret" and "tls-creds-x509" objects including
>> the Enter/Exit monitor commands.
>>
>> Signed-off-by: John Ferlan <jferlan at redhat.com>
>> ---
>> src/qemu/qemu_hotplug.c | 165 +++++++++++++++++++++++++++---------------------
>> src/qemu/qemu_hotplug.h | 13 ++++
>> 2 files changed, 107 insertions(+), 71 deletions(-)
>>
>> diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
>> index 9e2f04b..bb90a34 100644
>> --- a/src/qemu/qemu_hotplug.c
>> +++ b/src/qemu/qemu_hotplug.c
>> @@ -1525,6 +1525,85 @@ qemuDomainAttachHostPCIDevice(virQEMUDriverPtr driver,
>> }
>>
>>
>> +void
>> +qemuDomainDelTLSObjects(virQEMUDriverPtr driver,
>> + virDomainObjPtr vm,
>> + const char *secAlias,
>> + const char *tlsAlias)
>> +{
>> + qemuDomainObjPrivatePtr priv = vm->privateData;
>> + virErrorPtr orig_err;
>> +
>> + if (!tlsAlias && !secAlias)
>> + return;
>> +
>> + orig_err = virSaveLastError();
>> +
>> + qemuDomainObjEnterMonitor(driver, vm);
>> +
>> + if (tlsAlias)
>> + ignore_value(qemuMonitorDelObject(priv->mon, tlsAlias));
>> +
>> + if (secAlias)
>> + ignore_value(qemuMonitorDelObject(priv->mon, secAlias));
>> +
>> + ignore_value(qemuDomainObjExitMonitor(driver, vm));
>> +
>> + if (orig_err) {
>> + virSetError(orig_err);
>> + virFreeError(orig_err);
>> + }
>> +}
>> +
>> +
>> +int
>> +qemuDomainAddTLSObjects(virQEMUDriverPtr driver,
>> + virDomainObjPtr vm,
>> + const char *secAlias,
>> + virJSONValuePtr *secProps,
>> + const char *tlsAlias,
>> + virJSONValuePtr *tlsProps)
>> +{
>> + qemuDomainObjPrivatePtr priv = vm->privateData;
>> + int rc;
>> + virErrorPtr orig_err;
>> +
>> + if (!tlsAlias && !secAlias)
>> + return 0;
>> +
>> + qemuDomainObjEnterMonitor(driver, vm);
>> +
>> + if (secAlias) {
>> + rc = qemuMonitorAddObject(priv->mon, "secret",
>> + secAlias, *secProps);
>> + *secProps = NULL; /* qemuMonitorAddObject consumes */
>> + if (rc < 0)
>> + goto exit_monitor;
>> + }
>> +
>> + if (tlsAlias) {
>> + rc = qemuMonitorAddObject(priv->mon, "tls-creds-x509",
>> + tlsAlias, *tlsProps);
>> + *tlsProps = NULL; /* qemuMonitorAddObject consumes */
>> + if (rc < 0)
>> + goto exit_monitor;
>> + }
>> +
>> + return qemuDomainObjExitMonitor(driver, vm);
>> +
>> + exit_monitor:
>
> I'd prefer "error" label since this is not the only place where
> ExitMonitor is called.
>
I can change to error - doesn't really matter. The 'exit_monitor' label
has been used generically in a number of other places even though an
ExitMonitor is called in each instance on the non failure path. Most of
those though span quite a few lines of scrolling to find the
exit_monitor label.
John
>> + orig_err = virSaveLastError();
>> + ignore_value(qemuDomainObjExitMonitor(driver, vm));
>> + if (orig_err) {
>> + virSetError(orig_err);
>> + virFreeError(orig_err);
>> + }
>> + qemuDomainDelTLSObjects(driver, vm, secAlias, tlsAlias);
>> +
>> + return -1;
>> +}
>
> Jirka
>
More information about the libvir-list
mailing list