// Print all controllers of all clusters within a zone. func (this *Controllers) printControllers(zkzone *zk.ZkZone) { this.Ui.Output(zkzone.Name()) zkzone.ForSortedControllers(func(cluster string, controller *zk.ControllerMeta) { if !patternMatched(cluster, this.cluster) { return } this.Ui.Output(strings.Repeat(" ", 4) + cluster) if controller == nil { this.Ui.Output(fmt.Sprintf("\t%s", color.Red("empty"))) } else { epochSince := time.Since(controller.Mtime.Time()) epochSinceStr := gofmt.PrettySince(controller.Mtime.Time()) if epochSince < time.Hour*2*24 { epochSinceStr = color.Red(epochSinceStr) } this.Ui.Output(fmt.Sprintf("\t%-2s %21s epoch:%2s/%-20s uptime:%s", controller.Broker.Id, controller.Broker.Addr(), controller.Epoch, epochSinceStr, gofmt.PrettySince(controller.Broker.Uptime()))) } }) }