Beispiel #1
0
func (s server) BootEtcd(ctx context.Context,
	members *pb.EtcdMembers) (*pb.Reply, error) {
	go s.Transact(func(view db.Database) error {
		etcdSlice := view.SelectFromEtcd(nil)
		var etcdRow db.Etcd
		switch len(etcdSlice) {
		case 0:
			log.Info("Received boot etcd request.")
			etcdRow = view.InsertEtcd()
		case 1:
			etcdRow = etcdSlice[0]
		default:
			panic("Not Reached")
		}

		etcdRow.EtcdIPs = members.IPs
		sort.Strings(etcdRow.EtcdIPs)
		view.Commit(etcdRow)

		return nil
	})

	return &pb.Reply{Success: true}, nil
}