diff --git a/server/container.go b/server/container.go index b9670d99..5c7c7da8 100644 --- a/server/container.go +++ b/server/container.go @@ -41,6 +41,28 @@ func (s *Server) generateContainerIDandName(podName string, name string, attempt return id, name, err } +type containerRequest interface { + GetContainerId() string +} + +func (s *Server) getContainerFromRequest(req containerRequest) (*oci.Container, error) { + ctrID := req.GetContainerId() + if ctrID == "" { + return nil, fmt.Errorf("container ID should not be empty") + } + + containerID, err := s.ctrIDIndex.Get(ctrID) + if err != nil { + return nil, fmt.Errorf("container with ID starting with %s not found: %v", ctrID, err) + } + + c := s.state.containers.Get(containerID) + if c == nil { + return nil, fmt.Errorf("specified container not found: %s", containerID) + } + return c, nil +} + // CreateContainer creates a new container in specified PodSandbox func (s *Server) CreateContainer(ctx context.Context, req *pb.CreateContainerRequest) (res *pb.CreateContainerResponse, err error) { sbID := req.GetPodSandboxId()