Add validation and formatting of the blockdev props.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/qemu/qemu_block.c | 6 +++++-
src/qemu/qemu_domain.c | 15 +++++++++++++++
2 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
index e5ff653a60..4195883a1e 100644
--- a/src/qemu/qemu_block.c
+++ b/src/qemu/qemu_block.c
@@ -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;
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 6b61fefb8f..ec6c17774b 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -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;
}
--
2.35.1