[libvirt] [PATCH 08/19] qemu: Change protocol parameter for secret setup
Peter Krempa
pkrempa at redhat.com
Thu Jun 23 19:25:48 UTC 2016
On Thu, Jun 23, 2016 at 12:16:06 -0400, John Ferlan wrote:
>
>
> On 06/23/2016 11:57 AM, Peter Krempa wrote:
> > On Mon, Jun 13, 2016 at 20:27:47 -0400, John Ferlan wrote:
> >> Rather than assume/pass the protocol to the qemuDomainSecretPlainSetup
> >> and qemuDomainSecretAESSetup, determine and pass the secretUsageType
> >> which is then used in the virSecretGetSecretString call
> >>
> >> For the two callers that convert from virStorageNetProtocol, add
> >> a new helper qemuDomainSecretProtocolGetUsageType.
> >>
> >> Signed-off-by: John Ferlan <jferlan at redhat.com>
> >> ---
> >> src/qemu/qemu_domain.c | 105 +++++++++++++++++++++++++++++--------------------
> >> 1 file changed, 63 insertions(+), 42 deletions(-)
> >>
> >> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> >> index 34e3d95..52cbc72 100644
> >> --- a/src/qemu/qemu_domain.c
> >> +++ b/src/qemu/qemu_domain.c
> >
> > [...]
> >
> >> +/* qemuDomainSecretGetProtocolUsageType:
> >> + * @protocol: The virStorageNetProtocol protocol type
> >> + *
> >> + * Convert the protocl into the expected virSecretUsageType for
> >> + * eventual usage to fetch the secret
> >> + *
> >> + * Returns matched protocol type or VIR_SECRET_USAGE_TYPE_NONE with an
> >> + * error message set on failure.
> >> + */
> >> +static virSecretUsageType
> >> +qemuDomainSecretProtocolGetUsageType(virStorageNetProtocol protocol)
> >> +{
> >> + switch ((virStorageNetProtocol)protocol) {
> >> + case VIR_STORAGE_NET_PROTOCOL_RBD:
> >> + return VIR_SECRET_USAGE_TYPE_CEPH;
> >> +
> >> + case VIR_STORAGE_NET_PROTOCOL_ISCSI:
> >> + return VIR_SECRET_USAGE_TYPE_ISCSI;
> >> +
> >> + case VIR_STORAGE_NET_PROTOCOL_NONE:
> >> + case VIR_STORAGE_NET_PROTOCOL_NBD:
> >> + case VIR_STORAGE_NET_PROTOCOL_SHEEPDOG:
> >> + case VIR_STORAGE_NET_PROTOCOL_GLUSTER:
> >> + case VIR_STORAGE_NET_PROTOCOL_HTTP:
> >> + case VIR_STORAGE_NET_PROTOCOL_HTTPS:
> >> + case VIR_STORAGE_NET_PROTOCOL_FTP:
> >> + case VIR_STORAGE_NET_PROTOCOL_FTPS:
> >> + case VIR_STORAGE_NET_PROTOCOL_TFTP:
> >> + case VIR_STORAGE_NET_PROTOCOL_LAST:
> >> + virReportError(VIR_ERR_INTERNAL_ERROR,
> >> + _("protocol '%s' cannot be used for encrypted secrets"),
> >> + virStorageNetProtocolTypeToString(protocol));
> >
> > You could change this error message so that it actually makes some
> > sense. The protocols above don't support any form of authentication at
> > least in context of our interaction with qemu, not only specifically
> > encrypted secrets.
> >
>
> OK - poof this is gone...
>
> >> + }
> >> + return VIR_SECRET_USAGE_TYPE_NONE;
> >> +}
> >> +
> >> +
> >> /* qemuDomainSecretDiskPrepare:
> >> * @conn: Pointer to connection
> >> * @priv: pointer to domain private object
> >> @@ -1008,13 +1018,19 @@ qemuDomainSecretDiskPrepare(virConnectPtr conn,
> >> (src->protocol == VIR_STORAGE_NET_PROTOCOL_ISCSI ||
> >> src->protocol == VIR_STORAGE_NET_PROTOCOL_RBD)) {
> >>
> >> + virSecretUsageType secretUsageType;
> >> qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
> >>
> >> if (VIR_ALLOC(secinfo) < 0)
> >> return -1;
> >>
> >> + if ((secretUsageType =
> >> + qemuDomainSecretProtocolGetUsageType(src->protocol)) ==
> >> + VIR_SECRET_USAGE_TYPE_NONE)
> >
> > Dead code. The condition above guarantees that this doesn't ever return
> > _NONE. I think you could set the usage type here rather than having an
> > extra helper that doesn't do much else.
>
> Changed to:
>
> if (src->protocol == VIR_STORAGE_NET_PROTOCOL_ISCSI)
> secretUsageType = VIR_SECRET_USAGE_TYPE_ISCSI;
> else
> secretUsageType = VIR_SECRET_USAGE_TYPE_CEPH;
>
>
> >
> >> + goto error;
> >> +
> >> if (qemuDomainSecretSetup(conn, priv, secinfo, disk->info.alias,
> >> - src->protocol, src->auth) < 0)
> >> + secretUsageType, src->auth) < 0)
> >> goto error;
> >>
> >> diskPriv->secinfo = secinfo;
> >> @@ -1072,14 +1088,19 @@ qemuDomainSecretHostdevPrepare(virConnectPtr conn,
> >> if (scsisrc->protocol == VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI &&
> >> iscsisrc->auth) {
> >>
> >> + virSecretUsageType secretUsageType;
>
> Changed to:
>
> virSecretUsageType secretUsageType =
> VIR_SECRET_USAGE_TYPE_ISCSI;
>
>
> Tks -
thanks for doing that. ACK to those.
More information about the libvir-list
mailing list