container_list: guard against list filter being nil

Signed-off-by: Antonio Murdaca <runcom@redhat.com>
This commit is contained in:
Antonio Murdaca 2017-11-11 12:07:24 +01:00
parent e99a78edff
commit 99e8676967
No known key found for this signature in database
GPG key ID: B2BEAD150DE936B9

View file

@ -38,41 +38,44 @@ func (s *Server) ListContainers(ctx context.Context, req *pb.ListContainersReque
logrus.Debugf("ListContainersRequest %+v", req) logrus.Debugf("ListContainersRequest %+v", req)
var ctrs []*pb.Container var ctrs []*pb.Container
filter := req.Filter filter := req.GetFilter()
ctrList, err := s.ContainerServer.ListContainers() ctrList, err := s.ContainerServer.ListContainers()
if err != nil { if err != nil {
return nil, err return nil, err
} }
// Filter using container id and pod id first. if filter != nil {
if filter.Id != "" {
id, err := s.CtrIDIndex().Get(filter.Id)
if err != nil {
// If we don't find a container ID with a filter, it should not
// be considered an error. Log a warning and return an empty struct
logrus.Warn("unable to find container ID %s", filter.Id)
return &pb.ListContainersResponse{}, nil
}
c := s.ContainerServer.GetContainer(id)
if c != nil {
if filter.PodSandboxId != "" {
if c.Sandbox() == filter.PodSandboxId {
ctrList = []*oci.Container{c}
} else {
ctrList = []*oci.Container{}
}
} else { // Filter using container id and pod id first.
ctrList = []*oci.Container{c} if filter.Id != "" {
id, err := s.CtrIDIndex().Get(filter.Id)
if err != nil {
// If we don't find a container ID with a filter, it should not
// be considered an error. Log a warning and return an empty struct
logrus.Warn("unable to find container ID %s", filter.Id)
return &pb.ListContainersResponse{}, nil
} }
} c := s.ContainerServer.GetContainer(id)
} else { if c != nil {
if filter.PodSandboxId != "" { if filter.PodSandboxId != "" {
pod := s.ContainerServer.GetSandbox(filter.PodSandboxId) if c.Sandbox() == filter.PodSandboxId {
if pod == nil { ctrList = []*oci.Container{c}
ctrList = []*oci.Container{} } else {
} else { ctrList = []*oci.Container{}
ctrList = pod.Containers().List() }
} else {
ctrList = []*oci.Container{c}
}
}
} else {
if filter.PodSandboxId != "" {
pod := s.ContainerServer.GetSandbox(filter.PodSandboxId)
if pod == nil {
ctrList = []*oci.Container{}
} else {
ctrList = pod.Containers().List()
}
} }
} }
} }