[libvirt] [PATCH v2 04/14] qemu: Refactor hotplug to introduce qemuDomain{Add|Del}TLSObjects

Jiri Denemark jdenemar at redhat.com
Mon Feb 27 09:41:21 UTC 2017


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.

> +    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