Service and node should be structs rather than interface
This commit is contained in:
@@ -16,22 +16,22 @@ type kregistry struct {
|
||||
namespace string
|
||||
|
||||
mtx sync.RWMutex
|
||||
services map[string]registry.Service
|
||||
services map[string]*registry.Service
|
||||
}
|
||||
|
||||
func (c *kregistry) Watch() {
|
||||
newWatcher(c)
|
||||
}
|
||||
|
||||
func (c *kregistry) Deregister(s registry.Service) error {
|
||||
func (c *kregistry) Deregister(s *registry.Service) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *kregistry) Register(s registry.Service) error {
|
||||
func (c *kregistry) Register(s *registry.Service) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *kregistry) GetService(name string) (registry.Service, error) {
|
||||
func (c *kregistry) GetService(name string) (*registry.Service, error) {
|
||||
c.mtx.RLock()
|
||||
svc, ok := c.services[name]
|
||||
c.mtx.RUnlock()
|
||||
@@ -51,23 +51,26 @@ func (c *kregistry) GetService(name string) (registry.Service, error) {
|
||||
return nil, fmt.Errorf("Service not found")
|
||||
}
|
||||
|
||||
ks := &service{name: name}
|
||||
ks := ®istry.Service{
|
||||
Name: name,
|
||||
}
|
||||
|
||||
for _, item := range services.Items {
|
||||
ks.nodes = append(ks.nodes, &node{
|
||||
address: item.Spec.PortalIP,
|
||||
port: item.Spec.Ports[0].Port,
|
||||
ks.Nodes = append(ks.Nodes, ®istry.Node{
|
||||
Address: item.Spec.PortalIP,
|
||||
Port: item.Spec.Ports[0].Port,
|
||||
})
|
||||
}
|
||||
|
||||
return ks, nil
|
||||
}
|
||||
|
||||
func (c *kregistry) ListServices() ([]registry.Service, error) {
|
||||
func (c *kregistry) ListServices() ([]*registry.Service, error) {
|
||||
c.mtx.RLock()
|
||||
serviceMap := c.services
|
||||
c.mtx.RUnlock()
|
||||
|
||||
var services []registry.Service
|
||||
var services []*registry.Service
|
||||
|
||||
if len(serviceMap) > 0 {
|
||||
for _, service := range serviceMap {
|
||||
@@ -86,37 +89,14 @@ func (c *kregistry) ListServices() ([]registry.Service, error) {
|
||||
continue
|
||||
}
|
||||
|
||||
services = append(services, &service{
|
||||
name: svc.ObjectMeta.Labels["name"],
|
||||
services = append(services, ®istry.Service{
|
||||
Name: svc.ObjectMeta.Labels["name"],
|
||||
})
|
||||
}
|
||||
|
||||
return services, nil
|
||||
}
|
||||
|
||||
func (c *kregistry) NewService(name string, nodes ...registry.Node) registry.Service {
|
||||
var snodes []*node
|
||||
|
||||
for _, nod := range nodes {
|
||||
if n, ok := nod.(*node); ok {
|
||||
snodes = append(snodes, n)
|
||||
}
|
||||
}
|
||||
|
||||
return &service{
|
||||
name: name,
|
||||
nodes: snodes,
|
||||
}
|
||||
}
|
||||
|
||||
func (c *kregistry) NewNode(id, address string, port int) registry.Node {
|
||||
return &node{
|
||||
id: id,
|
||||
address: address,
|
||||
port: port,
|
||||
}
|
||||
}
|
||||
|
||||
func NewRegistry(addrs []string, opts ...registry.Option) registry.Registry {
|
||||
host := "http://" + os.Getenv("KUBERNETES_RO_SERVICE_HOST") + ":" + os.Getenv("KUBERNETES_RO_SERVICE_PORT")
|
||||
if len(addrs) > 0 {
|
||||
@@ -130,7 +110,7 @@ func NewRegistry(addrs []string, opts ...registry.Option) registry.Registry {
|
||||
kr := &kregistry{
|
||||
client: client,
|
||||
namespace: "default",
|
||||
services: make(map[string]registry.Service),
|
||||
services: make(map[string]*registry.Service),
|
||||
}
|
||||
|
||||
kr.Watch()
|
||||
|
@@ -1,19 +0,0 @@
|
||||
package kubernetes
|
||||
|
||||
type node struct {
|
||||
id string
|
||||
address string
|
||||
port int
|
||||
}
|
||||
|
||||
func (n *node) Id() string {
|
||||
return n.id
|
||||
}
|
||||
|
||||
func (n *node) Address() string {
|
||||
return n.address
|
||||
}
|
||||
|
||||
func (n *node) Port() int {
|
||||
return n.port
|
||||
}
|
@@ -1,24 +0,0 @@
|
||||
package kubernetes
|
||||
|
||||
import (
|
||||
"github.com/myodc/go-micro/registry"
|
||||
)
|
||||
|
||||
type service struct {
|
||||
name string
|
||||
nodes []*node
|
||||
}
|
||||
|
||||
func (s *service) Name() string {
|
||||
return s.name
|
||||
}
|
||||
|
||||
func (s *service) Nodes() []registry.Node {
|
||||
var nodes []registry.Node
|
||||
|
||||
for _, node := range s.nodes {
|
||||
nodes = append(nodes, node)
|
||||
}
|
||||
|
||||
return nodes
|
||||
}
|
@@ -8,6 +8,7 @@ import (
|
||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/api"
|
||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/proxy/config"
|
||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/util"
|
||||
"github.com/myodc/go-micro/registry"
|
||||
)
|
||||
|
||||
type watcher struct {
|
||||
@@ -27,12 +28,12 @@ func (k *watcher) OnUpdate(services []api.Service) {
|
||||
activeServices.Insert(name)
|
||||
serviceIP := net.ParseIP(svc.Spec.PortalIP)
|
||||
|
||||
ks := &service{
|
||||
name: name,
|
||||
nodes: []*node{
|
||||
&node{
|
||||
address: serviceIP.String(),
|
||||
port: svc.Spec.Ports[0].Port,
|
||||
ks := ®istry.Service{
|
||||
Name: name,
|
||||
Nodes: []*registry.Node{
|
||||
®istry.Node{
|
||||
Address: serviceIP.String(),
|
||||
Port: svc.Spec.Ports[0].Port,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
Reference in New Issue
Block a user