Skip to content

Commit 450d47d

Browse files
author
Alena Prokharchyk
committed
Don't start rancher metadata till selfstack info is returned
1 parent 1343dc5 commit 450d47d

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

metadata/metadata.go

+21-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package metadata
22

33
import (
4+
"fmt"
45
"github.com/Sirupsen/logrus"
56
"github.com/rancher/external-dns/dns"
67
"github.com/rancher/go-rancher-metadata/metadata"
8+
"time"
79
)
810

911
const (
@@ -15,19 +17,36 @@ type MetadataClient struct {
1517
EnvironmentName string
1618
}
1719

20+
func getEnvironmentName(m *metadata.Client) (string, error) {
21+
timeout := 30 * time.Second
22+
var err error
23+
var stack metadata.Stack
24+
for i := 1 * time.Second; i < timeout; i *= time.Duration(2) {
25+
stack, err = m.GetSelfStack()
26+
if err != nil {
27+
logrus.Errorf("Error reading stack info: %v...will retry", err)
28+
time.Sleep(i)
29+
} else {
30+
return stack.EnvironmentName, nil
31+
}
32+
}
33+
return "", fmt.Errorf("Error reading stack info: %v", err)
34+
}
35+
1836
func NewMetadataClient() (*MetadataClient, error) {
1937
m, err := metadata.NewClientAndWait(metadataUrl)
2038
if err != nil {
2139
logrus.Fatalf("Failed to configure rancher-metadata: %v", err)
2240
}
23-
selfStack, err := m.GetSelfStack()
41+
42+
envName, err := getEnvironmentName(m)
2443
if err != nil {
2544
logrus.Fatalf("Error reading stack info: %v", err)
2645
}
2746

2847
return &MetadataClient{
2948
MetadataClient: m,
30-
EnvironmentName: selfStack.EnvironmentName,
49+
EnvironmentName: envName,
3150
}, nil
3251
}
3352

0 commit comments

Comments
 (0)