From 4eff0c8cf284a6007122aec731e4d97059750166 Mon Sep 17 00:00:00 2001 From: Valentin Rothberg Date: Wed, 13 Apr 2022 16:21:21 +0200 Subject: pod: add exit policies Add the notion of an "exit policy" to a pod. This policy controls the behaviour when the last container of pod exits. Initially, there are two policies: - "continue" : the pod continues running. This is the default policy when creating a pod. - "stop" : stop the pod when the last container exits. This is the default behaviour for `play kube`. In order to implement the deferred stop of a pod, add a worker queue to the libpod runtime. The queue will pick up work items and in this case helps resolve dead locks that would otherwise occur if we attempted to stop a pod during container cleanup. Note that the default restart policy of `play kube` is "Always". Hence, in order to really solve #13464, the YAML files must set a custom restart policy; the tests use "OnFailure". Fixes: #13464 Signed-off-by: Valentin Rothberg --- cmd/podman/common/completion.go | 5 +++++ cmd/podman/pods/create.go | 4 ++++ 2 files changed, 9 insertions(+) (limited to 'cmd') diff --git a/cmd/podman/common/completion.go b/cmd/podman/common/completion.go index ddf922b2a..6149a4465 100644 --- a/cmd/podman/common/completion.go +++ b/cmd/podman/common/completion.go @@ -492,6 +492,11 @@ func AutocompleteImages(cmd *cobra.Command, args []string, toComplete string) ([ return getImages(cmd, toComplete) } +// AutocompletePodExitPolicy - Autocomplete pod exit policy. +func AutocompletePodExitPolicy(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { + return config.PodExitPolicies, cobra.ShellCompDirectiveNoFileComp +} + // AutocompleteCreateRun - Autocomplete only the fist argument as image and then do file completion. func AutocompleteCreateRun(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { if !validCurrentCmdLine(cmd, args, toComplete) { diff --git a/cmd/podman/pods/create.go b/cmd/podman/pods/create.go index 4623ade63..62f820790 100644 --- a/cmd/podman/pods/create.go +++ b/cmd/podman/pods/create.go @@ -72,6 +72,10 @@ func init() { flags.StringVarP(&createOptions.Name, nameFlagName, "n", "", "Assign a name to the pod") _ = createCommand.RegisterFlagCompletionFunc(nameFlagName, completion.AutocompleteNone) + policyFlag := "exit-policy" + flags.StringVarP(&createOptions.ExitPolicy, policyFlag, "", string(containerConfig.Engine.PodExitPolicy), "Behaviour when the last container exits") + _ = createCommand.RegisterFlagCompletionFunc(policyFlag, common.AutocompletePodExitPolicy) + infraImageFlagName := "infra-image" var defInfraImage string if !registry.IsRemote() { -- cgit v1.2.3-54-g00ecf