do not allow to remove infra container

Infra container is special, sandbox won't work well
without infra container. If user really want to remove
it, they should remove sanbox instead.

this also fix a panic due to c.state is nil.

1, remove infra container
2, restart ocid
3, ocic ctr list

Signed-off-by: Gao feng <omarapazanadi@gmail.com>
This commit is contained in:
Gao feng 2016-10-19 19:06:48 +08:00
parent 0ef2fc937b
commit a8e7e22a79

View file

@ -381,6 +381,16 @@ func (s *Server) RemoveContainer(ctx context.Context, req *pb.RemoveContainerReq
return nil, err
}
sb := s.getSandbox(c.Sandbox())
if sb == nil {
return nil, fmt.Errorf("failed to find sandbox for container %s", c.ID())
}
podInfraContainerName := sb.name + "-infra"
if podInfraContainerName == c.Name() {
return nil, fmt.Errorf("can not delete Infra container %s\n", c.ID())
}
if err := s.runtime.UpdateStatus(c); err != nil {
return nil, fmt.Errorf("failed to update container state: %v", err)
}