Add List and Lookup implementation. Default error for not implement.

This commit is contained in:
Milos Gajdos 2019-07-26 12:43:17 +01:00
parent 22d0f1f08f
commit b6fb969ab9
No known key found for this signature in database
GPG Key ID: 8B31058CC55DFD4F
3 changed files with 116 additions and 45 deletions

View File

@ -5,8 +5,9 @@ package go_micro_router
import (
fmt "fmt"
proto "github.com/golang/protobuf/proto"
math "math"
proto "github.com/golang/protobuf/proto"
)
// Reference imports to suppress errors if they are not otherwise used.
@ -558,7 +559,11 @@ func (m *Event) GetRoute() *Route {
// Query is passed in a LookupRequest
type Query struct {
// service to lookup
Service string `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"`
Service string `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"`
// gateway to lookup
Gateway string `protobuf:"bytes,2,opt,name=gateway,proto3" json:"gateway,omitempty"`
// network to lookup
Network string `protobuf:"bytes,3,opt,name=network,proto3" json:"network,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -596,6 +601,20 @@ func (m *Query) GetService() string {
return ""
}
func (m *Query) GetGateway() string {
if m != nil {
return m.Gateway
}
return ""
}
func (m *Query) GetNetwork() string {
if m != nil {
return m.Network
}
return ""
}
// Route is a service route
type Route struct {
// service for the route
@ -704,42 +723,40 @@ func init() {
func init() { proto.RegisterFile("router.proto", fileDescriptor_367072455c71aedc) }
var fileDescriptor_367072455c71aedc = []byte{
// 584 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0xc1, 0x6e, 0xd3, 0x40,
0x10, 0xf5, 0x26, 0xb1, 0x2b, 0x4f, 0x53, 0xd7, 0xcc, 0xa1, 0x58, 0xa6, 0x40, 0xea, 0x53, 0x55,
0x55, 0x2e, 0x0a, 0x67, 0x10, 0xa5, 0x94, 0x4b, 0x7b, 0x00, 0x0b, 0xc4, 0xd9, 0xd8, 0xa3, 0x62,
0x25, 0xb1, 0xdd, 0xdd, 0x4d, 0xaa, 0x9c, 0xf9, 0x0c, 0xbe, 0x80, 0xff, 0xe0, 0xc3, 0x90, 0x77,
0xed, 0x24, 0x38, 0xf1, 0xa1, 0x9c, 0xb2, 0x33, 0xf3, 0x66, 0xbc, 0x6f, 0xde, 0xbe, 0xc0, 0x90,
0x17, 0x73, 0x49, 0x3c, 0x2c, 0x79, 0x21, 0x0b, 0x3c, 0xbc, 0x2b, 0xc2, 0x59, 0x96, 0xf0, 0x22,
0xd4, 0xe9, 0xe0, 0x00, 0xf6, 0x6f, 0x33, 0x21, 0x23, 0xba, 0x9f, 0x93, 0x90, 0xc1, 0x5b, 0x18,
0xea, 0x50, 0x94, 0x45, 0x2e, 0x08, 0x43, 0xb0, 0x14, 0x50, 0x78, 0x6c, 0xd4, 0x3f, 0xdd, 0x1f,
0x1f, 0x85, 0xad, 0x01, 0x61, 0x54, 0xfd, 0x44, 0x35, 0x2a, 0x78, 0x03, 0x07, 0xb7, 0x45, 0x31,
0x99, 0x97, 0xf5, 0x40, 0x3c, 0x07, 0xf3, 0x7e, 0x4e, 0x7c, 0xe9, 0xb1, 0x11, 0xdb, 0xd9, 0xff,
0xb9, 0xaa, 0x46, 0x1a, 0x14, 0xbc, 0x03, 0xa7, 0x69, 0xff, 0xcf, 0x0b, 0x38, 0x30, 0xfc, 0x16,
0xcb, 0xe4, 0x47, 0x43, 0x08, 0xc1, 0xbd, 0x4c, 0x17, 0xc4, 0x65, 0x26, 0xa8, 0xc9, 0xfd, 0x66,
0x60, 0xe9, 0x24, 0x3a, 0xd0, 0xcb, 0x52, 0x75, 0x37, 0x3b, 0xea, 0x65, 0x29, 0x5e, 0xc0, 0x40,
0x2e, 0x4b, 0xf2, 0x7a, 0x23, 0x76, 0xea, 0x8c, 0x9f, 0x6d, 0x7d, 0x4c, 0xb7, 0x7d, 0x59, 0x96,
0x14, 0x29, 0x20, 0x1e, 0x83, 0x2d, 0xb3, 0x19, 0x09, 0x19, 0xcf, 0x4a, 0xaf, 0x3f, 0x62, 0xa7,
0xfd, 0x68, 0x9d, 0x40, 0x17, 0xfa, 0x52, 0x4e, 0xbd, 0x81, 0xca, 0x57, 0xc7, 0x8a, 0x0f, 0x2d,
0x28, 0x97, 0xc2, 0x33, 0x3b, 0xf8, 0x5c, 0x57, 0xe5, 0xa8, 0x46, 0x05, 0x4f, 0xe0, 0xf0, 0x13,
0x2f, 0x12, 0x12, 0xa2, 0x59, 0x49, 0xe0, 0x82, 0x73, 0xc5, 0x29, 0x96, 0xb4, 0x99, 0xf9, 0x40,
0x53, 0xfa, 0x37, 0xf3, 0xb5, 0x4c, 0x37, 0x31, 0x3f, 0x19, 0x98, 0x6a, 0x34, 0x86, 0x35, 0x47,
0xa6, 0x38, 0xfa, 0xbb, 0x2f, 0xd0, 0x45, 0xb1, 0xd7, 0xa6, 0x78, 0x0e, 0xa6, 0xea, 0x53, 0xe4,
0xbb, 0xf5, 0xd1, 0xa0, 0xe0, 0x04, 0x4c, 0x25, 0x38, 0x7a, 0xb0, 0x27, 0x88, 0x2f, 0xb2, 0x84,
0xea, 0xed, 0x37, 0x61, 0xf0, 0x8b, 0x81, 0xa9, 0x7a, 0xba, 0x31, 0x55, 0x25, 0x4e, 0x53, 0x4e,
0x42, 0xa8, 0x0b, 0xd9, 0x51, 0x13, 0x56, 0x95, 0xbb, 0x58, 0xd2, 0x43, 0xbc, 0x54, 0x17, 0xb2,
0xa3, 0x26, 0xac, 0x2a, 0x39, 0xc9, 0x87, 0x82, 0x4f, 0x94, 0x1e, 0x76, 0xd4, 0x84, 0x88, 0x30,
0x98, 0x66, 0xf9, 0xc4, 0x33, 0x55, 0x5a, 0x9d, 0xf1, 0x08, 0xac, 0x19, 0x49, 0x9e, 0x25, 0x9e,
0xa5, 0x18, 0xd7, 0xd1, 0xd9, 0x18, 0x60, 0xfd, 0x06, 0x10, 0xc1, 0xd1, 0xd1, 0x65, 0x9e, 0x17,
0xf3, 0x3c, 0x21, 0xd7, 0x40, 0x17, 0x86, 0x3a, 0xa7, 0x05, 0x70, 0xd9, 0xd9, 0x05, 0xd8, 0xab,
0x9d, 0x22, 0x80, 0xa5, 0xd5, 0x73, 0x8d, 0xea, 0xac, 0x75, 0x73, 0x59, 0x75, 0xae, 0x1b, 0x7a,
0xe3, 0x3f, 0x03, 0xb0, 0xd4, 0x0a, 0x38, 0x5e, 0xc3, 0xa0, 0x32, 0x24, 0x1e, 0x6f, 0xed, 0x75,
0xc3, 0xb6, 0xfe, 0xf3, 0x8e, 0x6a, 0xad, 0xbd, 0x81, 0x37, 0x60, 0x69, 0x63, 0xe1, 0x8b, 0x6d,
0xe8, 0xa6, 0x61, 0xfd, 0x97, 0x9d, 0xf5, 0xd5, 0xb0, 0xf7, 0x60, 0x2a, 0x8f, 0xe1, 0xf6, 0x67,
0x37, 0xbd, 0xe7, 0x77, 0xbc, 0xed, 0xc0, 0x78, 0xc5, 0xf0, 0x06, 0xec, 0x95, 0x2f, 0xf1, 0xa4,
0xc3, 0x67, 0x6b, 0xcf, 0xfa, 0x4f, 0x3b, 0x20, 0x6a, 0xd8, 0x47, 0xd8, 0xab, 0x4d, 0x82, 0x5d,
0x38, 0x7f, 0xb4, 0x55, 0x68, 0xfb, 0xca, 0xc0, 0xab, 0x46, 0x1b, 0xec, 0x78, 0xc6, 0x3b, 0xb6,
0xd3, 0xb2, 0xa2, 0x1a, 0xa2, 0x45, 0x7d, 0xc4, 0x90, 0x96, 0x7b, 0xd5, 0x10, 0xfd, 0x1a, 0x1e,
0x31, 0xa4, 0x65, 0x78, 0xe3, 0xbb, 0xa5, 0xfe, 0xf3, 0x5f, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff,
0xde, 0x0b, 0x1c, 0x4a, 0x03, 0x06, 0x00, 0x00,
// 555 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xdd, 0x6e, 0x94, 0x40,
0x14, 0x06, 0x76, 0xa1, 0xe1, 0x74, 0x97, 0xd2, 0x73, 0x61, 0x08, 0x69, 0xea, 0x66, 0x8c, 0xa6,
0x69, 0xe3, 0xd8, 0xac, 0x4f, 0xd0, 0xa8, 0x77, 0xbd, 0x50, 0x62, 0xe3, 0x35, 0xc2, 0x89, 0x92,
0xee, 0x02, 0x9d, 0x99, 0xdd, 0x66, 0x1f, 0xc1, 0x67, 0xf0, 0x75, 0x7c, 0x30, 0xc3, 0xcc, 0xd0,
0x65, 0x49, 0x6a, 0xbc, 0x9b, 0xef, 0x9b, 0x8f, 0x73, 0xe6, 0xfc, 0x7c, 0xc0, 0x4c, 0x34, 0x1b,
0x45, 0x82, 0xb7, 0xa2, 0x51, 0x0d, 0x9b, 0xc3, 0xf1, 0x6d, 0x25, 0x55, 0x46, 0x0f, 0x1b, 0x92,
0x8a, 0x71, 0x98, 0x19, 0x28, 0xdb, 0xa6, 0x96, 0x84, 0xe7, 0x10, 0x68, 0xb9, 0x4c, 0xdc, 0xc5,
0xe4, 0xe2, 0x78, 0x19, 0xf0, 0xac, 0x83, 0x99, 0x65, 0xd9, 0x5b, 0x98, 0xdf, 0x36, 0xcd, 0xfd,
0xa6, 0xb5, 0x01, 0xf0, 0x0c, 0xfc, 0x87, 0x0d, 0x89, 0x5d, 0xe2, 0x2e, 0x5c, 0xad, 0xff, 0xd2,
0xa1, 0xcc, 0x90, 0xec, 0x1a, 0xa2, 0x5e, 0xfe, 0x9f, 0x09, 0x22, 0x98, 0x7d, 0xcb, 0x55, 0xf1,
0xb3, 0x7f, 0x20, 0x42, 0x7c, 0x53, 0x6e, 0x49, 0xa8, 0x4a, 0x52, 0xcf, 0xfd, 0x72, 0x21, 0x30,
0x24, 0x46, 0xe0, 0x55, 0xa5, 0xce, 0x1d, 0x66, 0x5e, 0x55, 0xe2, 0x4b, 0x98, 0xaa, 0x5d, 0x4b,
0x89, 0xb7, 0x70, 0x2f, 0xa2, 0xe5, 0x31, 0x37, 0xb2, 0xaf, 0xbb, 0x96, 0x32, 0x7d, 0x81, 0x67,
0x10, 0xaa, 0x6a, 0x4d, 0x52, 0xe5, 0xeb, 0x36, 0x99, 0x2c, 0xdc, 0x8b, 0x49, 0xb6, 0x27, 0x30,
0x86, 0x89, 0x52, 0xab, 0x64, 0xaa, 0xf9, 0xee, 0xd8, 0xbd, 0x97, 0xb6, 0x54, 0x2b, 0x99, 0xf8,
0xf6, 0xbd, 0x9f, 0x3a, 0x98, 0x59, 0x96, 0x9d, 0xc2, 0xc9, 0x67, 0xd1, 0x14, 0x24, 0x65, 0x5f,
0x22, 0x8b, 0x21, 0xfa, 0x20, 0x28, 0x57, 0x34, 0x64, 0x3e, 0xd2, 0x8a, 0x0e, 0x99, 0xbb, 0xb6,
0x1c, 0x6a, 0x0a, 0xf0, 0x75, 0x64, 0x3c, 0xb7, 0x25, 0xb8, 0xba, 0x04, 0x30, 0xf9, 0x9e, 0xab,
0xc0, 0x1b, 0x57, 0x70, 0x06, 0xbe, 0xee, 0xa4, 0xae, 0x6d, 0xdf, 0x5e, 0x43, 0xb2, 0x3b, 0xf0,
0xf5, 0x7c, 0x30, 0x81, 0x23, 0x49, 0x62, 0x5b, 0x15, 0x64, 0x9b, 0xd7, 0xc3, 0xee, 0xe6, 0x47,
0xae, 0xe8, 0x31, 0xdf, 0xe9, 0xe0, 0x61, 0xd6, 0xc3, 0xee, 0xa6, 0x26, 0xf5, 0xd8, 0x88, 0x7b,
0x1d, 0x3c, 0xcc, 0x7a, 0xc8, 0x7e, 0xbb, 0xe0, 0xeb, 0x3c, 0xff, 0x8e, 0x9b, 0x97, 0xa5, 0x20,
0x29, 0xfb, 0xb8, 0x16, 0x0e, 0x33, 0x4e, 0x9e, 0xcd, 0x38, 0x3d, 0xc8, 0x88, 0x08, 0xd3, 0x55,
0x55, 0xdf, 0x27, 0xbe, 0xa6, 0xf5, 0x19, 0x5f, 0x40, 0xb0, 0x26, 0x25, 0xaa, 0x22, 0x09, 0x74,
0x57, 0x2c, 0xba, 0x5c, 0x02, 0xec, 0xd7, 0x00, 0x11, 0x22, 0x83, 0x6e, 0xea, 0xba, 0xd9, 0xd4,
0x05, 0xc5, 0x0e, 0xc6, 0x30, 0x33, 0x9c, 0x99, 0x49, 0xec, 0x5e, 0xbe, 0x83, 0xf0, 0xa9, 0xef,
0x08, 0x10, 0x98, 0x81, 0xc6, 0x4e, 0x77, 0x36, 0xa3, 0x8c, 0xdd, 0xee, 0x6c, 0x3f, 0xf0, 0x96,
0x7f, 0x3c, 0x08, 0x74, 0x0b, 0x04, 0xbe, 0x86, 0x69, 0xe7, 0x29, 0x9c, 0xf1, 0x81, 0xd3, 0xd2,
0x39, 0x1f, 0x1a, 0x8d, 0x39, 0x78, 0x05, 0x81, 0xf1, 0x06, 0x46, 0xfc, 0xc0, 0x53, 0xe9, 0x09,
0x3f, 0x34, 0x0d, 0x73, 0x90, 0x81, 0xaf, 0x6d, 0x81, 0x73, 0x3e, 0xb4, 0x47, 0x6a, 0xd7, 0x91,
0x39, 0xd7, 0x2e, 0x5e, 0x41, 0xf8, 0x64, 0x15, 0x3c, 0xe5, 0x63, 0xdb, 0xa4, 0x47, 0x96, 0xd2,
0xe2, 0x37, 0x70, 0x64, 0xf7, 0x16, 0x7b, 0x3e, 0x8d, 0xf9, 0x78, 0x95, 0x1d, 0x7c, 0xd5, 0xd7,
0x8e, 0x76, 0x95, 0xd2, 0x13, 0x3e, 0xda, 0x6e, 0x2d, 0x32, 0x4d, 0x19, 0x88, 0x46, 0x0b, 0xaf,
0x45, 0xa6, 0x5b, 0x03, 0xd1, 0xc8, 0x03, 0xce, 0xf7, 0x40, 0xff, 0xa5, 0xde, 0xff, 0x0d, 0x00,
0x00, 0xff, 0xff, 0x20, 0xdd, 0x0c, 0xbd, 0xb5, 0x04, 0x00, 0x00,
}

View File

@ -91,6 +91,10 @@ message Event {
message Query {
// service to lookup
string service = 1;
// gateway to lookup
string gateway = 2;
// network to lookup
string network = 3;
}
// Route is a service route

View File

@ -1,6 +1,8 @@
package service
import (
"context"
"errors"
"sync"
"github.com/micro/go-micro/client"
@ -8,6 +10,11 @@ import (
pb "github.com/micro/go-micro/network/router/proto"
)
var (
// ErrNotImplemented means the functionality has not been implemented
ErrNotImplemented = errors.New("not implemented")
)
type svc struct {
router pb.RouterService
opts router.Options
@ -63,27 +70,70 @@ func (s *svc) Process(a *router.Advert) error {
// Create new route in the routing table
func (s *svc) Create(r router.Route) error {
return nil
return ErrNotImplemented
}
// Delete deletes existing route from the routing table
func (s *svc) Delete(r router.Route) error {
return nil
return ErrNotImplemented
}
// Update updates route in the routing table
func (s *svc) Update(r router.Route) error {
return nil
return ErrNotImplemented
}
// List returns the list of all routes in the table
func (s *svc) List() ([]router.Route, error) {
return nil, nil
resp, err := s.router.List(context.Background(), &pb.ListRequest{})
if err != nil {
return nil, err
}
routes := make([]router.Route, len(resp.Routes))
for i, route := range resp.Routes {
routes[i] = router.Route{
Service: route.Service,
Address: route.Address,
Gateway: route.Gateway,
Network: route.Network,
Link: route.Link,
Metric: int(route.Metric),
}
}
return routes, nil
}
// Lookup looks up routes in the routing table and returns them
func (s *svc) Lookup(q router.Query) ([]router.Route, error) {
return nil, nil
// call the router
resp, err := s.router.Lookup(context.Background(), &pb.LookupRequest{
Query: &pb.Query{
Service: q.Options().Service,
Gateway: q.Options().Gateway,
Network: q.Options().Network,
},
})
// errored out
if err != nil {
return nil, err
}
routes := make([]router.Route, len(resp.Routes))
for i, route := range resp.Routes {
routes[i] = router.Route{
Service: route.Service,
Address: route.Address,
Gateway: route.Gateway,
Network: route.Network,
Link: route.Link,
Metric: int(route.Metric),
}
}
return routes, nil
}
// Watch returns a watcher which allows to track updates to the routing table