Add support for listing services, very rough
This commit is contained in:
parent
f2daa02256
commit
52f140da5f
@ -84,6 +84,32 @@ func (c *ConsulRegistry) GetService(name string) (Service, error) {
|
|||||||
return cs, nil
|
return cs, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *ConsulRegistry) ListServices() ([]Service, error) {
|
||||||
|
c.mtx.RLock()
|
||||||
|
serviceMap := c.services
|
||||||
|
c.mtx.RUnlock()
|
||||||
|
|
||||||
|
var services []Service
|
||||||
|
|
||||||
|
if len(serviceMap) > 0 {
|
||||||
|
for _, service := range services {
|
||||||
|
services = append(services, service)
|
||||||
|
}
|
||||||
|
return services, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
rsp, _, err := c.Client.Catalog().Services(&consul.QueryOptions{})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
for service, _ := range rsp {
|
||||||
|
services = append(services, &ConsulService{ServiceName: service})
|
||||||
|
}
|
||||||
|
|
||||||
|
return services, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (c *ConsulRegistry) NewService(name string, nodes ...Node) Service {
|
func (c *ConsulRegistry) NewService(name string, nodes ...Node) Service {
|
||||||
var snodes []*ConsulNode
|
var snodes []*ConsulNode
|
||||||
|
|
||||||
|
@ -60,6 +60,38 @@ func (c *KubernetesRegistry) GetService(name string) (Service, error) {
|
|||||||
return ks, nil
|
return ks, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *KubernetesRegistry) ListServices() ([]Service, error) {
|
||||||
|
c.mtx.RLock()
|
||||||
|
serviceMap := c.services
|
||||||
|
c.mtx.RUnlock()
|
||||||
|
|
||||||
|
var services []Service
|
||||||
|
|
||||||
|
if len(serviceMap) > 0 {
|
||||||
|
for _, service := range serviceMap {
|
||||||
|
services = append(services, service)
|
||||||
|
}
|
||||||
|
return services, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
rsp, err := c.Client.Services(c.Namespace).List(labels.Everything())
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, service := range rsp.Items {
|
||||||
|
if len(service.ObjectMeta.Labels["name"]) == 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
services = append(services, &KubernetesService{
|
||||||
|
ServiceName: service.ObjectMeta.Labels["name"],
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return services, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (c *KubernetesRegistry) NewService(name string, nodes ...Node) Service {
|
func (c *KubernetesRegistry) NewService(name string, nodes ...Node) Service {
|
||||||
var snodes []*KubernetesNode
|
var snodes []*KubernetesNode
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ type Registry interface {
|
|||||||
Register(Service) error
|
Register(Service) error
|
||||||
Deregister(Service) error
|
Deregister(Service) error
|
||||||
GetService(string) (Service, error)
|
GetService(string) (Service, error)
|
||||||
|
ListServices() ([]Service, error)
|
||||||
NewService(string, ...Node) Service
|
NewService(string, ...Node) Service
|
||||||
NewNode(string, string, int) Node
|
NewNode(string, string, int) Node
|
||||||
}
|
}
|
||||||
@ -23,3 +24,7 @@ func Deregister(s Service) error {
|
|||||||
func GetService(name string) (Service, error) {
|
func GetService(name string) (Service, error) {
|
||||||
return DefaultRegistry.GetService(name)
|
return DefaultRegistry.GetService(name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ListServices() ([]Service, error) {
|
||||||
|
return DefaultRegistry.ListServices()
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user