1 # Matches Systemd Service Limit Struct
2 type Systemd::ServiceLimits = Struct[
4 Optional['LimitCPU'] => Pattern['^\d+(s|m|h|d|w|M|y)?(:\d+(s|m|h|d|w|M|y)?)?$'],
5 Optional['LimitFSIZE'] => Pattern['^(infinity|((\d+(K|M|G|T|P|E)(:\d+(K|M|G|T|P|E))?)))$'],
6 Optional['LimitDATA'] => Pattern['^(infinity|((\d+(K|M|G|T|P|E)(:\d+(K|M|G|T|P|E))?)))$'],
7 Optional['LimitSTACK'] => Pattern['^(infinity|((\d+(K|M|G|T|P|E)(:\d+(K|M|G|T|P|E))?)))$'],
8 Optional['LimitCORE'] => Pattern['^(infinity|((\d+(K|M|G|T|P|E)(:\d+(K|M|G|T|P|E))?)))$'],
9 Optional['LimitRSS'] => Pattern['^(infinity|((\d+(K|M|G|T|P|E)(:\d+(K|M|G|T|P|E))?)))$'],
10 Optional['LimitNOFILE'] => Variant[Integer[-1],Pattern['^(infinity|\d+(:(infinity|\d+))?)$']],
11 Optional['LimitAS'] => Pattern['^(infinity|((\d+(K|M|G|T|P|E)(:\d+(K|M|G|T|P|E))?)))$'],
12 Optional['LimitNPROC'] => Integer[1],
13 Optional['LimitMEMLOCK'] => Pattern['^(infinity|((\d+(K|M|G|T|P|E)(:\d+(K|M|G|T|P|E))?)))$'],
14 Optional['LimitLOCKS'] => Integer[1],
15 Optional['LimitSIGPENDING'] => Integer[1],
16 Optional['LimitMSGQUEUE'] => Pattern['^(infinity|((\d+(K|M|G|T|P|E)(:\d+(K|M|G|T|P|E))?)))$'],
17 Optional['LimitNICE'] => Variant[Integer[0,40], Pattern['^(-\+([0-1]?[0-9]|20))|([0-3]?[0-9]|40)$']],
18 Optional['LimitRTPRIO'] => Integer[0],
19 Optional['LimitRTTIME'] => Pattern['^\d+(ms|s|m|h|d|w|M|y)?(:\d+(ms|s|m|h|d|w|M|y)?)?$'],
20 Optional['CPUAccounting'] => Boolean,
21 Optional['CPUShares'] => Integer[2,262144],
22 Optional['StartupCPUShares'] => Integer[2,262144],
23 Optional['CPUQuota'] => Pattern['^([1-9][0-9]?$|^100)%$'],
24 Optional['MemoryAccounting'] => Boolean,
25 Optional['MemoryLow'] => Pattern['^(\d+(K|M|G|T)?)$'],
26 Optional['MemoryHigh'] => Pattern['^(\d+(K|M|G|T)?)$'],
27 Optional['MemoryMax'] => Pattern['^(\d+(K|M|G|T)?)$'],
28 Optional['MemoryLimit'] => Pattern['^(\d+(K|M|G|T)?)$'],
29 Optional['TasksAccounting'] => Boolean,
30 Optional['TasksMax'] => Variant[Integer[1],Pattern['^(infinity|([1-9][0-9]?$|^100)%)$']],
31 Optional['IOAccounting'] => Boolean,
32 Optional['IOWeight'] => Integer[1,10000],
33 Optional['StartupIOWeight'] => Integer[1,10000],
34 Optional['IODeviceWeight'] => Array[Hash[Stdlib::Absolutepath, Integer[1,10000], 1, 1]],
35 Optional['IOReadBandwidthMax'] => Array[Hash[Stdlib::Absolutepath, Pattern['^(\d+(K|M|G|T)?)$'], 1, 1]],
36 Optional['IOWriteBandwidthMax'] => Array[Hash[Stdlib::Absolutepath, Pattern['^(\d+(K|M|G|T)?)$'], 1, 1]],
37 Optional['IOReadIOPSMax'] => Array[Hash[Stdlib::Absolutepath, Pattern['^(\d+(K|M|G|T)?)$'], 1, 1]],
38 Optional['IOWriteIOPSMax'] => Array[Hash[Stdlib::Absolutepath, Pattern['^(\d+(K|M|G|T)?)$'], 1, 1]],
39 Optional['DeviceAllow'] => String[1],
40 Optional['DevicePolicy'] => Enum['auto','closed','strict'],
41 Optional['Slice'] => String[1],
42 Optional['Delegate'] => Boolean