func deregisterService(c *cli.Context) { if len(c.Args()) != 1 { fmt.Println("require service definition") return } var service *registry.Service if err := json.Unmarshal([]byte(c.Args().First()), &service); err != nil { fmt.Println(err.Error()) return } if err := registry.Deregister(service); err != nil { fmt.Println(err.Error()) return } }
func delService(w http.ResponseWriter, r *http.Request) { r.ParseForm() b, err := ioutil.ReadAll(r.Body) if err != nil { http.Error(w, err.Error(), 500) return } defer r.Body.Close() var service *registry.Service err = json.Unmarshal(b, &service) if err != nil { http.Error(w, err.Error(), 500) return } err = registry.Deregister(service) if err != nil { http.Error(w, err.Error(), 500) return } }
func (s *Sidecar) hcLoop(service *registry.Service, exitCh chan bool) { tick := time.NewTicker(time.Second * 30) registered := true for { select { case <-tick.C: _, err := s.hc() if err != nil && registered { log.Infof("Healthcheck error. Deregistering %v", service.Nodes[0].Id) registry.Deregister(service) registered = false } else if err == nil && !registered { log.Infof("Healthcheck success. Registering %v", service.Nodes[0].Id) registry.Register(service) registered = true } case <-exitCh: return } } }
func (h *httpBroker) start() error { h.Lock() defer h.Unlock() if h.running { return nil } var l net.Listener var err error if h.opts.Secure || h.opts.TLSConfig != nil { config := h.opts.TLSConfig if config == nil { cert, err := mls.Certificate(h.address) if err != nil { return err } config = &tls.Config{Certificates: []tls.Certificate{cert}} } l, err = tls.Listen("tcp", h.address, config) } else { l, err = net.Listen("tcp", h.address) } if err != nil { return err } log.Infof("Broker Listening on %s", l.Addr().String()) h.address = l.Addr().String() go http.Serve(l, h) go func() { for { select { case ch := <-h.exit: ch <- l.Close() h.Lock() h.running = false h.Unlock() return case subscriber := <-h.unsubscribe: h.Lock() var subscribers []*httpSubscriber for _, sub := range h.subscribers[subscriber.topic] { if sub.id == subscriber.id { registry.Deregister(sub.svc) } subscribers = append(subscribers, sub) } h.subscribers[subscriber.topic] = subscribers h.Unlock() } } }() h.running = true return nil }
func (s *service) deregister() error { if s.srv == nil { return nil } return registry.Deregister(s.srv) }