Add configurable timout for HTTP requests

So that requests taking more than one minute does not timeout.
This commit is contained in:
Petter Hassberg 2017-10-20 15:26:54 +02:00
parent 2039eea38b
commit 2802ba9eb9
3 changed files with 23 additions and 4 deletions

View file

@ -27,7 +27,7 @@ func Log(format string, args ...interface{}) {
}
// New creates a new Clair struct with the given URL and credentials.
func New(url string, debug bool) (*Clair, error) {
func New(url string, debug bool, timeout time.Duration) (*Clair, error) {
transport := http.DefaultTransport
errorTransport := &ErrorTransport{
@ -43,7 +43,7 @@ func New(url string, debug bool) (*Clair, error) {
registry := &Clair{
URL: url,
Client: &http.Client{
Timeout: time.Minute,
Timeout: timeout,
Transport: errorTransport,
},
Logf: logf,

14
main.go
View file

@ -18,6 +18,7 @@ import (
"github.com/jessfraz/reg/version"
digest "github.com/opencontainers/go-digest"
"github.com/urfave/cli"
"time"
)
const (
@ -99,6 +100,11 @@ func main() {
Name: "registry, r",
Usage: "URL to the private registry (ex. r.j3ss.co)",
},
cli.StringFlag{
Name: "timeout",
Value: "1m",
Usage: "timeout for HTTP requests",
},
}
app.Commands = []cli.Command{
{
@ -285,8 +291,14 @@ func main() {
return nil
}
// parse the timeout
timeout, err := time.ParseDuration(c.GlobalString("timeout"))
if err != nil {
logrus.Fatalf("parsing %s as duration failed: %v", c.GlobalString("timeout"), err)
}
// initialize clair
cr, err := clair.New(c.String("clair"), c.GlobalBool("debug"))
cr, err := clair.New(c.String("clair"), c.GlobalBool("debug"), timeout)
if err != nil {
return err
}

View file

@ -96,6 +96,7 @@ func main() {
Name: "clair",
Usage: "url to clair instance",
},
}
app.Action = func(c *cli.Context) error {
auth, err := utils.GetAuthConfig(c)
@ -116,9 +117,15 @@ func main() {
}
}
// parse the timeout
timeout, err := time.ParseDuration(c.GlobalString("timeout"))
if err != nil {
logrus.Fatalf("parsing %s as duration failed: %v", c.GlobalString("timeout"), err)
}
// create a clair instance if needed
if c.GlobalString("clair") != "" {
cl, err = clair.New(c.GlobalString("clair"), c.GlobalBool("debug"))
cl, err = clair.New(c.GlobalString("clair"), c.GlobalBool("debug"), timeout)
if err != nil {
logrus.Warnf("creation of clair failed: %v", err)
}