add timeout for b2d release check; warn instead of error if cannot check

Signed-off-by: Evan Hazlett <ejhazlett@gmail.com>
This commit is contained in:
Evan Hazlett 2015-01-29 09:15:15 -05:00
parent 7d6fd1f791
commit d1ee81453c
No known key found for this signature in database
GPG Key ID: A519480096146526
4 changed files with 22 additions and 4 deletions

View File

@ -143,7 +143,7 @@ func (d *Driver) Create() error {
// until then always use "latest"
isoURL, err = utils.GetLatestBoot2DockerReleaseURL()
if err != nil {
return err
log.Warnf("Unable to check for the latest release: %s", err)
}
// todo: use real constant for .docker

View File

@ -151,7 +151,7 @@ func (d *Driver) Create() error {
// until then always use "latest"
isoURL, err = utils.GetLatestBoot2DockerReleaseURL()
if err != nil {
return err
log.Warnf("Unable to check for the latest release: %s", err)
}
// todo: use real constant for .docker

View File

@ -245,7 +245,7 @@ func (d *Driver) Create() error {
// until then always use "latest"
isoURL, err = utils.GetLatestBoot2DockerReleaseURL()
if err != nil {
return err
log.Warnf("Unable to check for the latest release: %s", err)
}
rootPath := utils.GetDockerDir()

View File

@ -5,15 +5,33 @@ import (
"fmt"
"io"
"io/ioutil"
"net"
"net/http"
"os"
"path/filepath"
"time"
)
const (
timeout = time.Second * 5
)
func defaultTimeout(network, addr string) (net.Conn, error) {
return net.DialTimeout(network, addr, timeout)
}
// Get the latest boot2docker release tag name (e.g. "v0.6.0").
// FIXME: find or create some other way to get the "latest release" of boot2docker since the GitHub API has a pretty low rate limit on API requests
func GetLatestBoot2DockerReleaseURL() (string, error) {
rsp, err := http.Get("https://api.github.com/repos/boot2docker/boot2docker/releases")
transport := http.Transport{
Dial: defaultTimeout,
}
client := http.Client{
Transport: &transport,
}
rsp, err := client.Get("https://api.github.com/repos/boot2docker/boot2docker/releases")
if err != nil {
return "", err
}