This commit is contained in:
Fernandez Ludovic 2019-04-20 15:00:19 +02:00
parent c2bcf153e9
commit 0e4b36035c
2 changed files with 72 additions and 72 deletions

60
file.go
View File

@ -13,6 +13,36 @@ type FileBackend struct {
Path string
}
func (b FileBackend) getStoredData(watch bool) (<-chan *StoredData, <-chan error) {
dataCh := make(chan *StoredData)
errCh := make(chan error)
go func() {
sendStoredData(b.Path, dataCh, errCh)
if !watch {
close(dataCh)
close(errCh)
}
}()
if !watch {
return dataCh, errCh
}
watcher, err := fsnotify.NewWatcher()
if err != nil {
errCh <- err
}
go loopFile(b.Path, watcher, dataCh, errCh)
err = watcher.Add(b.Path)
if err != nil {
errCh <- err
}
return dataCh, errCh
}
func getStoredDataFromFile(path string) (*StoredData, error) {
f, err := os.Open(path)
if err != nil {
@ -54,33 +84,3 @@ func loopFile(path string, watcher *fsnotify.Watcher, dataCh chan *StoredData, e
}
}()
}
func (b FileBackend) getStoredData(watch bool) (<-chan *StoredData, <-chan error) {
dataCh := make(chan *StoredData)
errCh := make(chan error)
go func() {
sendStoredData(b.Path, dataCh, errCh)
if !watch {
close(dataCh)
close(errCh)
}
}()
if !watch {
return dataCh, errCh
}
watcher, err := fsnotify.NewWatcher()
if err != nil {
errCh <- err
}
go loopFile(b.Path, watcher, dataCh, errCh)
err = watcher.Add(b.Path)
if err != nil {
errCh <- err
}
return dataCh, errCh
}

84
kv.go
View File

@ -17,6 +17,48 @@ import (
const storeKey = "traefik/acme/account/object"
// KVBackend represents a Key/Value pair backend
type KVBackend struct {
Name string
Client []string
Config *store.Config
}
func (b KVBackend) getStoredData(watch bool) (<-chan *StoredData, <-chan error) {
dataCh := make(chan *StoredData)
errCh := make(chan error)
backend, err := register(b.Name)
if err != nil {
go func() {
errCh <- err
}()
return dataCh, errCh
}
kvStore, err := valkeyrie.NewStore(
backend,
b.Client,
b.Config,
)
if err != nil {
go func() {
errCh <- err
}()
return dataCh, errCh
}
if !watch {
go getSingleData(kvStore, dataCh, errCh)
return dataCh, errCh
}
go loopKV(watch, kvStore, dataCh, errCh)
return dataCh, errCh
}
func getStoredDataFromGzip(value []byte) (*StoredData, error) {
data := &StoredData{}
@ -38,13 +80,6 @@ func getStoredDataFromGzip(value []byte) (*StoredData, error) {
return storedData, nil
}
// KVBackend represents a Key/Value pair backend
type KVBackend struct {
Name string
Client []string
Config *store.Config
}
func register(backend string) (store.Backend, error) {
switch backend {
case Consul:
@ -108,38 +143,3 @@ func getSingleData(kvStore store.Store, dataCh chan *StoredData, errCh chan erro
close(dataCh)
close(errCh)
}
func (b KVBackend) getStoredData(watch bool) (<-chan *StoredData, <-chan error) {
dataCh := make(chan *StoredData)
errCh := make(chan error)
backend, err := register(b.Name)
if err != nil {
go func() {
errCh <- err
}()
return dataCh, errCh
}
kvStore, err := valkeyrie.NewStore(
backend,
b.Client,
b.Config,
)
if err != nil {
go func() {
errCh <- err
}()
return dataCh, errCh
}
if !watch {
go getSingleData(kvStore, dataCh, errCh)
return dataCh, errCh
}
go loopKV(watch, kvStore, dataCh, errCh)
return dataCh, errCh
}