qemu: Add support for 'tlsHostname' setting of virStorageSource

Add validation and formatting of the blockdev props.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Peter Krempa 2022-03-10 09:57:09 +01:00
parent 47abbe0fd7
commit e11f2eb7a8
2 changed files with 20 additions and 1 deletions

View File

@ -843,6 +843,7 @@ qemuBlockStorageSourceGetNBDProps(virStorageSource *src,
{
g_autoptr(virJSONValue) serverprops = NULL;
const char *tlsAlias = src->tlsAlias;
const char *tlsHostname = src->tlsHostname;
virJSONValue *ret = NULL;
if (src->nhosts != 1) {
@ -856,13 +857,16 @@ qemuBlockStorageSourceGetNBDProps(virStorageSource *src,
if (!serverprops)
return NULL;
if (onlytarget)
if (onlytarget) {
tlsAlias = NULL;
tlsHostname = NULL;
}
if (virJSONValueObjectAdd(&ret,
"a:server", &serverprops,
"S:export", src->path,
"S:tls-creds", tlsAlias,
"S:tls-hostname", tlsHostname,
NULL) < 0)
return NULL;

View File

@ -4862,6 +4862,21 @@ qemuDomainValidateStorageSource(virStorageSource *src,
}
}
if (src->tlsHostname) {
if (actualType != VIR_STORAGE_TYPE_NETWORK ||
src->protocol != VIR_STORAGE_NET_PROTOCOL_NBD) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("'tlsHostname' field is supported only with NBD disks"));
return -1;
}
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV_NBD_TLS_HOSTNAME)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("'tlsHostname' field is not supported by this QEMU"));
return -1;
}
}
return 0;
}