unit: add simple only-by-dependency flag for units

This commit is contained in:
Lennart Poettering 2010-05-21 23:41:54 +02:00
parent c0120d992c
commit bc0f8771f2
4 changed files with 11 additions and 2 deletions

View File

@ -281,6 +281,9 @@ static DBusHandlerResult bus_unit_message_dispatch(Unit *u, DBusMessage *message
int r;
char *path;
if (job_type == JOB_START && u->meta.only_by_dependency)
return bus_send_error_reply(m, message, NULL, -EPERM);
if (!dbus_message_get_args(
message,
&error,

View File

@ -1268,6 +1268,7 @@ static int load_from_path(Unit *u, const char *path) {
{ "After", config_parse_deps, UINT_TO_PTR(UNIT_AFTER), "Unit" },
{ "RecursiveStop", config_parse_bool, &u->meta.recursive_stop, "Unit" },
{ "StopWhenUnneeded", config_parse_bool, &u->meta.stop_when_unneeded, "Unit" },
{ "OnlyByDependency", config_parse_bool, &u->meta.only_by_dependency, "Unit" },
{ "PIDFile", config_parse_path, &u->service.pid_file, "Service" },
{ "ExecStartPre", config_parse_exec, u->service.exec_command+SERVICE_EXEC_START_PRE, "Service" },

View File

@ -593,7 +593,8 @@ void unit_dump(Unit *u, FILE *f, const char *prefix) {
"%s\tActive Enter Timestamp: %s\n"
"%s\tActive Exit Timestamp: %s\n"
"%s\tInactive Enter Timestamp: %s\n"
"%s\tGC Check Good: %s\n",
"%s\tGC Check Good: %s\n"
"%s\tOnly By Dependency: %s\n",
prefix, u->meta.id,
prefix, unit_description(u),
prefix, strna(u->meta.instance),
@ -603,7 +604,8 @@ void unit_dump(Unit *u, FILE *f, const char *prefix) {
prefix, strna(format_timestamp(timestamp2, sizeof(timestamp2), u->meta.active_enter_timestamp)),
prefix, strna(format_timestamp(timestamp3, sizeof(timestamp3), u->meta.active_exit_timestamp)),
prefix, strna(format_timestamp(timestamp4, sizeof(timestamp4), u->meta.inactive_enter_timestamp)),
prefix, yes_no(unit_check_gc(u)));
prefix, yes_no(unit_check_gc(u)),
prefix, yes_no(u->meta.only_by_dependency));
SET_FOREACH(t, u->meta.names, i)
fprintf(f, "%s\tName: %s\n", prefix, t);

View File

@ -136,6 +136,9 @@ struct Meta {
UnitLoadState load_state;
Unit *merged_into;
/* Refuse manual starting, allow starting only indirectly via dependency. */
bool only_by_dependency;
char *id; /* One name is special because we use it for identification. Points to an entry in the names set */
char *instance;