mirror of
https://github.com/genuinetools/reg.git
synced 2024-07-02 11:54:15 -04:00
Add configurable timout for HTTP requests
So that requests taking more than one minute does not timeout.
This commit is contained in:
parent
2039eea38b
commit
2802ba9eb9
|
@ -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
14
main.go
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue