func showNodes(format string, arbiter bool) { addr := context.GetLeaderAddr() url := "http://" + addr + api.FetchReplicaSetsPath resp, err := utils.HttpGet(url, nil, 5*time.Second) if err != nil { fmt.Println(err) return } var rss command.FetchReplicaSetsResult err = utils.InterfaceToStruct(resp.Body, &rss) if err != nil { fmt.Println(err) return } sort.Sort(topo.ByMasterId(rss.ReplicaSets)) sort.Sort(topo.ByNodeState(rss.ReplicaSets)) var allNodes []*topo.Node for i, rs := range rss.ReplicaSets { if !arbiter && rs.Master != nil && strings.Contains(rs.Master.Tag, "Arbiter") { continue } allNodes = append(allNodes, rs.Master) for _, node := range rs.Slaves { allNodes = append(allNodes, node) } if i < len(rss.ReplicaSets)-1 { allNodes = append(allNodes, nil) } } utils.PrintJsonArray(format, []string{"State", "Mode", "Fail", "Role", "Id", "Tag", "Addr", "QPS", "UsedMemory", "Link", "Repl", "Keys", "NetIn", "NetOut"}, nodesToInterfaceSlice(allNodes, rss.NodeStates)) }
func showSlots() { addr := context.GetLeaderAddr() url := "http://" + addr + api.FetchReplicaSetsPath resp, err := utils.HttpGet(url, nil, 5*time.Second) if err != nil { fmt.Println(err) return } var rss command.FetchReplicaSetsResult err = utils.InterfaceToStruct(resp.Body, &rss) if err != nil { fmt.Println(err) return } sort.Sort(topo.ByMasterId(rss.ReplicaSets)) var rows []*SlotsRow for _, rs := range rss.ReplicaSets { rows = append(rows, &SlotsRow{rs.Master.Id, rs.Master.NumSlots(), topo.Ranges(rs.Master.Ranges).String()}) } utils.PrintJsonArray("table", []string{"Id", "Total", "Ranges"}, rowsToInterfaceSlice(rows)) }