HttpClient: Refactor timeout into two seperate functions

This commit is contained in:
Alex Crawford
2014-06-26 14:58:32 -07:00
parent ad66b1c92f
commit 68dc902ed1
7 changed files with 77 additions and 58 deletions

View File

@@ -32,7 +32,7 @@ const (
type metadataService struct{}
type getter interface {
Get(string) ([]byte, error)
GetRetry(string) ([]byte, error)
}
func NewMetadataService() *metadataService {
@@ -49,12 +49,12 @@ func (ms *metadataService) FetchMetadata() ([]byte, error) {
func (ms *metadataService) FetchUserdata() ([]byte, error) {
client := pkg.NewHttpClient()
if data, err := client.Get(Ec2UserdataUrl); err == nil {
if data, err := client.GetRetry(Ec2UserdataUrl); err == nil {
return data, err
} else if _, ok := err.(pkg.ErrTimeout); ok {
return data, err
}
return client.Get(OpenstackUserdataUrl)
return client.GetRetry(OpenstackUserdataUrl)
}
func (ms *metadataService) Type() string {
@@ -62,7 +62,7 @@ func (ms *metadataService) Type() string {
}
func fetchMetadata(client getter) ([]byte, error) {
if metadata, err := client.Get(OpenstackMetadataUrl); err == nil {
if metadata, err := client.GetRetry(OpenstackMetadataUrl); err == nil {
return metadata, nil
} else if _, ok := err.(pkg.ErrTimeout); ok {
return nil, err
@@ -76,7 +76,7 @@ func fetchMetadata(client getter) ([]byte, error) {
}
func fetchAttributes(client getter, url string) ([]string, error) {
resp, err := client.Get(url)
resp, err := client.GetRetry(url)
if err != nil {
return nil, err
}

View File

@@ -14,7 +14,7 @@ type TestHttpClient struct {
err error
}
func (t *TestHttpClient) Get(url string) ([]byte, error) {
func (t *TestHttpClient) GetRetry(url string) ([]byte, error) {
if t.err != nil {
return nil, t.err
}

View File

@@ -43,7 +43,7 @@ func (c *procCmdline) FetchUserdata() ([]byte, error) {
}
client := pkg.NewHttpClient()
cfg, err := client.Get(url)
cfg, err := client.GetRetry(url)
if err != nil {
return nil, err
}

View File

@@ -20,7 +20,7 @@ func (f *remoteFile) FetchMetadata() ([]byte, error) {
func (f *remoteFile) FetchUserdata() ([]byte, error) {
client := pkg.NewHttpClient()
return client.Get(f.url)
return client.GetRetry(f.url)
}
func (f *remoteFile) Type() string {