mirror of
https://github.com/containers/podman.git
synced 2025-11-29 01:28:22 +08:00
Merge pull request #27302 from arsenalzp/podman_26396
Add option to remove Pod name prefix in resulting container name
This commit is contained in:
@@ -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.BoolVar(&playOptions.UseLongAnnotations, noTruncFlagName, false, "Use annotations that are not truncated to the Kubernetes maximum length of 63 characters")
|
||||||
_ = flags.MarkHidden(noTruncFlagName)
|
_ = flags.MarkHidden(noTruncFlagName)
|
||||||
|
|
||||||
|
noPodPrefix := "no-pod-prefix"
|
||||||
|
flags.BoolVar(&playOptions.NoPodPrefix, noPodPrefix, false, "Do not prefix container name with pod name")
|
||||||
|
|
||||||
if !registry.IsRemote() {
|
if !registry.IsRemote() {
|
||||||
certDirFlagName := "cert-dir"
|
certDirFlagName := "cert-dir"
|
||||||
flags.StringVar(&playOptions.CertDir, certDirFlagName, "", "`Pathname` of a directory containing TLS certificates and keys")
|
flags.StringVar(&playOptions.CertDir, certDirFlagName, "", "`Pathname` of a directory containing TLS certificates and keys")
|
||||||
|
|||||||
@@ -260,6 +260,10 @@ When no network option is specified and *host* network mode is not configured in
|
|||||||
|
|
||||||
This option conflicts with host added in the Kubernetes YAML.
|
This option conflicts with host added in the Kubernetes YAML.
|
||||||
|
|
||||||
|
#### **--no-pod-prefix**
|
||||||
|
|
||||||
|
Do not prefix container name with pod name.
|
||||||
|
|
||||||
#### **--publish**=*[[ip:][hostPort]:]containerPort[/protocol]*
|
#### **--publish**=*[[ip:][hostPort]:]containerPort[/protocol]*
|
||||||
|
|
||||||
Define or override a port definition in the YAML file.
|
Define or override a port definition in the YAML file.
|
||||||
|
|||||||
@@ -123,6 +123,7 @@ func KubePlay(w http.ResponseWriter, r *http.Request) {
|
|||||||
Userns string `schema:"userns"`
|
Userns string `schema:"userns"`
|
||||||
Wait bool `schema:"wait"`
|
Wait bool `schema:"wait"`
|
||||||
Build bool `schema:"build"`
|
Build bool `schema:"build"`
|
||||||
|
NoPodPrefix bool `schema:"noPodPrefix"`
|
||||||
}{
|
}{
|
||||||
TLSVerify: true,
|
TLSVerify: true,
|
||||||
Start: true,
|
Start: true,
|
||||||
@@ -198,6 +199,7 @@ func KubePlay(w http.ResponseWriter, r *http.Request) {
|
|||||||
Userns: query.Userns,
|
Userns: query.Userns,
|
||||||
Wait: query.Wait,
|
Wait: query.Wait,
|
||||||
ContextDir: contextDirectory,
|
ContextDir: contextDirectory,
|
||||||
|
NoPodPrefix: query.NoPodPrefix,
|
||||||
}
|
}
|
||||||
if _, found := r.URL.Query()["build"]; found {
|
if _, found := r.URL.Query()["build"]; found {
|
||||||
options.Build = types.NewOptionalBool(query.Build)
|
options.Build = types.NewOptionalBool(query.Build)
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ type PlayOptions struct {
|
|||||||
// Wait - indicates whether to return after having created the pods
|
// Wait - indicates whether to return after having created the pods
|
||||||
Wait *bool
|
Wait *bool
|
||||||
ServiceContainer *bool
|
ServiceContainer *bool
|
||||||
|
NoPodPrefix *bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// ApplyOptions are optional options for applying kube YAML files to a k8s cluster
|
// ApplyOptions are optional options for applying kube YAML files to a k8s cluster
|
||||||
|
|||||||
@@ -407,3 +407,18 @@ func (o *PlayOptions) GetServiceContainer() bool {
|
|||||||
}
|
}
|
||||||
return *o.ServiceContainer
|
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
|
||||||
|
}
|
||||||
|
|||||||
@@ -81,6 +81,8 @@ type PlayKubeOptions struct {
|
|||||||
Wait bool
|
Wait bool
|
||||||
// SystemContext - used when building the image
|
// SystemContext - used when building the image
|
||||||
SystemContext *types.SystemContext
|
SystemContext *types.SystemContext
|
||||||
|
// Do not prefix container name with pod name
|
||||||
|
NoPodPrefix bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// PlayKubePod represents a single pod and associated containers created by play kube
|
// PlayKubePod represents a single pod and associated containers created by play kube
|
||||||
|
|||||||
@@ -1089,6 +1089,7 @@ func (ic *ContainerEngine) playKubePod(ctx context.Context, podName string, podY
|
|||||||
VolumesFrom: volumesFrom,
|
VolumesFrom: volumesFrom,
|
||||||
ImageVolumes: automountImages,
|
ImageVolumes: automountImages,
|
||||||
UtsNSIsHost: p.UtsNs.IsHost(),
|
UtsNSIsHost: p.UtsNs.IsHost(),
|
||||||
|
NoPodPrefix: options.NoPodPrefix,
|
||||||
}
|
}
|
||||||
|
|
||||||
if podYAML.Spec.TerminationGracePeriodSeconds != nil {
|
if podYAML.Spec.TerminationGracePeriodSeconds != nil {
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ func (ic *ContainerEngine) PlayKube(_ context.Context, body io.Reader, opts enti
|
|||||||
options.WithPublishPorts(opts.PublishPorts)
|
options.WithPublishPorts(opts.PublishPorts)
|
||||||
options.WithPublishAllPorts(opts.PublishAllPorts)
|
options.WithPublishAllPorts(opts.PublishAllPorts)
|
||||||
options.WithNoTrunc(opts.UseLongAnnotations)
|
options.WithNoTrunc(opts.UseLongAnnotations)
|
||||||
|
options.WithNoPodPrefix(opts.NoPodPrefix)
|
||||||
return play.KubeWithBody(ic.ClientCtx, body, options)
|
return play.KubeWithBody(ic.ClientCtx, body, options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -185,6 +185,8 @@ type CtrSpecGenOptions struct {
|
|||||||
PodSecurityContext *v1.PodSecurityContext
|
PodSecurityContext *v1.PodSecurityContext
|
||||||
// TerminationGracePeriodSeconds is the grace period given to a container to stop before being forcefully killed
|
// TerminationGracePeriodSeconds is the grace period given to a container to stop before being forcefully killed
|
||||||
TerminationGracePeriodSeconds *int64
|
TerminationGracePeriodSeconds *int64
|
||||||
|
// Don't use pod name as prefix in resulting container name.
|
||||||
|
NoPodPrefix bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func ToSpecGen(ctx context.Context, opts *CtrSpecGenOptions) (*specgen.SpecGenerator, error) {
|
func ToSpecGen(ctx context.Context, opts *CtrSpecGenOptions) (*specgen.SpecGenerator, error) {
|
||||||
@@ -217,7 +219,11 @@ func ToSpecGen(ctx context.Context, opts *CtrSpecGenOptions) (*specgen.SpecGener
|
|||||||
return nil, errors.New("got empty pod name on container creation when playing kube")
|
return nil, errors.New("got empty pod name on container creation when playing kube")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if opts.NoPodPrefix {
|
||||||
|
s.Name = opts.Container.Name
|
||||||
|
} else {
|
||||||
s.Name = fmt.Sprintf("%s-%s", opts.PodName, opts.Container.Name)
|
s.Name = fmt.Sprintf("%s-%s", opts.PodName, opts.Container.Name)
|
||||||
|
}
|
||||||
|
|
||||||
s.Terminal = &opts.Container.TTY
|
s.Terminal = &opts.Container.TTY
|
||||||
|
|
||||||
|
|||||||
@@ -222,6 +222,19 @@ spec:
|
|||||||
- sleep
|
- sleep
|
||||||
- "3600"`
|
- "3600"`
|
||||||
|
|
||||||
|
var simpleWithoutPodPrefixYaml = `
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Pod
|
||||||
|
metadata:
|
||||||
|
name: libpod-test
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: simpleWithoutPodPrefix
|
||||||
|
image: ` + CITEST_IMAGE + `
|
||||||
|
command:
|
||||||
|
- sleep
|
||||||
|
- "3600"`
|
||||||
|
|
||||||
var unknownKindYaml = `
|
var unknownKindYaml = `
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: UnknownKind
|
kind: UnknownKind
|
||||||
@@ -6420,4 +6433,13 @@ spec:
|
|||||||
|
|
||||||
Expect(testfile).ToNot(BeAnExistingFile(), "file should never be created on the host")
|
Expect(testfile).ToNot(BeAnExistingFile(), "file should never be created on the host")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
It("test container name without Pod name prefix", func() {
|
||||||
|
err := writeYaml(simpleWithoutPodPrefixYaml, kubeYaml)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
podmanTest.PodmanExitCleanly("kube", "play", "--no-pod-prefix", kubeYaml)
|
||||||
|
inspect := podmanTest.PodmanExitCleanly("inspect", "simpleWithoutPodPrefix")
|
||||||
|
Expect(inspect.InspectContainerToJSON()[0].Name).Should(Equal("simpleWithoutPodPrefix"))
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user