func ListServices(q *client.Query) { results := q.FindServices() for _, service := range results { fmt.Println(service) } }
func ListInstances(q *client.Query) { var regFlag *bool if *RegisteredFlag == "true" { b := true regFlag = &b } else if *RegisteredFlag == "false" { b := false regFlag = &b } q.Registered = regFlag results := q.FindInstances() for _, instance := range results { registered := "" if instance.Registered { registered = " [Registered]" } fmt.Println(instance.Config.ServiceAddr.IPAddress + ":" + strconv.Itoa(instance.Config.ServiceAddr.Port) + " - " + instance.Config.Name + " " + instance.Config.Version + registered) } }
func ListRegions(q *client.Query) { results := q.FindRegions() for _, region := range results { fmt.Println(region) } }
func ListHosts(q *client.Query) { results := q.FindHosts() for _, host := range results { fmt.Println(host) } }
func PrintTopology(q *client.Query) { topology := make(map[string]map[string]map[string]map[string][]*service.Service) results := q.FindInstances() // Build topology hash first for _, instance := range results { if topology[instance.Config.Region] == nil { topology[instance.Config.Region] = make(map[string]map[string]map[string][]*service.Service) } if topology[instance.Config.Region][instance.Config.ServiceAddr.IPAddress] == nil { topology[instance.Config.Region][instance.Config.ServiceAddr.IPAddress] = make(map[string]map[string][]*service.Service) } if topology[instance.Config.Region][instance.Config.ServiceAddr.IPAddress][instance.Config.Name] == nil { topology[instance.Config.Region][instance.Config.ServiceAddr.IPAddress][instance.Config.Name] = make(map[string][]*service.Service) } if topology[instance.Config.Region][instance.Config.ServiceAddr.IPAddress][instance.Config.Name][instance.Config.Version] == nil { topology[instance.Config.Region][instance.Config.ServiceAddr.IPAddress][instance.Config.Name][instance.Config.Version] = make([]*service.Service, 0) } topology[instance.Config.Region][instance.Config.ServiceAddr.IPAddress][instance.Config.Name][instance.Config.Version] = append(topology[instance.Config.Region][instance.Config.ServiceAddr.IPAddress][instance.Config.Name][instance.Config.Version], instance) } // Now we can print the correct heirarchy for regionName, region := range topology { fmt.Println("Region: " + regionName) for hostName, host := range region { fmt.Println("\tHost: " + hostName) for serviceName, service := range host { fmt.Println("\t\tService: " + serviceName) for versionName, version := range service { fmt.Println("\t\t\tVersion: " + versionName) for _, instance := range version { registered := "" if instance.Registered { registered = " [Registered]" } fmt.Println("\t\t\t\t" + instance.Config.ServiceAddr.IPAddress + ":" + strconv.Itoa(instance.Config.ServiceAddr.Port) + registered) } } } } } }
func ListServiceVersions(q *client.Query) { if q.Service == "" { fmt.Println("Service name is required") return } results := q.FindServiceVersions() for _, version := range results { fmt.Println(version) } }
func doSomething(q *client.Query, do func(*rpc.Client, skynet.Logger)) { log := skynet.NewConsoleLogger(os.Stderr) for _, instance := range q.FindInstances() { conn, err := net.Dial("tcp", instance.Config.AdminAddr.String()) if err != nil { log.Item(err) continue } rpcClient := bsonrpc.NewClient(conn) do(rpcClient, log) conn.Close() } }