diff --git a/cmd/podman/kube/play.go b/cmd/podman/kube/play.go index c850641eaf..c21dc6ef7c 100644 --- a/cmd/podman/kube/play.go +++ b/cmd/podman/kube/play.go @@ -176,6 +176,9 @@ func playFlags(cmd *cobra.Command) { flags.BoolVar(&playOptions.UseLongAnnotations, noTruncFlagName, false, "Use annotations that are not truncated to the Kubernetes maximum length of 63 characters") _ = flags.MarkHidden(noTruncFlagName) + noPodPrefix := "no-pod-prefix" + flags.BoolVar(&playOptions.NoPodPrefix, noPodPrefix, false, "Do not prefix container name with pod name") + if !registry.IsRemote() { certDirFlagName := "cert-dir" flags.StringVar(&playOptions.CertDir, certDirFlagName, "", "`Pathname` of a directory containing TLS certificates and keys") @@ -205,9 +208,6 @@ func playFlags(cmd *cobra.Command) { exitFlagName := "service-exit-code-propagation" flags.StringVar(&playOptions.ExitCodePropagation, exitFlagName, "", "Exit-code propagation of the service container") _ = flags.MarkHidden(exitFlagName) - - noPodPrefix := "no-pod-prefix" - flags.BoolVar(&playOptions.NoPodPrefix, noPodPrefix, false, "Don't use pod name as prefix in resulting container name.") } } diff --git a/docs/source/markdown/podman-kube-play.1.md.in b/docs/source/markdown/podman-kube-play.1.md.in index 1aef64c2a6..9876af730f 100644 --- a/docs/source/markdown/podman-kube-play.1.md.in +++ b/docs/source/markdown/podman-kube-play.1.md.in @@ -262,7 +262,7 @@ This option conflicts with host added in the Kubernetes YAML. #### **--no-pod-prefix** -Don't use pod name as prefix in resulting container name. +Do not prefix container name with pod name. #### **--publish**=*[[ip:][hostPort]:]containerPort[/protocol]* diff --git a/pkg/api/handlers/libpod/kube.go b/pkg/api/handlers/libpod/kube.go index 9e2f7ecbb4..6b6a47e2d0 100644 --- a/pkg/api/handlers/libpod/kube.go +++ b/pkg/api/handlers/libpod/kube.go @@ -123,6 +123,7 @@ func KubePlay(w http.ResponseWriter, r *http.Request) { Userns string `schema:"userns"` Wait bool `schema:"wait"` Build bool `schema:"build"` + NoPodPrefix bool `schema:"noPodPrefix"` }{ TLSVerify: true, Start: true, @@ -198,6 +199,7 @@ func KubePlay(w http.ResponseWriter, r *http.Request) { Userns: query.Userns, Wait: query.Wait, ContextDir: contextDirectory, + NoPodPrefix: query.NoPodPrefix, } if _, found := r.URL.Query()["build"]; found { options.Build = types.NewOptionalBool(query.Build) diff --git a/pkg/bindings/kube/types.go b/pkg/bindings/kube/types.go index c2e86a2dda..38c22b1c60 100644 --- a/pkg/bindings/kube/types.go +++ b/pkg/bindings/kube/types.go @@ -63,6 +63,7 @@ type PlayOptions struct { // Wait - indicates whether to return after having created the pods Wait *bool ServiceContainer *bool + NoPodPrefix *bool } // ApplyOptions are optional options for applying kube YAML files to a k8s cluster diff --git a/pkg/bindings/kube/types_play_options.go b/pkg/bindings/kube/types_play_options.go index e7c82eaf31..2323df08f0 100644 --- a/pkg/bindings/kube/types_play_options.go +++ b/pkg/bindings/kube/types_play_options.go @@ -407,3 +407,18 @@ func (o *PlayOptions) GetServiceContainer() bool { } return *o.ServiceContainer } + +// WithNoPodPrefix set field NoPodPrefix to given value +func (o *PlayOptions) WithNoPodPrefix(value bool) *PlayOptions { + o.NoPodPrefix = &value + return o +} + +// GetNoPodPrefix returns value of field NoPodPrefix +func (o *PlayOptions) GetNoPodPrefix() bool { + if o.NoPodPrefix == nil { + var z bool + return z + } + return *o.NoPodPrefix +} diff --git a/pkg/domain/entities/play.go b/pkg/domain/entities/play.go index cc5a4fa5f5..9df0dbda46 100644 --- a/pkg/domain/entities/play.go +++ b/pkg/domain/entities/play.go @@ -81,7 +81,7 @@ type PlayKubeOptions struct { Wait bool // SystemContext - used when building the image SystemContext *types.SystemContext - // Don't use pod name as prefix in resulting container name. + // Do not prefix container name with pod name NoPodPrefix bool } diff --git a/pkg/domain/infra/tunnel/kube.go b/pkg/domain/infra/tunnel/kube.go index 9e27c52957..e9198590dc 100644 --- a/pkg/domain/infra/tunnel/kube.go +++ b/pkg/domain/infra/tunnel/kube.go @@ -75,6 +75,7 @@ func (ic *ContainerEngine) PlayKube(_ context.Context, body io.Reader, opts enti options.WithPublishPorts(opts.PublishPorts) options.WithPublishAllPorts(opts.PublishAllPorts) options.WithNoTrunc(opts.UseLongAnnotations) + options.WithNoPodPrefix(opts.NoPodPrefix) return play.KubeWithBody(ic.ClientCtx, body, options) } diff --git a/test/e2e/play_kube_test.go b/test/e2e/play_kube_test.go index b1996961d0..6842d6d900 100644 --- a/test/e2e/play_kube_test.go +++ b/test/e2e/play_kube_test.go @@ -222,6 +222,19 @@ spec: - sleep - "3600"` +var simpleWithoutPodPrefixYaml = ` +apiVersion: v1 +kind: Pod +metadata: + name: libpod-test +spec: + containers: + - name: simpleWithoutPodPrefix + image: ` + CITEST_IMAGE + ` + command: + - sleep + - "3600"` + var unknownKindYaml = ` apiVersion: v1 kind: UnknownKind @@ -6422,11 +6435,11 @@ spec: }) It("test container name without Pod name prefix", func() { - err := writeYaml(podnameEqualsContainerNameYaml, kubeYaml) + err := writeYaml(simpleWithoutPodPrefixYaml, kubeYaml) Expect(err).ToNot(HaveOccurred()) podmanTest.PodmanExitCleanly("kube", "play", "--no-pod-prefix", kubeYaml) - inspect := podmanTest.PodmanExitCleanly("inspect", "podnameEqualsContainerNameYaml") - Expect(inspect.InspectContainerToJSON()[0].Name).Should(Equal("podnameEqualsContainerNameYaml")) + inspect := podmanTest.PodmanExitCleanly("inspect", "simpleWithoutPodPrefix") + Expect(inspect.InspectContainerToJSON()[0].Name).Should(Equal("simpleWithoutPodPrefix")) }) })