documentation: add document listing all unit file settings also supported for transie...
authorLennart Poettering <lennart@poettering.net>
Thu, 23 Nov 2017 19:26:02 +0000 (20:26 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 29 Nov 2017 11:34:12 +0000 (12:34 +0100)
Unfortunately, there are far too many properties currently not
accessible to transient units. The first step to opening them all up is
to figure out which ones they are.

TRANSIENT-SETTINGS.md [new file with mode: 0644]

diff --git a/TRANSIENT-SETTINGS.md b/TRANSIENT-SETTINGS.md
new file mode 100644 (file)
index 0000000..17fe060
--- /dev/null
@@ -0,0 +1,447 @@
+# What settings are currently available for transient units?
+
+Our intention is to make all settings that are available as unit file settings
+also available for transient units, through the D-Bus API. At the moment, some
+unit types (socket, swap, path) are not supported at all via unit types, but
+most others are pretty well supported, with some notable omissions.
+
+The lists below contain all settings currently available in unit files. The
+ones currently available in transient units are prefixed with `✓`.
+
+## Generic Unit Settings
+
+Only the most important generic unit settings are available for transient units.
+
+```
+✓ Description=
+  Documentation=
+  SourcePath=
+✓ Requires=
+✓ Requisite=
+✓ Wants=
+✓ BindsTo=
+✓ Conflicts=
+✓ Before=
+✓ After=
+✓ OnFailure=
+✓ PropagatesReloadTo=
+✓ ReloadPropagatedFrom=
+✓ PartOf=
+  JoinsNamespaceOf=
+  RequiresMountsFor=
+  StopWhenUnneeded=
+  RefuseManualStart=
+  RefuseManualStop=
+  AllowIsolate=
+✓ DefaultDependencies=
+  OnFailureJobMode=
+  OnFailureIsolate=
+  IgnoreOnIsolate=
+  JobTimeoutSec=
+  JobRunningTimeoutSec=
+  JobTimeoutAction=
+  JobTimeoutRebootArgument=
+  StartLimitIntervalSec=SECONDS
+  StartLimitBurst=UNSIGNED
+  StartLimitAction=ACTION
+✓ FailureAction=
+✓ SuccessAction=
+✓ AddRef=
+  RebootArgument=STRING
+  ConditionPathExists=
+  ConditionPathExistsGlob=
+  ConditionPathIsDirectory=
+  ConditionPathIsSymbolicLink=
+  ConditionPathIsMountPoint=
+  ConditionPathIsReadWrite=
+  ConditionDirectoryNotEmpty=
+  ConditionFileNotEmpty=
+  ConditionFileIsExecutable=
+  ConditionNeedsUpdate=
+  ConditionFirstBoot=
+  ConditionKernelCommandLine=
+  ConditionArchitecture=
+  ConditionVirtualization=
+  ConditionSecurity=
+  ConditionCapability=
+  ConditionHost=
+  ConditionACPower=
+  ConditionUser=
+  ConditionGroup=
+  AssertPathExists=
+  AssertPathExistsGlob=
+  AssertPathIsDirectory=
+  AssertPathIsSymbolicLink=
+  AssertPathIsMountPoint=
+  AssertPathIsReadWrite=
+  AssertDirectoryNotEmpty=
+  AssertFileNotEmpty=
+  AssertFileIsExecutable=
+  AssertNeedsUpdate=
+  AssertFirstBoot=
+  AssertKernelCommandLine=
+  AssertArchitecture=
+  AssertVirtualization=
+  AssertSecurity=
+  AssertCapability=
+  AssertHost=
+  AssertACPower=
+  AssertUser=
+  AssertGroup=
+✓ CollectMode=
+```
+
+## Execution-Related Settings
+
+All execution-related settings are available for transient units.
+
+```
+✓ WorkingDirectory=
+✓ RootDirectory=
+✓ RootImage=
+✓ User=
+✓ Group=
+✓ SupplementaryGroups=
+✓ Nice=
+✓ OOMScoreAdjust=
+✓ IOSchedulingClass=
+✓ IOSchedulingPriority=
+✓ CPUSchedulingPolicy=
+✓ CPUSchedulingPriority=
+✓ CPUSchedulingResetOnFork=
+✓ CPUAffinity=
+✓ UMask=
+✓ Environment=
+✓ EnvironmentFile=
+✓ PassEnvironment=
+✓ UnsetEnvironment=
+✓ DynamicUser=
+✓ RemoveIPC=
+✓ StandardInput=
+✓ StandardOutput=
+✓ StandardError=
+✓ StandardInputText=
+✓ StandardInputData=
+✓ TTYPath=
+✓ TTYReset=
+✓ TTYVHangup=
+✓ TTYVTDisallocate=
+✓ SyslogIdentifier=
+✓ SyslogFacility=
+✓ SyslogLevel=
+✓ SyslogLevelPrefix=
+✓ LogLevelMax=
+✓ LogExtraFields=
+✓ SecureBits=
+✓ CapabilityBoundingSet=
+✓ AmbientCapabilities=
+✓ TimerSlackNSec=
+✓ NoNewPrivileges=
+✓ KeyringMode=
+✓ SystemCallFilter=
+✓ SystemCallArchitectures=
+✓ SystemCallErrorNumber=
+✓ MemoryDenyWriteExecute=
+✓ RestrictNamespaces=
+✓ RestrictRealtime=
+✓ RestrictAddressFamilies=
+✓ LockPersonality=
+✓ LimitCPU=
+✓ LimitFSIZE=
+✓ LimitDATA=
+✓ LimitSTACK=
+✓ LimitCORE=
+✓ LimitRSS=
+✓ LimitNOFILE=
+✓ LimitAS=
+✓ LimitNPROC=
+✓ LimitMEMLOCK=
+✓ LimitLOCKS=
+✓ LimitSIGPENDING=
+✓ LimitMSGQUEUE=
+✓ LimitNICE=
+✓ LimitRTPRIO=
+✓ LimitRTTIME=
+✓ ReadWritePaths=
+✓ ReadOnlyPaths=
+✓ InaccessiblePaths=
+✓ BindPaths=
+✓ BindReadOnlyPaths=
+✓ PrivateTmp=
+✓ PrivateDevices=
+✓ ProtectKernelTunables=
+✓ ProtectKernelModules=
+✓ ProtectControlGroups=
+✓ PrivateNetwork=
+✓ PrivateUsers=
+✓ ProtectSystem=
+✓ ProtectHome=
+✓ MountFlags=
+✓ MountAPIVFS=
+✓ Personality=
+✓ RuntimeDirectoryPreserve=
+✓ RuntimeDirectoryMode=
+✓ RuntimeDirectory=
+✓ StateDirectoryMode=
+✓ StateDirectory=
+✓ CacheDirectoryMode=
+✓ CacheDirectory=
+✓ LogsDirectoryMode=
+✓ LogsDirectory=
+✓ ConfigurationDirectoryMode=
+✓ ConfigurationDirectory=
+✓ PAMName=
+✓ IgnoreSIGPIPE=
+✓ UtmpIdentifier=
+✓ UtmpMode=
+✓ SELinuxContext=
+✓ SmackProcessLabel=
+✓ AppArmorProfile=
+✓ Slice=
+```
+
+## Resource Control Settings
+
+All cgroup/resource control settings are available for transient units
+
+```
+✓ CPUAccounting=
+✓ CPUWeight=
+✓ StartupCPUWeight=
+✓ CPUShares=
+✓ StartupCPUShares=
+✓ CPUQuota=
+✓ MemoryAccounting=
+✓ MemoryLow=
+✓ MemoryHigh=
+✓ MemoryMax=
+✓ MemorySwapMax=
+✓ MemoryLimit=
+✓ DeviceAllow=
+✓ DevicePolicy=
+✓ IOAccounting=
+✓ IOWeight=
+✓ StartupIOWeight=
+✓ IODeviceWeight=
+✓ IOReadBandwidthMax=
+✓ IOWriteBandwidthMax=
+✓ IOReadIOPSMax=
+✓ IOWriteIOPSMax=
+✓ BlockIOAccounting=
+✓ BlockIOWeight=
+✓ StartupBlockIOWeight=
+✓ BlockIODeviceWeight=
+✓ BlockIOReadBandwidth=
+✓ BlockIOWriteBandwidth=
+✓ TasksAccounting=
+✓ TasksMax=
+✓ Delegate=
+✓ IPAccounting=
+✓ IPAddressAllow=
+✓ IPAddressDeny=
+```
+
+## Process Killing Settings
+
+All process killing settings are available for transient units:
+
+```
+✓ SendSIGKILL=
+✓ SendSIGHUP=
+✓ KillMode=
+✓ KillSignal=
+```
+
+## Service Unit Settings
+
+Only the most important service settings are available for transient units.
+
+```
+  PIDFile=
+✓ ExecStartPre=
+✓ ExecStart=
+✓ ExecStartPost=
+✓ ExecReload=
+✓ ExecStop=
+✓ ExecStopPost=
+  RestartSec=
+  TimeoutStartSec=
+  TimeoutStopSec=
+  TimeoutSec=
+✓ RuntimeMaxSec=
+  WatchdogSec=
+✓ Type=
+✓ Restart=
+  PermissionsStartOnly=
+  RootDirectoryStartOnly=
+✓ RemainAfterExit=
+  GuessMainPID=
+  RestartPreventExitStatus=
+  RestartForceExitStatus=
+  SuccessExitStatus=
+✓ NonBlocking=
+  BusName=
+✓ FileDescriptorStoreMax=
+✓ NotifyAccess=
+  Sockets=
+  USBFunctionDescriptors=
+  USBFunctionStrings=
+```
+
+## Mount Unit Settings
+
+Only the most important mount unit settings are currently available to transient units:
+
+```
+✓ What=
+  Where=
+✓ Options=
+✓ Type=
+  TimeoutSec=
+  DirectoryMode=
+  SloppyOptions=
+  LazyUnmount=
+  ForceUnmount=
+```
+
+## Automount Unit Settings
+
+Only one automount unit setting is currently available to transient units:
+
+```
+  Where=
+  DirectoryMode=
+✓ TimeoutIdleSec=
+```
+
+## Timer Unit Settings
+
+Most timer unit settings are available to transient units.
+
+```
+✓ OnCalendar=
+✓ OnActiveSec=
+✓ OnBootSec=
+✓ OnStartupSec=
+✓ OnUnitActiveSec=
+✓ OnUnitInactiveSec=
+  Persistent=
+✓ WakeSystem=
+✓ RemainAfterElapse=
+✓ AccuracySec=
+✓ RandomizedDelaySec=
+  Unit=
+```
+
+## Slice Unit Settings
+
+Slice units are fully supported as transient units, but they have no settings
+of their own beyond the generic unit and resource control settings.
+
+## Scope Unit Settings
+
+Scope units are fully supported as transient units (in fact they only exist as
+such), but they have no settings of their own beyond the generic unit and
+resource control settings.
+
+## Socket Unit Settings
+
+Socket units are currently not available at all as transient units:
+
+```
+  ListenStream=
+  ListenDatagram=
+  ListenSequentialPacket=
+  ListenFIFO=
+  ListenNetlink=
+  ListenSpecial=
+  ListenMessageQueue=
+  ListenUSBFunction=
+  SocketProtocol=
+  BindIPv6Only=
+  Backlog=
+  BindToDevice=
+  ExecStartPre=
+  ExecStartPost=
+  ExecStopPre=
+  ExecStopPost=
+  TimeoutSec=
+  SocketUser=
+  SocketGroup=
+  SocketMode=
+  DirectoryMode=
+  Accept=
+  Writable=
+  MaxConnections=
+  MaxConnectionsPerSource=
+  KeepAlive=
+  KeepAliveTimeSec=
+  KeepAliveIntervalSec=
+  KeepAliveProbes=
+  DeferAcceptSec=
+  NoDelay=
+  Priority=
+  ReceiveBuffer=
+  SendBuffer=
+  IPTOS=
+  IPTTL=
+  Mark=
+  PipeSize=
+  FreeBind=
+  Transparent=
+  Broadcast=
+  PassCredentials=
+  PassSecurity=
+  TCPCongestion=
+  ReusePort=
+  MessageQueueMaxMessages=
+  MessageQueueMessageSize=
+  RemoveOnStop=
+  Symlinks=
+  FileDescriptorName=
+  Service=
+  TriggerLimitIntervalSec=
+  TriggerLimitBurst=
+  SmackLabel=
+  SmackLabelIPIn=
+  SmackLabelIPOut=
+  SELinuxContextFromNet=
+```
+
+## Swap Unit Settings
+
+Swap units are currently not available at all as transient units:
+
+```
+  What=
+  Priority=
+  Options=
+  TimeoutSec=
+```
+
+## Path Unit Settings
+
+Path units are currently not available at all as transient units:
+
+```
+  PathExists=
+  PathExistsGlob=
+  PathChanged=
+  PathModified=
+  DirectoryNotEmpty=
+  Unit=
+  MakeDirectory=
+  DirectoryMode=
+```
+
+## Install Section
+
+The `[Install]` section is currently not available at all for transient units, and it probably doesn't even make sense.
+
+```
+  Alias=
+  WantedBy=
+  RequiredBy=
+  Also=
+  DefaultInstance=
+```