mirror of https://gitee.com/openkylin/libvirt.git
qemu: block: Add support for RBD authentication for blockdev
To allow using -blockdev with RBD we need to support the recently added RBD authentication. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
8b4a31efc0
commit
1cb98a1fb3
|
@ -906,13 +906,33 @@ qemuBlockStorageSourceGetRBDProps(virStorageSourcePtr src)
|
|||
virJSONValuePtr servers = NULL;
|
||||
virJSONValuePtr ret = NULL;
|
||||
const char *username = NULL;
|
||||
virJSONValuePtr authmodes = NULL;
|
||||
virJSONValuePtr mode = NULL;
|
||||
const char *keysecret = NULL;
|
||||
|
||||
if (src->nhosts > 0 &&
|
||||
!(servers = qemuBlockStorageSourceBuildHostsJSONInetSocketAddress(src)))
|
||||
return NULL;
|
||||
|
||||
if (src->auth)
|
||||
if (src->auth) {
|
||||
username = srcPriv->secinfo->s.aes.username;
|
||||
keysecret = srcPriv->secinfo->s.aes.alias;
|
||||
/* the auth modes are modelled after our old command line generator */
|
||||
if (!(authmodes = virJSONValueNewArray()))
|
||||
goto cleanup;
|
||||
|
||||
if (!(mode = virJSONValueNewString("cephx")) ||
|
||||
virJSONValueArrayAppend(authmodes, mode) < 0)
|
||||
goto cleanup;
|
||||
|
||||
mode = NULL;
|
||||
|
||||
if (!(mode = virJSONValueNewString("none")) ||
|
||||
virJSONValueArrayAppend(authmodes, mode) < 0)
|
||||
goto cleanup;
|
||||
|
||||
mode = NULL;
|
||||
}
|
||||
|
||||
if (virJSONValueObjectCreate(&ret,
|
||||
"s:driver", "rbd",
|
||||
|
@ -922,10 +942,14 @@ qemuBlockStorageSourceGetRBDProps(virStorageSourcePtr src)
|
|||
"S:conf", src->configFile,
|
||||
"A:server", &servers,
|
||||
"S:user", username,
|
||||
"A:auth-client-required", &authmodes,
|
||||
"S:key-secret", keysecret,
|
||||
NULL) < 0)
|
||||
goto cleanup;
|
||||
|
||||
cleanup:
|
||||
virJSONValueFree(authmodes);
|
||||
virJSONValueFree(mode);
|
||||
virJSONValueFree(servers);
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -24,6 +24,11 @@
|
|||
}
|
||||
],
|
||||
"user": "testuser-rbd",
|
||||
"auth-client-required": [
|
||||
"cephx",
|
||||
"none"
|
||||
],
|
||||
"key-secret": "node-a-s-secalias",
|
||||
"node-name": "node-a-s",
|
||||
"cache": {
|
||||
"direct": false,
|
||||
|
|
|
@ -24,6 +24,11 @@
|
|||
}
|
||||
],
|
||||
"user": "testuser-rbd",
|
||||
"auth-client-required": [
|
||||
"cephx",
|
||||
"none"
|
||||
],
|
||||
"key-secret": "node-a-s-secalias",
|
||||
"node-name": "node-a-s",
|
||||
"read-only": false,
|
||||
"discard": "unmap"
|
||||
|
|
Loading…
Reference in New Issue