func createCluster(hostport string, seednodes []string, app clusterApp) *cluster { channel, err := tchannel.NewChannel("kbase", nil) if err != nil { log.Fatalf("channel did not create successfully: %v", err) } ringpop, err := ringpop.New("kbase-app", ringpop.Channel(channel), ringpop.Identity(hostport), ringpop.Logger(bark.NewLoggerFromLogrus(log)), ) if err != nil { log.Fatalf("Unable to create Ringpop: %v", err) } if err := channel.ListenAndServe(hostport); err != nil { log.Fatalf("could not listen on given hostport: %v", err) } opts := new(swim.BootstrapOptions) if len(seednodes) > 0 { opts.Hosts = seednodes } if _, err := ringpop.Bootstrap(opts); err != nil { log.Fatalf("ringpop bootstrap failed: %v", err) } cluster := &cluster{ /*ring: Ring{ hcodes: []int{}, servers: make(map[int]string), },*/ ringpop: ringpop, channel: channel, app: app} ringpop.RegisterListener(cluster) return cluster }