cai.zhang 26805ebd3a Add interface for minio and add grpc proto for master
Signed-off-by: cai.zhang <cai.zhang@zilliz.com>
2020-08-29 17:40:29 +08:00

87 lines
1.8 KiB
Go

package main
import (
"context"
"fmt"
"go.etcd.io/etcd/clientv3"
"google.golang.org/grpc"
"log"
"net"
"time"
pd "github.com/czs007/suvlim/master/grpc/proto"
)
const (
port = ":50051"
)
var address = ""
type masterServer struct {
pd.UnimplementedGreeterServer
}
func GetAddressFromETCD(ctx context.Context, key string) (string, error) {
ETCDClient, err := clientv3.New(clientv3.Config{
Endpoints: []string{"192.168.2.28:2379"},
DialTimeout: 5 * time.Second,
})
fmt.Println(err)
kv := clientv3.NewKV(ETCDClient)
getResp, err := kv.Get(ctx, key)
if err != nil {
return "", err
}
address := getResp.Kvs[0].Value
return string(address), nil
}
func PutAddressToETCD(ctx context.Context, key string, address string) (error) {
ETCDClient, err := clientv3.New(clientv3.Config{
Endpoints: []string{"192.168.2.28:2379"},
DialTimeout: 5 * time.Second,
})
fmt.Println(err)
kv := clientv3.NewKV(ETCDClient)
_, err = kv.Put(ctx, key, address)
return err
}
func (s *masterServer) ReportAddress(ctx context.Context, in *pd.Request) (*pd.Reply, error) {
log.Printf("Receive a grpc server address: %v!", in.GetAddress())
err := PutAddressToETCD(ctx, "proxyAddress", in.GetAddress())
if err != nil{
return &pd.Reply{Status: false}, err
}
//address = in.GetAddress()
return &pd.Reply{Status: true}, nil
}
func (s *masterServer) GetAddress(ctx context.Context, in *pd.EmptyRequest) (*pd.Request, error) {
fmt.Println("This is test SendAddress!")
address, err := GetAddressFromETCD(ctx, "proxyAddress")
if err != nil {
return nil, err
}
return &pd.Request{Address: address}, nil
}
func main() {
listen, err := net.Listen("tcp", port)
if err != nil {
fmt.Println(err)
}
s := grpc.NewServer()
pd.RegisterGreeterServer(s, &masterServer{})
if err := s.Serve(listen); err != nil{
log.Printf("failed to server: %v", err)
}
}