|
|
|
package discoveryregistry
|
|
|
|
|
|
|
|
// type DnsDiscoveryRegistry struct {
|
|
|
|
// opts []grpc.DialOption
|
|
|
|
// namespace string
|
|
|
|
// clientset *kubernetes.Clientset
|
|
|
|
// }
|
|
|
|
|
|
|
|
// func NewDnsDiscoveryRegistry(namespace string, opts []grpc.DialOption) (*DnsDiscoveryRegistry, error) {
|
|
|
|
// config, err := rest.InClusterConfig()
|
|
|
|
// if err != nil {
|
|
|
|
// return nil, err
|
|
|
|
// }
|
|
|
|
// clientset, err := kubernetes.NewForConfig(config)
|
|
|
|
// if err != nil {
|
|
|
|
// return nil, err
|
|
|
|
// }
|
|
|
|
// return &DnsDiscoveryRegistry{
|
|
|
|
// clientset: clientset,
|
|
|
|
// namespace: namespace,
|
|
|
|
// opts: opts,
|
|
|
|
// }, nil
|
|
|
|
// }
|
|
|
|
|
|
|
|
// func (d DnsDiscoveryRegistry) GetConns(ctx context.Context, serviceName string, opts ...grpc.DialOption) ([]*grpc.ClientConn, error) {
|
|
|
|
// endpoints, err := d.clientset.CoreV1().Endpoints(d.namespace).Get(context.TODO(), serviceName, metav1.GetOptions{})
|
|
|
|
// if err != nil {
|
|
|
|
// return nil, err
|
|
|
|
// }
|
|
|
|
// var conns []*grpc.ClientConn
|
|
|
|
// for _, subset := range endpoints.Subsets {
|
|
|
|
// for _, address := range subset.Addresses {
|
|
|
|
// for _, port := range subset.Ports {
|
|
|
|
// conn, err := grpc.DialContext(ctx, net.JoinHostPort(address.IP, string(port.Port)), append(d.opts, opts...)...)
|
|
|
|
// if err != nil {
|
|
|
|
// return nil, err
|
|
|
|
// }
|
|
|
|
// conns = append(conns, conn)
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// return conns, nil
|
|
|
|
// }
|
|
|
|
|
|
|
|
// func (d DnsDiscoveryRegistry) GetConn(ctx context.Context, serviceName string, opts ...grpc.DialOption) (*grpc.ClientConn, error) {
|
|
|
|
// return grpc.DialContext(ctx, fmt.Sprintf("%s.%s.svc.cluster.local", serviceName, d.namespace), append(d.opts, opts...)...)
|
|
|
|
// }
|
|
|
|
|
|
|
|
// func (d *DnsDiscoveryRegistry) AddOption(opts ...grpc.DialOption) {
|
|
|
|
// d.opts = append(d.opts, opts...)
|
|
|
|
// }
|