mirror of
https://github.com/containers/podman.git
synced 2025-10-17 19:24:04 +08:00
Fix podman network IDs handling
The libpod network logic knows about networks IDs but OCICNI does not. We cannot pass the network ID to OCICNI. Instead we need to make sure we only use network names internally. This is also important for libpod since we also only store the network names in the state. If we would add a ID there the same networks could accidentally be added twice. Fixes #9451 Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
This commit is contained in:
@ -12,6 +12,7 @@ import (
|
||||
"github.com/containers/common/pkg/config"
|
||||
"github.com/containers/podman/v3/libpod/define"
|
||||
"github.com/containers/podman/v3/libpod/events"
|
||||
"github.com/containers/podman/v3/libpod/network"
|
||||
"github.com/containers/podman/v3/libpod/shutdown"
|
||||
"github.com/containers/podman/v3/pkg/cgroups"
|
||||
"github.com/containers/podman/v3/pkg/domain/entities/reports"
|
||||
@ -285,6 +286,21 @@ func (r *Runtime) setupContainer(ctx context.Context, ctr *Container) (_ *Contai
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// normalize the networks to names
|
||||
// ocicni only knows about cni names so we have to make
|
||||
// sure we do not use ids internally
|
||||
if len(ctr.config.Networks) > 0 {
|
||||
netNames := make([]string, 0, len(ctr.config.Networks))
|
||||
for _, nameOrID := range ctr.config.Networks {
|
||||
netName, err := network.NormalizeName(r.config, nameOrID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
netNames = append(netNames, netName)
|
||||
}
|
||||
ctr.config.Networks = netNames
|
||||
}
|
||||
|
||||
// Inhibit shutdown until creation succeeds
|
||||
shutdown.Inhibit()
|
||||
defer shutdown.Uninhibit()
|
||||
|
Reference in New Issue
Block a user