mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-20 07:59:00 +00:00
daemon: add option to read host uuid from /etc/machine-id
Daemon config parameter switch between reading host uuid either from smbios or machine-id: host_uuid_source = "smbios|machine-id" Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
This commit is contained in:
parent
3506ad7f0a
commit
6fe81c3a71
@ -374,6 +374,7 @@ daemonConfigFree(struct daemonConfig *data)
|
|||||||
VIR_FREE(data->crl_file);
|
VIR_FREE(data->crl_file);
|
||||||
|
|
||||||
VIR_FREE(data->host_uuid);
|
VIR_FREE(data->host_uuid);
|
||||||
|
VIR_FREE(data->host_uuid_source);
|
||||||
VIR_FREE(data->log_filters);
|
VIR_FREE(data->log_filters);
|
||||||
VIR_FREE(data->log_outputs);
|
VIR_FREE(data->log_outputs);
|
||||||
|
|
||||||
@ -463,6 +464,7 @@ daemonConfigLoadOptions(struct daemonConfig *data,
|
|||||||
GET_CONF_UINT(conf, filename, audit_logging);
|
GET_CONF_UINT(conf, filename, audit_logging);
|
||||||
|
|
||||||
GET_CONF_STR(conf, filename, host_uuid);
|
GET_CONF_STR(conf, filename, host_uuid);
|
||||||
|
GET_CONF_STR(conf, filename, host_uuid_source);
|
||||||
|
|
||||||
GET_CONF_UINT(conf, filename, log_level);
|
GET_CONF_UINT(conf, filename, log_level);
|
||||||
GET_CONF_STR(conf, filename, log_filters);
|
GET_CONF_STR(conf, filename, log_filters);
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
|
|
||||||
struct daemonConfig {
|
struct daemonConfig {
|
||||||
char *host_uuid;
|
char *host_uuid;
|
||||||
|
char *host_uuid_source;
|
||||||
|
|
||||||
int listen_tls;
|
int listen_tls;
|
||||||
int listen_tcp;
|
int listen_tcp;
|
||||||
|
@ -86,6 +86,7 @@ module Libvirtd =
|
|||||||
| bool_entry "admin_keepalive_required"
|
| bool_entry "admin_keepalive_required"
|
||||||
|
|
||||||
let misc_entry = str_entry "host_uuid"
|
let misc_entry = str_entry "host_uuid"
|
||||||
|
| str_entry "host_uuid_source"
|
||||||
|
|
||||||
(* Each enty in the config is one of the following three ... *)
|
(* Each enty in the config is one of the following three ... *)
|
||||||
let entry = network_entry
|
let entry = network_entry
|
||||||
|
@ -1076,6 +1076,39 @@ static int migrateProfile(void)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
daemonSetupHostUUID(const struct daemonConfig *config)
|
||||||
|
{
|
||||||
|
static const char *machine_id = "/etc/machine-id";
|
||||||
|
char buf[VIR_UUID_STRING_BUFLEN];
|
||||||
|
const char *uuid;
|
||||||
|
|
||||||
|
if (config->host_uuid) {
|
||||||
|
uuid = config->host_uuid;
|
||||||
|
} else if (!config->host_uuid_source ||
|
||||||
|
STREQ(config->host_uuid_source, "smbios")) {
|
||||||
|
/* smbios UUID is fetched on demand in virGetHostUUID */
|
||||||
|
return 0;
|
||||||
|
} else if (STREQ(config->host_uuid_source, "machine-id")) {
|
||||||
|
if (virFileReadBufQuiet(machine_id, buf, sizeof(buf)) < 0) {
|
||||||
|
VIR_ERROR(_("Can't read %s"), machine_id);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
uuid = buf;
|
||||||
|
} else {
|
||||||
|
VIR_ERROR(_("invalid UUID source: %s"), config->host_uuid_source);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (virSetHostUUIDStr(uuid)) {
|
||||||
|
VIR_ERROR(_("invalid host UUID: %s"), uuid);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* Print command-line usage. */
|
/* Print command-line usage. */
|
||||||
static void
|
static void
|
||||||
daemonUsage(const char *argv0, bool privileged)
|
daemonUsage(const char *argv0, bool privileged)
|
||||||
@ -1295,9 +1328,8 @@ int main(int argc, char **argv) {
|
|||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config->host_uuid &&
|
if (daemonSetupHostUUID(config) < 0) {
|
||||||
virSetHostUUIDStr(config->host_uuid) < 0) {
|
VIR_ERROR(_("Can't setup host uuid"));
|
||||||
VIR_ERROR(_("invalid host UUID: %s"), config->host_uuid);
|
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -410,10 +410,16 @@
|
|||||||
|
|
||||||
###################################################################
|
###################################################################
|
||||||
# UUID of the host:
|
# UUID of the host:
|
||||||
# Provide the UUID of the host here in case the command
|
# Host UUID is read from one of the sources specified in host_uuid_source.
|
||||||
# 'dmidecode -s system-uuid' does not provide a valid uuid. In case
|
#
|
||||||
# 'dmidecode' does not provide a valid UUID and none is provided here, a
|
# - 'smbios': fetch the UUID from 'dmidecode -s system-uuid'
|
||||||
# temporary UUID will be generated.
|
# - 'machine-id': fetch the UUID from /etc/machine-id
|
||||||
|
#
|
||||||
|
# The host_uuid_source default is 'smbios'. If 'dmidecode' does not provide
|
||||||
|
# a valid UUID a temporary UUID will be generated.
|
||||||
|
#
|
||||||
|
# Another option is to specify host UUID in host_uuid.
|
||||||
|
#
|
||||||
# Keep the format of the example UUID below. UUID must not have all digits
|
# Keep the format of the example UUID below. UUID must not have all digits
|
||||||
# be the same.
|
# be the same.
|
||||||
|
|
||||||
@ -421,6 +427,7 @@
|
|||||||
# it with the output of the 'uuidgen' command and then
|
# it with the output of the 'uuidgen' command and then
|
||||||
# uncomment this entry
|
# uncomment this entry
|
||||||
#host_uuid = "00000000-0000-0000-0000-000000000000"
|
#host_uuid = "00000000-0000-0000-0000-000000000000"
|
||||||
|
#host_uuid_source = "smbios"
|
||||||
|
|
||||||
###################################################################
|
###################################################################
|
||||||
# Keepalive protocol:
|
# Keepalive protocol:
|
||||||
|
@ -55,6 +55,7 @@ module Test_libvirtd =
|
|||||||
{ "audit_level" = "2" }
|
{ "audit_level" = "2" }
|
||||||
{ "audit_logging" = "1" }
|
{ "audit_logging" = "1" }
|
||||||
{ "host_uuid" = "00000000-0000-0000-0000-000000000000" }
|
{ "host_uuid" = "00000000-0000-0000-0000-000000000000" }
|
||||||
|
{ "host_uuid_source" = "smbios" }
|
||||||
{ "keepalive_interval" = "5" }
|
{ "keepalive_interval" = "5" }
|
||||||
{ "keepalive_count" = "5" }
|
{ "keepalive_count" = "5" }
|
||||||
{ "keepalive_required" = "1" }
|
{ "keepalive_required" = "1" }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user