func readTopic(client sarama.Client, name string) (topic, error) { t := topic{Name: name} if config.topic.partitions { ps, err := client.Partitions(name) if err != nil { return t, err } for _, p := range ps { np := partition{Id: p} oldest, err := client.GetOffset(name, p, sarama.OffsetOldest) if err != nil { return t, err } np.OldestOffset = oldest newest, err := client.GetOffset(name, p, sarama.OffsetNewest) if err != nil { return t, err } np.NewestOffset = newest if config.topic.leaders { b, err := client.Leader(name, p) if err != nil { return t, err } np.Leader = b.Addr() } if config.topic.replicas { rs, err := client.Replicas(name, p) if err != nil { return t, err } np.Replicas = rs } t.Partitions = append(t.Partitions, np) } } return t, nil }