[libvirt] [PATCH 3/3] qemu: wire up virDomainSetUserPassword
Michal Privoznik
mprivozn at redhat.com
Thu May 21 13:11:59 UTC 2015
On 18.05.2015 14:43, Ján Tomko wrote:
> Base-64 encode the password and pass it to the guest agent
> via the 'guest-set-user-password' command.
>
> https://bugzilla.redhat.com/show_bug.cgi?id=1174177
> ---
> src/qemu/qemu_agent.c | 39 +++++++++++++++++++++++++++++++++++
> src/qemu/qemu_agent.h | 4 ++++
> src/qemu/qemu_driver.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 98 insertions(+)
>
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 2668011..6c7bc86 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -20124,6 +20124,60 @@ qemuGetDHCPInterfaces(virDomainPtr dom,
> goto cleanup;
> }
>
> +
> +static int
> +qemuDomainSetUserPassword(virDomainPtr dom,
> + const char *user,
> + const char *password,
> + unsigned int flags)
> +{
> + virQEMUDriverPtr driver = dom->conn->privateData;
> + qemuDomainObjPrivatePtr priv;
> + virDomainObjPtr vm;
> + int ret = -1;
> + int rv;
> +
I failed to see how @rv is different to @ret.
> + virCheckFlags(VIR_DOMAIN_PASSWORD_CRYPTED, -1);
> +
> + if (!(vm = qemuDomObjFromDomain(dom)))
> + return ret;
> +
> + if (virDomainSetUserPasswordEnsureACL(dom->conn, vm->def) < 0)
> + goto cleanup;
> +
> + priv = vm->privateData;
> +
> + if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
> + goto cleanup;
> +
> + if (!virDomainObjIsActive(vm)) {
> + virReportError(VIR_ERR_OPERATION_INVALID,
> + "%s", _("domain is not running"));
> + goto endjob;
> + }
> +
> + if (!qemuDomainAgentAvailable(vm, true))
> + goto endjob;
> +
> + qemuDomainObjEnterAgent(vm);
> + rv = qemuAgentSetUserPassword(priv->agent, user, password,
> + flags & VIR_DOMAIN_PASSWORD_CRYPTED);
> + qemuDomainObjExitAgent(vm);
> +
> + if (rv < 0)
> + goto endjob;
> +
> + ret = 0;
> +
> + endjob:
> + qemuDomainObjEndJob(driver, vm);
> +
> + cleanup:
> + virDomainObjEndAPI(&vm);
> + return ret;
> +}
> +
> +
ACK though.
Michal
More information about the libvir-list
mailing list