Allow for OomScoreAdj

Signed-off-by: plaurent <patrick@saint-laurent.us>
(cherry picked from commit aa2c2cd906)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
plaurent 2024-07-08 13:39:15 -04:00 committed by Sebastiaan van Stijn
parent fb19def3ce
commit c599566439
No known key found for this signature in database
GPG Key ID: 76698F39D527CE8C
9 changed files with 17 additions and 0 deletions

View File

@ -68,6 +68,8 @@ func newCreateCommand(dockerCli command.Cli) *cobra.Command {
flags.SetAnnotation(flagSysCtl, "version", []string{"1.40"}) flags.SetAnnotation(flagSysCtl, "version", []string{"1.40"})
flags.Var(&opts.ulimits, flagUlimit, "Ulimit options") flags.Var(&opts.ulimits, flagUlimit, "Ulimit options")
flags.SetAnnotation(flagUlimit, "version", []string{"1.41"}) flags.SetAnnotation(flagUlimit, "version", []string{"1.41"})
flags.Int64Var(&opts.oomScoreAdj, flagOomScoreAdj, 0, "Tune host's OOM preferences (-1000 to 1000) ")
flags.SetAnnotation(flagOomScoreAdj, "version", []string{"1.46"})
flags.Var(cliopts.NewListOptsRef(&opts.resources.resGenericResources, ValidateSingleGenericResource), "generic-resource", "User defined resources") flags.Var(cliopts.NewListOptsRef(&opts.resources.resGenericResources, ValidateSingleGenericResource), "generic-resource", "User defined resources")
flags.SetAnnotation(flagHostAdd, "version", []string{"1.32"}) flags.SetAnnotation(flagHostAdd, "version", []string{"1.32"})

View File

@ -529,6 +529,7 @@ type serviceOptions struct {
capAdd opts.ListOpts capAdd opts.ListOpts
capDrop opts.ListOpts capDrop opts.ListOpts
ulimits opts.UlimitOpt ulimits opts.UlimitOpt
oomScoreAdj int64
resources resourceOptions resources resourceOptions
stopGrace opts.DurationOpt stopGrace opts.DurationOpt
@ -747,6 +748,7 @@ func (options *serviceOptions) ToService(ctx context.Context, apiClient client.N
CapabilityAdd: capAdd, CapabilityAdd: capAdd,
CapabilityDrop: capDrop, CapabilityDrop: capDrop,
Ulimits: options.ulimits.GetList(), Ulimits: options.ulimits.GetList(),
OomScoreAdj: options.oomScoreAdj,
}, },
Networks: networks, Networks: networks,
Resources: resources, Resources: resources,
@ -1043,6 +1045,7 @@ const (
flagUlimit = "ulimit" flagUlimit = "ulimit"
flagUlimitAdd = "ulimit-add" flagUlimitAdd = "ulimit-add"
flagUlimitRemove = "ulimit-rm" flagUlimitRemove = "ulimit-rm"
flagOomScoreAdj = "oom-score-adj"
) )
func validateAPIVersion(c swarm.ServiceSpec, serverAPIVersion string) error { func validateAPIVersion(c swarm.ServiceSpec, serverAPIVersion string) error {

View File

@ -108,6 +108,8 @@ func newUpdateCommand(dockerCli command.Cli) *cobra.Command {
flags.SetAnnotation(flagUlimitAdd, "version", []string{"1.41"}) flags.SetAnnotation(flagUlimitAdd, "version", []string{"1.41"})
flags.Var(newListOptsVar(), flagUlimitRemove, "Remove a ulimit option") flags.Var(newListOptsVar(), flagUlimitRemove, "Remove a ulimit option")
flags.SetAnnotation(flagUlimitRemove, "version", []string{"1.41"}) flags.SetAnnotation(flagUlimitRemove, "version", []string{"1.41"})
flags.Int64Var(&options.oomScoreAdj, flagOomScoreAdj, 0, "Tune host's OOM preferences (-1000 to 1000) ")
flags.SetAnnotation(flagOomScoreAdj, "version", []string{"1.46"})
// Add needs parsing, Remove only needs the key // Add needs parsing, Remove only needs the key
flags.Var(newListOptsVar(), flagGenericResourcesRemove, "Remove a Generic resource") flags.Var(newListOptsVar(), flagGenericResourcesRemove, "Remove a Generic resource")
@ -367,6 +369,10 @@ func updateService(ctx context.Context, apiClient client.NetworkAPIClient, flags
updateInt64Value(flagReserveMemory, &task.Resources.Reservations.MemoryBytes) updateInt64Value(flagReserveMemory, &task.Resources.Reservations.MemoryBytes)
} }
if anyChanged(flags, flagOomScoreAdj) {
updateInt64(flagOomScoreAdj, &task.ContainerSpec.OomScoreAdj)
}
if err := addGenericResources(flags, task); err != nil { if err := addGenericResources(flags, task); err != nil {
return err return err
} }

View File

@ -148,6 +148,7 @@ func Service(
CapabilityAdd: capAdd, CapabilityAdd: capAdd,
CapabilityDrop: capDrop, CapabilityDrop: capDrop,
Ulimits: convertUlimits(service.Ulimits), Ulimits: convertUlimits(service.Ulimits),
OomScoreAdj: service.OomScoreAdj,
}, },
LogDriver: logDriver, LogDriver: logDriver,
Resources: resources, Resources: resources,

View File

@ -29,6 +29,7 @@ var interpolateTypeCastMapping = map[interp.Path]interp.Cast{
servicePath("ulimits", interp.PathMatchAll, "hard"): toInt, servicePath("ulimits", interp.PathMatchAll, "hard"): toInt,
servicePath("ulimits", interp.PathMatchAll, "soft"): toInt, servicePath("ulimits", interp.PathMatchAll, "soft"): toInt,
servicePath("privileged"): toBoolean, servicePath("privileged"): toBoolean,
servicePath("oom_score_adj"): toInt,
servicePath("read_only"): toBoolean, servicePath("read_only"): toBoolean,
servicePath("stdin_open"): toBoolean, servicePath("stdin_open"): toBoolean,
servicePath("tty"): toBoolean, servicePath("tty"): toBoolean,

View File

@ -287,6 +287,7 @@
} }
} }
}, },
"oom_score_adj": {"type": "integer"},
"user": {"type": "string"}, "user": {"type": "string"},
"userns_mode": {"type": "string"}, "userns_mode": {"type": "string"},
"volumes": { "volumes": {

View File

@ -207,6 +207,7 @@ type ServiceConfig struct {
Tty bool `mapstructure:"tty" yaml:"tty,omitempty" json:"tty,omitempty"` Tty bool `mapstructure:"tty" yaml:"tty,omitempty" json:"tty,omitempty"`
Ulimits map[string]*UlimitsConfig `yaml:",omitempty" json:"ulimits,omitempty"` Ulimits map[string]*UlimitsConfig `yaml:",omitempty" json:"ulimits,omitempty"`
User string `yaml:",omitempty" json:"user,omitempty"` User string `yaml:",omitempty" json:"user,omitempty"`
OomScoreAdj int64 `yaml:",omitempty" json:"oom_score_adj,omitempty"`
UserNSMode string `mapstructure:"userns_mode" yaml:"userns_mode,omitempty" json:"userns_mode,omitempty"` UserNSMode string `mapstructure:"userns_mode" yaml:"userns_mode,omitempty" json:"userns_mode,omitempty"`
Volumes []ServiceVolumeConfig `yaml:",omitempty" json:"volumes,omitempty"` Volumes []ServiceVolumeConfig `yaml:",omitempty" json:"volumes,omitempty"`
WorkingDir string `mapstructure:"working_dir" yaml:"working_dir,omitempty" json:"working_dir,omitempty"` WorkingDir string `mapstructure:"working_dir" yaml:"working_dir,omitempty" json:"working_dir,omitempty"`

View File

@ -46,6 +46,7 @@ Create a new service
| [`--network`](#network) | `network` | | Network attachments | | [`--network`](#network) | `network` | | Network attachments |
| `--no-healthcheck` | `bool` | | Disable any container-specified HEALTHCHECK | | `--no-healthcheck` | `bool` | | Disable any container-specified HEALTHCHECK |
| `--no-resolve-image` | `bool` | | Do not query the registry to resolve image digest and supported platforms | | `--no-resolve-image` | `bool` | | Do not query the registry to resolve image digest and supported platforms |
| `--oom-score-adj` | `int64` | `0` | Tune host's OOM preferences (-1000 to 1000) |
| [`--placement-pref`](#placement-pref) | `pref` | | Add a placement preference | | [`--placement-pref`](#placement-pref) | `pref` | | Add a placement preference |
| [`-p`](#publish), [`--publish`](#publish) | `port` | | Publish a port as a node port | | [`-p`](#publish), [`--publish`](#publish) | `port` | | Publish a port as a node port |
| `-q`, `--quiet` | `bool` | | Suppress progress output | | `-q`, `--quiet` | `bool` | | Suppress progress output |

View File

@ -59,6 +59,7 @@ Update a service
| `--network-rm` | `list` | | Remove a network | | `--network-rm` | `list` | | Remove a network |
| `--no-healthcheck` | `bool` | | Disable any container-specified HEALTHCHECK | | `--no-healthcheck` | `bool` | | Disable any container-specified HEALTHCHECK |
| `--no-resolve-image` | `bool` | | Do not query the registry to resolve image digest and supported platforms | | `--no-resolve-image` | `bool` | | Do not query the registry to resolve image digest and supported platforms |
| `--oom-score-adj` | `int64` | `0` | Tune host's OOM preferences (-1000 to 1000) |
| `--placement-pref-add` | `pref` | | Add a placement preference | | `--placement-pref-add` | `pref` | | Add a placement preference |
| `--placement-pref-rm` | `pref` | | Remove a placement preference | | `--placement-pref-rm` | `pref` | | Remove a placement preference |
| [`--publish-add`](#publish-add) | `port` | | Add or update a published port | | [`--publish-add`](#publish-add) | `port` | | Add or update a published port |