307 lines
9.8 KiB
JSON
307 lines
9.8 KiB
JSON
{
|
|
"format": 1,
|
|
"seat": "node-service-manager",
|
|
"scope": "node",
|
|
"grain": "seat-list",
|
|
"domain": "Placement",
|
|
"decision": "novox/hq ADR 0177",
|
|
"verbs": [
|
|
{
|
|
"name": "units",
|
|
"description": "The units the service manager knows in a scope, each with its load, active and sub state; narrowed to a pattern when asked.",
|
|
"replaces": [
|
|
"systemctl list-units"
|
|
],
|
|
"input": {
|
|
"properties": {
|
|
"pattern": {
|
|
"description": "a glob the unit's name must match (optional)",
|
|
"type": "string"
|
|
},
|
|
"scope": {
|
|
"description": "\"system\" (the default) or \"user\": the operator account's own manager",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"type": "object"
|
|
}
|
|
},
|
|
{
|
|
"name": "status",
|
|
"description": "One unit as the service manager sees it now: its states, whether it starts at boot, its main process, and whether the mesh declares it.",
|
|
"replaces": [
|
|
"systemctl status",
|
|
"systemctl is-active"
|
|
],
|
|
"input": {
|
|
"properties": {
|
|
"scope": {
|
|
"description": "\"system\" (the default) or \"user\": the operator account's own manager",
|
|
"type": "string"
|
|
},
|
|
"unit": {
|
|
"description": "the unit's name, as the service manager knows it",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"unit"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
{
|
|
"name": "start",
|
|
"description": "Start one unit. For a unit the mesh declares, the answer says the host will restore what its declaration says at the next apply.",
|
|
"replaces": [
|
|
"systemctl start"
|
|
],
|
|
"input": {
|
|
"properties": {
|
|
"scope": {
|
|
"description": "\"system\" (the default) or \"user\": the operator account's own manager",
|
|
"type": "string"
|
|
},
|
|
"unit": {
|
|
"description": "the unit's name, as the service manager knows it",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"unit"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
{
|
|
"name": "stop",
|
|
"description": "Stop one unit; for a mesh-declared unit the answer says the host will restore its declared state.",
|
|
"replaces": [
|
|
"systemctl stop"
|
|
],
|
|
"input": {
|
|
"properties": {
|
|
"scope": {
|
|
"description": "\"system\" (the default) or \"user\": the operator account's own manager",
|
|
"type": "string"
|
|
},
|
|
"unit": {
|
|
"description": "the unit's name, as the service manager knows it",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"unit"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
{
|
|
"name": "restart",
|
|
"description": "Restart one unit.",
|
|
"replaces": [
|
|
"systemctl restart"
|
|
],
|
|
"input": {
|
|
"properties": {
|
|
"scope": {
|
|
"description": "\"system\" (the default) or \"user\": the operator account's own manager",
|
|
"type": "string"
|
|
},
|
|
"unit": {
|
|
"description": "the unit's name, as the service manager knows it",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"unit"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
{
|
|
"name": "enable",
|
|
"description": "Make one unit start at boot (or at the account's login, in user scope).",
|
|
"replaces": [
|
|
"systemctl enable"
|
|
],
|
|
"input": {
|
|
"properties": {
|
|
"scope": {
|
|
"description": "\"system\" (the default) or \"user\": the operator account's own manager",
|
|
"type": "string"
|
|
},
|
|
"unit": {
|
|
"description": "the unit's name, as the service manager knows it",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"unit"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
{
|
|
"name": "disable",
|
|
"description": "Stop one unit starting at boot (or at login, in user scope).",
|
|
"replaces": [
|
|
"systemctl disable"
|
|
],
|
|
"input": {
|
|
"properties": {
|
|
"scope": {
|
|
"description": "\"system\" (the default) or \"user\": the operator account's own manager",
|
|
"type": "string"
|
|
},
|
|
"unit": {
|
|
"description": "the unit's name, as the service manager knows it",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"unit"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
{
|
|
"name": "journal",
|
|
"description": "The last lines of one unit's journal (at most 2000), in a time window and narrowed to a priority and to lines holding a text when asked. A secret the unit printed is shown as [redacted: \u003cwhat it was\u003e].",
|
|
"replaces": [
|
|
"journalctl"
|
|
],
|
|
"input": {
|
|
"properties": {
|
|
"lines": {
|
|
"description": "how many lines from the end of what matches (default 100, at most 2000)",
|
|
"type": "string"
|
|
},
|
|
"match": {
|
|
"description": "only the lines holding this text, as written — a fixed string, not a pattern (optional)",
|
|
"type": "string"
|
|
},
|
|
"priority": {
|
|
"description": "only entries this severe or more: 0-7 or emerg, alert, crit, err, warning, notice, info, debug (optional)",
|
|
"type": "string"
|
|
},
|
|
"scope": {
|
|
"description": "\"system\" (the default) or \"user\": the operator account's own manager",
|
|
"type": "string"
|
|
},
|
|
"since": {
|
|
"description": "the window's start: an RFC 3339 time (2026-10-07T09:30:00Z) or relative to now (-30min, -2h, yesterday) (optional)",
|
|
"type": "string"
|
|
},
|
|
"unit": {
|
|
"description": "the unit's name, as the service manager knows it",
|
|
"type": "string"
|
|
},
|
|
"until": {
|
|
"description": "the window's end, in the same forms (optional; now when absent)",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"unit"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
{
|
|
"name": "failed",
|
|
"description": "Every failed unit on this machine, in the system manager and in the operator account's; a manager that does not answer is reported with its error, never as nothing failed.",
|
|
"optional": true,
|
|
"replaces": [
|
|
"systemctl --failed"
|
|
],
|
|
"input": {
|
|
"properties": {
|
|
"scope": {
|
|
"description": "\"system\" or \"user\": only that manager (both when absent)",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"type": "object"
|
|
}
|
|
},
|
|
{
|
|
"name": "reset-failed",
|
|
"description": "Clear one unit's failed record in its manager — its failed state and its start-limit count — and answer its state after. It removes no file and starts nothing.",
|
|
"replaces": [
|
|
"systemctl reset-failed"
|
|
],
|
|
"input": {
|
|
"properties": {
|
|
"scope": {
|
|
"description": "\"system\" (the default) or \"user\": the operator account's own manager",
|
|
"type": "string"
|
|
},
|
|
"unit": {
|
|
"description": "the unit's name, as the service manager knows it",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"unit"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
{
|
|
"name": "wanted-by",
|
|
"description": "What wants, requires or triggers one unit, read-only: the manager's reverse dependencies (WantedBy, RequiredBy, UpheldBy, BoundBy, TriggeredBy and the rest) and every enable link naming it in the scope's configuration directories (*.wants, *.requires, *.upholds), each with where it points and whether it dangles — the account's own directory included in user scope.",
|
|
"replaces": [
|
|
"systemctl list-dependencies --reverse",
|
|
"systemctl show -p WantedBy",
|
|
"ls ~/.config/systemd/user/*.wants"
|
|
],
|
|
"input": {
|
|
"properties": {
|
|
"scope": {
|
|
"description": "\"system\" (the default) or \"user\": the operator account's own manager",
|
|
"type": "string"
|
|
},
|
|
"unit": {
|
|
"description": "the unit's name, as the service manager knows it",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"unit"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
{
|
|
"name": "unlink-dangling",
|
|
"description": "Remove the dangling enable links named for one unit — links in a *.wants, *.requires or *.upholds directory of the account's or the machine's own configuration whose target does not exist, which `disable` leaves once the unit's file is gone — on the person's word: `why` is required. Each is recorded (its path, its target, the reason) before it is removed, and the manager reloaded; a link whose target exists, or one a package, a generator or the runtime placed, is left and said.",
|
|
"replaces": [
|
|
"rm ~/.config/systemd/user/*.wants/\u003cunit\u003e",
|
|
"unlink /etc/systemd/system/*.wants/\u003cunit\u003e"
|
|
],
|
|
"input": {
|
|
"properties": {
|
|
"scope": {
|
|
"description": "\"system\" (the default) or \"user\": the operator account's own manager",
|
|
"type": "string"
|
|
},
|
|
"unit": {
|
|
"description": "the unit's name, as the service manager knows it",
|
|
"type": "string"
|
|
},
|
|
"why": {
|
|
"description": "the person's reason for removing the links, kept in the record",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"unit",
|
|
"why"
|
|
],
|
|
"type": "object"
|
|
}
|
|
}
|
|
]
|
|
}
|