func Main() { logger := logrus.WithFields(logrus.Fields{ "version": version.VERSION, }) logger.Info("Starting rancher-compose-executor") eventHandlers := map[string]events.EventHandler{ "stack.create": handlers.WithTimeout(handlers.CreateStack), "stack.upgrade": handlers.WithTimeout(handlers.UpgradeStack), "stack.finishupgrade": handlers.WithTimeout(handlers.FinishUpgradeStack), "stack.rollback": handlers.WithTimeout(handlers.RollbackStack), "ping": func(event *events.Event, apiClient *client.RancherClient) error { return nil }, } router, err := events.NewEventRouter("rancher-compose-executor", 2000, os.Getenv("CATTLE_URL"), os.Getenv("CATTLE_ACCESS_KEY"), os.Getenv("CATTLE_SECRET_KEY"), nil, eventHandlers, "stack", 10, events.DefaultPingConfig) if err != nil { logrus.WithField("error", err).Fatal("Unable to create event router") } if err := router.Start(nil); err != nil { logrus.WithField("error", err).Fatal("Unable to start event router") } logger.Info("Exiting rancher-compose-executor") }
func ConnectToEventStream(conf config.Config) error { kClient := kubernetesclient.NewClient(conf.KubernetesURL, false) eventHandlers := map[string]revents.EventHandler{ "compute.instance.providelabels": eventhandlers.NewProvideLablesHandler(kClient).Handler, "config.update": eventhandlers.NewPingHandler().Handler, "ping": eventhandlers.NewPingHandler().Handler, } router, err := revents.NewEventRouter("", 0, conf.CattleURL, conf.CattleAccessKey, conf.CattleSecretKey, nil, eventHandlers, "", conf.WorkerCount, revents.DefaultPingConfig) if err != nil { return err } err = router.StartWithoutCreate(nil) return err }
func (s *Subscriber) Subscribe() error { handlers := map[string]revents.EventHandler{ "ping": s.noOp, "config.update": s.configUpdate, } router, err := revents.NewEventRouter("", 0, s.url, s.accessKey, s.secretKey, nil, handlers, "", 3, revents.DefaultPingConfig) if err != nil { return err } go func() { logrus.Fatalf("Exiting subscriber: %v", router.StartWithoutCreate(nil)) }() return nil }
func (s *Subscriber) Subscribe() error { handlers := map[string]revents.EventHandler{ "ping": s.noOp, "config.update": s.configUpdate, } router, err := revents.NewEventRouter("", 0, s.url, s.accessKey, s.secretKey, nil, handlers, "", 3, revents.DefaultPingConfig) if err != nil { return err } go func() { for { sp := revents.SkippingWorkerPool(3, nil) if err := router.RunWithWorkerPool(sp); err != nil { logrus.Errorf("Exiting subscriber: %v", err) } time.Sleep(time.Second) } }() return nil }