diff options
author | Matthew Heon <mheon@redhat.com> | 2020-06-17 15:31:53 -0400 |
---|---|---|
committer | Matthew Heon <matthew.heon@pm.me> | 2020-06-18 09:34:04 -0400 |
commit | b20619e5b0dfa6c63b25c3fd9a7ae6188bee2b4c (patch) | |
tree | 440ba00f0400d44da8b19024f852978ed67ff2e0 /pkg/domain/infra/abi | |
parent | 3eb0ad04a8b1d56866a16f1428bb8019927ccfa3 (diff) | |
download | podman-b20619e5b0dfa6c63b25c3fd9a7ae6188bee2b4c.tar.gz podman-b20619e5b0dfa6c63b25c3fd9a7ae6188bee2b4c.tar.bz2 podman-b20619e5b0dfa6c63b25c3fd9a7ae6188bee2b4c.zip |
Allow recursive dependency start with Init()
As part of APIv2 Attach, we need to be able to attach to freshly
created containers (in ContainerStateConfigured). This isn't
something Libpod is interested in supporting, so we use Init() to
get the container into ContainerStateCreated, in which attach is
possible. Problem: Init() will fail if dependencies are not
started, so a fresh container in a fresh pod will fail. The
simplest solution is to extend the existing recursive start code
from Start() to Init(), allowing dependency containers to be
started when we initialize the container (optionally, controlled
via bool).
Also, update some comments in container_api.go to make it more
clear how some of our major API calls work.
Fixes #6646
Signed-off-by: Matthew Heon <mheon@redhat.com>
Diffstat (limited to 'pkg/domain/infra/abi')
-rw-r--r-- | pkg/domain/infra/abi/containers.go | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/pkg/domain/infra/abi/containers.go b/pkg/domain/infra/abi/containers.go index 8e0ffc075..22de28a1c 100644 --- a/pkg/domain/infra/abi/containers.go +++ b/pkg/domain/infra/abi/containers.go @@ -999,7 +999,7 @@ func (ic *ContainerEngine) ContainerInit(ctx context.Context, namesOrIds []strin reports := make([]*entities.ContainerInitReport, 0, len(ctrs)) for _, ctr := range ctrs { report := entities.ContainerInitReport{Id: ctr.ID()} - err := ctr.Init(ctx) + err := ctr.Init(ctx, ctr.PodID() != "") // If we're initializing all containers, ignore invalid state errors if options.All && errors.Cause(err) == define.ErrCtrStateInvalid { |