3 import "github.com/go-kit/kit/log"
5 // Registrar registers service instance liveness information to ZooKeeper.
6 type Registrar struct {
12 // Service holds the root path, service name and instance identifying data you
13 // want to publish to ZooKeeper.
15 Path string // discovery namespace, example: /myorganization/myplatform/
16 Name string // service name, example: addscv
17 Data []byte // instance data to store for discovery, example: 10.0.2.10:80
18 node string // Client will record the ephemeral node name so we can deregister
21 // NewRegistrar returns a ZooKeeper Registrar acting on the provided catalog
23 func NewRegistrar(client Client, service Service, logger log.Logger) *Registrar {
27 logger: log.With(logger,
28 "service", service.Name,
30 "data", string(service.Data),
35 // Register implements sd.Registrar interface.
36 func (r *Registrar) Register() {
37 if err := r.client.Register(&r.service); err != nil {
38 r.logger.Log("err", err)
40 r.logger.Log("action", "register")
44 // Deregister implements sd.Registrar interface.
45 func (r *Registrar) Deregister() {
46 if err := r.client.Deregister(&r.service); err != nil {
47 r.logger.Log("err", err)
49 r.logger.Log("action", "deregister")