// Init is exported func Init() { // Register to libkv zookeeper.Register() consul.Register() etcd.Register() // Register to internal Swarm discovery service discovery.Register("zk", &Discovery{backend: store.ZK}) discovery.Register("consul", &Discovery{backend: store.CONSUL}) discovery.Register("etcd", &Discovery{backend: store.ETCD}) }
func (provider *KvProvider) provide(configurationChan chan<- configMessage) error { switch provider.StoreType { case store.CONSUL: consul.Register() case store.ETCD: etcd.Register() case store.ZK: zookeeper.Register() case store.BOLTDB: boltdb.Register() default: return errors.New("Invalid kv store: " + string(provider.StoreType)) } kv, err := libkv.NewStore( provider.StoreType, []string{provider.Endpoint}, &store.Config{ ConnectionTimeout: 30 * time.Second, Bucket: "traefik", }, ) if err != nil { return err } if _, err := kv.List(""); err != nil { return err } provider.kvclient = kv if provider.Watch { stopCh := make(chan struct{}) chanKeys, err := kv.WatchTree(provider.Prefix, stopCh) if err != nil { return err } go func() { for { <-chanKeys configuration := provider.loadConfig() if configuration != nil { configurationChan <- configMessage{string(provider.StoreType), configuration} } defer close(stopCh) } }() } configuration := provider.loadConfig() configurationChan <- configMessage{string(provider.StoreType), configuration} return nil }
func New(hosts []string, config *store.Config) (store.Store, error) { zookeeper.Register() s, err := libkv.NewStore( store.ZK, hosts, config, ) if err != nil { return nil, err } return &ZookeeperStorage{ GeneralStorage: general.New(s, string(store.ZK)), }, nil }
// Provide allows the provider to provide configurations to traefik // using the given configuration channel. func (provider *Zookepper) Provide(configurationChan chan<- types.ConfigMessage, pool *safe.Pool, constraints []types.Constraint) error { provider.storeType = store.ZK zookeeper.Register() return provider.provide(configurationChan, pool, constraints) }
func init() { etcd.Register() consul.Register() zookeeper.Register() }
func init() { consul.Register() zookeeper.Register() etcd.Register() boltdb.Register() }
// Provide allows the provider to provide configurations to traefik // using the given configuration channel. func (provider *Zookepper) Provide(configurationChan chan<- types.ConfigMessage) error { provider.storeType = store.ZK zookeeper.Register() return provider.provide(configurationChan) }
func registerKVStores() { consul.Register() zookeeper.Register() etcd.Register() boltdb.Register() }
// CreateStore creates the KV store func (provider *Zookepper) CreateStore() (store.Store, error) { provider.storeType = store.ZK zookeeper.Register() return provider.createStore() }