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@xxxxxxxxxx> > --- > 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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list