func (exchanger exchanger) Infos(logger lager.Logger, gardenClient garden.Client, gardenContainers []garden.Container) ([]executor.Container, error) { handles := make([]string, 0, len(gardenContainers)) for _, c := range gardenContainers { handles = append(handles, c.Handle()) } logger = logger.Session("infos", lager.Data{"handles": handles}) logger.Debug("get-bulk-info") infos, err := gardenClient.BulkInfo(handles) if err != nil { logger.Error("failed-bulk-info", err) return []executor.Container{}, err } logger.Debug("succeeded-bulk-info") var containerInfos []executor.Container for handle, info := range infos { if info.Err != nil { logger.Error("failed-garden-info", info.Err, lager.Data{ "handle": handle, }) continue } container, err := garden2executor(handle, info.Info) if err != nil { logger.Error("failed-garden2executor", err, lager.Data{ "handle": handle, }) continue } containerInfos = append(containerInfos, container) } return containerInfos, nil }
"handle1": garden.ContainerInfoEntry{ Info: garden.ContainerInfo{ State: "container1state", }, }, "handle2": garden.ContainerInfoEntry{ Info: garden.ContainerInfo{ State: "container2state", }, }, } It("reports information about containers by list of handles", func() { serverBackend.BulkInfoReturns(expectedBulkInfo, nil) bulkInfo, err := apiClient.BulkInfo(handles) Ω(err).ShouldNot(HaveOccurred()) Ω(bulkInfo).To(Equal(expectedBulkInfo)) }) Context("when retrieving bulk info fails", func() { It("returns the error", func() { serverBackend.BulkInfoReturns( make(map[string]garden.ContainerInfoEntry), errors.New("Oh noes!"), ) _, err := apiClient.BulkInfo(handles) Ω(err).Should(MatchError("Oh noes!")) }) })