mirror of
https://github.com/containers/podman.git
synced 2025-05-21 09:05:56 +08:00
show container ports of network namespace
in cases where a container is part of a network namespace, we should show the network namespace's ports when dealing with ports. this impacts ps, kube, and port. fixes: #846 Signed-off-by: baude <bbaude@redhat.com>
This commit is contained in:
@ -125,8 +125,13 @@ func portCmd(c *cliconfig.PortValues) error {
|
||||
if c.All {
|
||||
fmt.Println(con.ID())
|
||||
}
|
||||
|
||||
portmappings, err := con.PortMappings()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// Iterate mappings
|
||||
for _, v := range con.Config().PortMappings {
|
||||
for _, v := range portmappings {
|
||||
hostIP := v.HostIP
|
||||
// Set host IP to 0.0.0.0 if blank
|
||||
if hostIP == "" {
|
||||
|
@ -213,11 +213,16 @@ func NewBatchContainer(ctr *libpod.Container, opts PsOptions) (PsContainerOutput
|
||||
}
|
||||
}
|
||||
|
||||
ports, err := ctr.PortMappings()
|
||||
if err != nil {
|
||||
logrus.Errorf("unable to lookup namespace container for %s", ctr.ID())
|
||||
}
|
||||
|
||||
pso.ID = cid
|
||||
pso.Image = imageName
|
||||
pso.Command = command
|
||||
pso.Created = created
|
||||
pso.Ports = portsToString(ctr.PortMappings())
|
||||
pso.Ports = portsToString(ports)
|
||||
pso.Names = ctr.Name()
|
||||
pso.IsInfra = ctr.IsInfra()
|
||||
pso.Status = status
|
||||
|
@ -557,8 +557,16 @@ func (c *Container) NewNetNS() bool {
|
||||
// PortMappings returns the ports that will be mapped into a container if
|
||||
// a new network namespace is created
|
||||
// If NewNetNS() is false, this value is unused
|
||||
func (c *Container) PortMappings() []ocicni.PortMapping {
|
||||
return c.config.PortMappings
|
||||
func (c *Container) PortMappings() ([]ocicni.PortMapping, error) {
|
||||
// First check if the container belongs to a network namespace (like a pod)
|
||||
if len(c.config.NetNsCtr) > 0 {
|
||||
netNsCtr, err := c.runtime.LookupContainer(c.config.NetNsCtr)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "unable to lookup network namespace for container %s", c.ID())
|
||||
}
|
||||
return netNsCtr.PortMappings()
|
||||
}
|
||||
return c.config.PortMappings, nil
|
||||
}
|
||||
|
||||
// DNSServers returns DNS servers that will be used in the container's
|
||||
|
@ -228,7 +228,11 @@ func containerToV1Container(c *Container) (v1.Container, error) {
|
||||
return kubeContainer, nil
|
||||
}
|
||||
|
||||
ports, err := ocicniPortMappingToContainerPort(c.PortMappings())
|
||||
portmappings, err := c.PortMappings()
|
||||
if err != nil {
|
||||
return kubeContainer, err
|
||||
}
|
||||
ports, err := ocicniPortMappingToContainerPort(portmappings)
|
||||
if err != nil {
|
||||
return kubeContainer, nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user