mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-08-28 19:41:16 +00:00
virDomainDriverGenerateMachineName: Factor out embed path hashing
The code that generates "qemu-embed-$hash" is going to be useful in more places. Separate it out into a function. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Andrea Bolognani <abologna@redhat.com> Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
8b9488d929
commit
5bc3299447
@ -28,6 +28,22 @@
|
|||||||
|
|
||||||
#define VIR_FROM_THIS VIR_FROM_DOMAIN
|
#define VIR_FROM_THIS VIR_FROM_DOMAIN
|
||||||
|
|
||||||
|
char *
|
||||||
|
virDomainDriverGenerateRootHash(const char *drivername,
|
||||||
|
const char *root)
|
||||||
|
{
|
||||||
|
g_autofree char *hash = NULL;
|
||||||
|
|
||||||
|
if (virCryptoHashString(VIR_CRYPTO_HASH_SHA256, root, &hash) < 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
/* When two embed drivers start two domains with the same @name and @id
|
||||||
|
* we would generate a non-unique name. Include parts of hashed @root
|
||||||
|
* which guarantees uniqueness. The first 8 characters of SHA256 ought
|
||||||
|
* to be enough for anybody. */
|
||||||
|
return g_strdup_printf("%s-embed-%.8s", drivername, hash);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#define HOSTNAME_CHARS \
|
#define HOSTNAME_CHARS \
|
||||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-"
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-"
|
||||||
@ -72,26 +88,24 @@ virDomainDriverGenerateMachineName(const char *drivername,
|
|||||||
{
|
{
|
||||||
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
||||||
|
|
||||||
virBufferAsprintf(&buf, "%s-", drivername);
|
|
||||||
|
|
||||||
if (root) {
|
if (root) {
|
||||||
g_autofree char *hash = NULL;
|
g_autofree char *hash = NULL;
|
||||||
|
|
||||||
/* When two embed drivers start two domains with the same @name and @id
|
if (!(hash = virDomainDriverGenerateRootHash(drivername, root)))
|
||||||
* we would generate a non-unique name. Include parts of hashed @root
|
|
||||||
* which guarantees uniqueness. The first 8 characters of SHA256 ought
|
|
||||||
* to be enough for anybody. */
|
|
||||||
if (virCryptoHashString(VIR_CRYPTO_HASH_SHA256, root, &hash) < 0)
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
virBufferAsprintf(&buf, "embed-%.8s-", hash);
|
virBufferAsprintf(&buf, "%s-", hash);
|
||||||
} else if (!privileged) {
|
} else {
|
||||||
g_autofree char *username = NULL;
|
virBufferAsprintf(&buf, "%s-", drivername);
|
||||||
if (!(username = virGetUserName(geteuid()))) {
|
if (!privileged) {
|
||||||
virBufferFreeAndReset(&buf);
|
|
||||||
return NULL;
|
g_autofree char *username = NULL;
|
||||||
|
if (!(username = virGetUserName(geteuid()))) {
|
||||||
|
virBufferFreeAndReset(&buf);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
virBufferAsprintf(&buf, "%s-", username);
|
||||||
}
|
}
|
||||||
virBufferAsprintf(&buf, "%s-", username);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virBufferAsprintf(&buf, "%d-", id);
|
virBufferAsprintf(&buf, "%d-", id);
|
||||||
|
@ -22,6 +22,10 @@
|
|||||||
|
|
||||||
#include "domain_conf.h"
|
#include "domain_conf.h"
|
||||||
|
|
||||||
|
char *
|
||||||
|
virDomainDriverGenerateRootHash(const char *drivername,
|
||||||
|
const char *root);
|
||||||
|
|
||||||
char *
|
char *
|
||||||
virDomainDriverGenerateMachineName(const char *drivername,
|
virDomainDriverGenerateMachineName(const char *drivername,
|
||||||
const char *root,
|
const char *root,
|
||||||
|
@ -1403,6 +1403,7 @@ virDomainCgroupSetupMemtune;
|
|||||||
|
|
||||||
# hypervisor/domain_driver.h
|
# hypervisor/domain_driver.h
|
||||||
virDomainDriverGenerateMachineName;
|
virDomainDriverGenerateMachineName;
|
||||||
|
virDomainDriverGenerateRootHash;
|
||||||
virDomainDriverMergeBlkioDevice;
|
virDomainDriverMergeBlkioDevice;
|
||||||
virDomainDriverParseBlkioDeviceStr;
|
virDomainDriverParseBlkioDeviceStr;
|
||||||
virDomainDriverSetupPersistentDefBlkioParams;
|
virDomainDriverSetupPersistentDefBlkioParams;
|
||||||
|
Loading…
Reference in New Issue
Block a user