コード例 #1
0
ファイル: kv.go プロジェクト: ahjdzx/traefik
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
}
コード例 #2
0
ファイル: boltdb.go プロジェクト: JeffChien/kvctl
func New(hosts []string, config *store.Config) (store.Store, error) {
	boltdb.Register()

	s, err := libkv.NewStore(
		store.BOLTDB,
		hosts,
		config,
	)
	if err != nil {
		return nil, err
	}
	return &BoltdbStorage{
		GeneralStorage: general.New(s, string(store.BOLTDB)),
	}, nil
}
コード例 #3
0
ファイル: datastore.go プロジェクト: caoyin0727/libdatastore
func init() {
	consul.Register()
	zookeeper.Register()
	etcd.Register()
	boltdb.Register()
}
コード例 #4
0
ファイル: boltdb.go プロジェクト: goguardian/traefik
// Provide allows the provider to provide configurations to traefik
// using the given configuration channel.
func (provider *BoltDb) Provide(configurationChan chan<- types.ConfigMessage, pool *safe.Pool) error {
	provider.storeType = store.BOLTDB
	boltdb.Register()
	return provider.provide(configurationChan, pool)
}
コード例 #5
0
ファイル: store.go プロジェクト: vdemeester/libnetwork
func registerKVStores() {
	consul.Register()
	zookeeper.Register()
	etcd.Register()
	boltdb.Register()
}
コード例 #6
0
func init() {
	boltdb.Register()
}
コード例 #7
0
ファイル: boltdb.go プロジェクト: abhishekamralkar/traefik
// Provide allows the provider to provide configurations to traefik
// using the given configuration channel.
func (provider *BoltDb) Provide(configurationChan chan<- types.ConfigMessage) error {
	provider.StoreType = store.BOLTDB
	boltdb.Register()
	return provider.provide(configurationChan)
}
コード例 #8
0
ファイル: boltdb.go プロジェクト: vdemeester/traefik
// CreateStore creates the KV store
func (provider *BoltDb) CreateStore() (store.Store, error) {
	provider.storeType = store.BOLTDB
	boltdb.Register()
	return provider.createStore()
}