Skip to content

Commit

Permalink
Fix issue containers#6803 Container inspect endpoint returns null for…
Browse files Browse the repository at this point in the history
… NetworkSettings/Ports

Implement mapping for NetworkSettings/Ports for Container inspect endpoint

Signed-off-by: Sami Korhonen <[email protected]>
  • Loading branch information
Korhonen Sami (Samlink) committed Jul 3, 2020
1 parent c131567 commit e5bf56a
Showing 1 changed file with 21 additions and 8 deletions.
29 changes: 21 additions & 8 deletions pkg/api/handlers/compat/containers.go
Original file line number Diff line number Diff line change
Expand Up @@ -321,17 +321,17 @@ func LibpodToContainerJSON(l *libpod.Container, sz bool) (*types.ContainerJSON,

stopTimeout := int(l.StopTimeout())

ports := make(nat.PortSet)
for p := range inspect.HostConfig.PortBindings {
splitp := strings.SplitN(p, "/", 2)
exposedPorts := make(nat.PortSet)
for ep := range inspect.HostConfig.PortBindings {
splitp := strings.SplitN(ep, "/", 2)
if len(splitp) != 2 {
return nil, errors.Errorf("PORT/PROTOCOL Format required for %q", p)
return nil, errors.Errorf("PORT/PROTOCOL Format required for %q", ep)
}
port, err := nat.NewPort(splitp[1], splitp[0])
exposedPort, err := nat.NewPort(splitp[1], splitp[0])
if err != nil {
return nil, err
}
ports[port] = struct{}{}
exposedPorts[exposedPort] = struct{}{}
}

config := container.Config{
Expand All @@ -341,7 +341,7 @@ func LibpodToContainerJSON(l *libpod.Container, sz bool) (*types.ContainerJSON,
AttachStdin: inspect.Config.AttachStdin,
AttachStdout: inspect.Config.AttachStdout,
AttachStderr: inspect.Config.AttachStderr,
ExposedPorts: ports,
ExposedPorts: exposedPorts,
Tty: inspect.Config.Tty,
OpenStdin: inspect.Config.OpenStdin,
StdinOnce: inspect.Config.StdinOnce,
Expand Down Expand Up @@ -371,6 +371,15 @@ func LibpodToContainerJSON(l *libpod.Container, sz bool) (*types.ContainerJSON,
return nil, err
}

p, err := json.Marshal(inspect.NetworkSettings.Ports)
if err != nil {
return nil, err
}
ports := nat.PortMap{}
if err := json.Unmarshal(p, &ports); err != nil {
return nil, err
}

networkSettingsDefault := types.DefaultNetworkSettings{
EndpointID: "",
Gateway: "",
Expand All @@ -382,8 +391,12 @@ func LibpodToContainerJSON(l *libpod.Container, sz bool) (*types.ContainerJSON,
MacAddress: l.Config().StaticMAC.String(),
}

networkSettingsBase := types.NetworkSettingsBase{
Ports: ports,
}

networkSettings := types.NetworkSettings{
NetworkSettingsBase: types.NetworkSettingsBase{},
NetworkSettingsBase: networkSettingsBase,
DefaultNetworkSettings: networkSettingsDefault,
Networks: nil,
}
Expand Down

0 comments on commit e5bf56a

Please sign in to comment.