Refactor into dual Rancher API/Metadata providers
Introduces Rancher's metadata service as an optional provider source for Traefik, enabled by setting `rancher.MetadataService`. The provider uses a long polling technique to watch the metadata service and obtain near instantaneous updates. Alternatively it can be configured to poll the metadata service every `rancher.RefreshSeconds` by setting `rancher.MetadataPoll`. The refactor splits API and metadata service code into separate source files respectively, and specific configuration is deferred to sub-structs. Incorporates bugfix #1414
This commit is contained in:
parent
984ea1040f
commit
9cb07d026f
14 changed files with 1006 additions and 272 deletions
19
vendor/github.com/rancher/go-rancher-metadata/metadata/utils.go
generated
vendored
Normal file
19
vendor/github.com/rancher/go-rancher-metadata/metadata/utils.go
generated
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
package metadata
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
func testConnection(mdClient Client) error {
|
||||
var err error
|
||||
maxTime := 20 * time.Second
|
||||
|
||||
for i := 1 * time.Second; i < maxTime; i *= time.Duration(2) {
|
||||
if _, err = mdClient.GetVersion(); err != nil {
|
||||
time.Sleep(i)
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue