From ae0da7dc58bf6af1ff02f9b359fa9585f2619d1d Mon Sep 17 00:00:00 2001 From: Maksym Pavlenko Date: Thu, 17 Nov 2022 13:35:32 -0800 Subject: [PATCH] Use sandbox store to retrieve runtime info for sandboxed containers Signed-off-by: Maksym Pavlenko --- pkg/cri/sbserver/container_create.go | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/pkg/cri/sbserver/container_create.go b/pkg/cri/sbserver/container_create.go index 27e468c38..f1c70a38b 100644 --- a/pkg/cri/sbserver/container_create.go +++ b/pkg/cri/sbserver/container_create.go @@ -57,6 +57,8 @@ func (c *criService) CreateContainer(ctx context.Context, r *runtime.CreateConta return nil, fmt.Errorf("failed to find sandbox id %q: %w", r.GetPodSandboxId(), err) } sandboxID := sandbox.ID + + // TODO: Add PID endpoint to Controller interface. s, err := sandbox.Container.Task(ctx, nil) if err != nil { return nil, fmt.Errorf("failed to get sandbox container task: %w", err) @@ -104,11 +106,6 @@ func (c *criService) CreateContainer(ctx context.Context, r *runtime.CreateConta } start := time.Now() - // Run container using the same runtime with sandbox. - sandboxInfo, err := sandbox.Container.Info(ctx) - if err != nil { - return nil, fmt.Errorf("failed to get sandbox %q info: %w", sandboxID, err) - } // Create container root directory. containerRootDir := c.getContainerRootDir(id) @@ -236,16 +233,18 @@ func (c *criService) CreateContainer(ctx context.Context, r *runtime.CreateConta containerLabels := buildLabels(config.Labels, image.ImageSpec.Config.Labels, containerKindContainer) - runtimeOptions, err := getRuntimeOptions(sandboxInfo) + sandboxInfo, err := c.client.SandboxStore().Get(ctx, sandboxID) if err != nil { - return nil, fmt.Errorf("failed to get runtime options: %w", err) + return nil, fmt.Errorf("unable to get sandbox %q metdata: %w", sandboxID, err) } opts = append(opts, containerd.WithSpec(spec, specOpts...), - containerd.WithRuntime(sandboxInfo.Runtime.Name, runtimeOptions), + containerd.WithRuntime(sandboxInfo.Runtime.Name, sandboxInfo.Runtime.Options), containerd.WithContainerLabels(containerLabels), - containerd.WithContainerExtension(containerMetadataExtension, &meta)) + containerd.WithContainerExtension(containerMetadataExtension, &meta), + ) + var cntr containerd.Container if cntr, err = c.client.NewContainer(ctx, id, opts...); err != nil { return nil, fmt.Errorf("failed to create containerd container: %w", err)