func ListInstances(q *skylib.Query) { results := q.FindInstances() for _, instance := range *results { fmt.Println(instance.IPAddress + ":" + strconv.Itoa(instance.Port) + " - " + instance.Name + " (" + instance.Version + ")") } }
func ListInstances(q *skylib.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 PrintTopology(q *skylib.Query) { topology := make(map[string]map[string]map[string]map[string][]*skylib.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][]*skylib.Service) } if topology[instance.Config.Region][instance.Config.ServiceAddr.IPAddress] == nil { topology[instance.Config.Region][instance.Config.ServiceAddr.IPAddress] = make(map[string]map[string][]*skylib.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][]*skylib.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([]*skylib.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 doSomething(q *skylib.Query, do func(*rpc.Client, skylib.Logger)) { log := skylib.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() } }