resources/images: Make the image cache more robust

Also allow timeout to be set as a duration string, e.g. `30s`.

Fixes #6501
This commit is contained in:
Bjørn Erik Pedersen
2019-11-25 12:49:04 +01:00
parent 031f948f87
commit d6f7a9e28d
11 changed files with 85 additions and 32 deletions

View File

@@ -123,6 +123,15 @@ func (i Image) WithSpec(s Spec) *Image {
return &i
}
// InitConfig reads the image config from the given reader.
func (i *Image) InitConfig(r io.Reader) error {
var err error
i.configInit.Do(func() {
i.config, _, err = image.DecodeConfig(r)
})
return err
}
func (i *Image) initConfig() error {
var err error
i.configInit.Do(func() {
@@ -130,10 +139,7 @@ func (i *Image) initConfig() error {
return
}
var (
f hugio.ReadSeekCloser
config image.Config
)
var f hugio.ReadSeekCloser
f, err = i.Spec.ReadSeekCloser()
if err != nil {
@@ -141,11 +147,7 @@ func (i *Image) initConfig() error {
}
defer f.Close()
config, _, err = image.DecodeConfig(f)
if err != nil {
return
}
i.config = config
i.config, _, err = image.DecodeConfig(f)
})
if err != nil {