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

View File

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

View File

@ -1,6 +1,8 @@
package service package service
import ( import (
"context"
"errors"
"sync" "sync"
"github.com/micro/go-micro/client" "github.com/micro/go-micro/client"
@ -8,6 +10,11 @@ import (
pb "github.com/micro/go-micro/network/router/proto" 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 { type svc struct {
router pb.RouterService router pb.RouterService
opts router.Options opts router.Options
@ -63,27 +70,70 @@ func (s *svc) Process(a *router.Advert) error {
// Create new route in the routing table // Create new route in the routing table
func (s *svc) Create(r router.Route) error { func (s *svc) Create(r router.Route) error {
return nil return ErrNotImplemented
} }
// Delete deletes existing route from the routing table // Delete deletes existing route from the routing table
func (s *svc) Delete(r router.Route) error { func (s *svc) Delete(r router.Route) error {
return nil return ErrNotImplemented
} }
// Update updates route in the routing table // Update updates route in the routing table
func (s *svc) Update(r router.Route) error { func (s *svc) Update(r router.Route) error {
return nil return ErrNotImplemented
} }
// List returns the list of all routes in the table // List returns the list of all routes in the table
func (s *svc) List() ([]router.Route, error) { 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 // Lookup looks up routes in the routing table and returns them
func (s *svc) Lookup(q router.Query) ([]router.Route, error) { 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 // Watch returns a watcher which allows to track updates to the routing table