nspawn: when booting in ephemeral mode, append random token to machine name

Also, when booting up an ephemeral container of / use the system
hostname as default machine name.

This way specifiyng -M is unnecessary when booting up an ephemeral
container, while allowing any number of ephemeral containers to run from
the same tree.
This commit is contained in:
Lennart Poettering
2014-12-12 17:26:31 +01:00
parent c4e34a612c
commit b9ba4dabba
2 changed files with 49 additions and 15 deletions

View File

@@ -2875,7 +2875,11 @@ static int determine_names(void) {
}
if (!arg_machine) {
arg_machine = strdup(basename(arg_image ?: arg_directory));
if (arg_directory && path_equal(arg_directory, "/"))
arg_machine = gethostname_malloc();
else
arg_machine = strdup(basename(arg_image ?: arg_directory));
if (!arg_machine)
return log_oom();
@@ -2884,6 +2888,21 @@ static int determine_names(void) {
log_error("Failed to determine machine name automatically, please use -M.");
return -EINVAL;
}
if (arg_ephemeral) {
char *b;
/* Add a random suffix when this is an
* ephemeral machine, so that we can run many
* instances at once without manually having
* to specify -M each time. */
if (asprintf(&b, "%s-%016" PRIx64, arg_machine, random_u64()) < 0)
return log_oom();
free(arg_machine);
arg_machine = b;
}
}
return 0;