func (s *EtcdBackendSuite) SetUpSuite(c *C) { log.Init([]*log.LogConfig{&log.LogConfig{Name: "console"}}) nodes_string := os.Getenv("VULCAND_ETCD_NODES") if nodes_string == "" { // Skips the entire suite c.Skip("This test requires etcd, provide comma separated nodes in VULCAND_TEST_ETCD_NODES environment variable") return } s.nodes = strings.Split(nodes_string, ",") }
func (s *Service) Start() error { // Init logging log.Init([]*log.LogConfig{&log.LogConfig{Name: s.options.Log}}) backend, err := NewEtcdBackend(s.options.EtcdNodes, s.options.EtcdKey, s.options.EtcdConsistency) if err != nil { return err } s.backend = backend if s.options.PidPath != "" { if err := runtime.WritePid(s.options.PidPath); err != nil { return fmt.Errorf("Failed to write PID file: %v\n", err) } } if err := s.createProxy(); err != nil { return err } go s.startProxy() s.configurator = NewConfigurator(s.proxy) // Tell backend to watch configuration changes and pass them to the channel // the second parameter tells backend to do the initial read of the configuration // and produce the stream of changes so proxy would initialise initial config go s.backend.WatchChanges(s.changes, true) // Configurator will listen to the changes from the channel and will go s.configurator.WatchChanges(s.changes) if err := s.initApi(); err != nil { return err } go s.startApi() c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt, os.Kill) // Block until a signal is received. log.Infof("Got signal %s, exiting now", <-c) return nil }
func (s *Service) Start() error { // Init logging log.Init([]*log.LogConfig{&log.LogConfig{Name: "console"}}) backend, err := NewEtcdBackend(s.options.EtcdNodes, s.options.EtcdKey, s.options.EtcdConsistency, s.changes, s) if err != nil { return err } s.backend = backend if s.options.PidPath != "" { if err := runtime.WritePid(s.options.PidPath); err != nil { return fmt.Errorf("Failed to write PID file: %v\n", err) } } if err := s.createProxy(); err != nil { return err } if err := s.configureProxy(); err != nil { return err } if err := s.configureApi(); err != nil { return err } go s.startProxy() go s.startApi() go s.watchChanges() c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt, os.Kill) // Block until a signal is received. log.Infof("Got signal %s, exiting now", <-c) return nil }