dockerutil: cache feature collection

Signed-off-by: Justin Chadwell <me@jedevc.com>
pull/1877/head
Justin Chadwell 2 years ago
parent bef42b2441
commit d4a2c8d0c3

@ -13,6 +13,9 @@ import (
// Client represents an active docker object.
type Client struct {
cli command.Cli
featuresOnce sync.Once
featuresCache map[Feature]bool
}
// NewClient initializes a new docker client.
@ -64,6 +67,13 @@ func (c *Client) LoadImage(ctx context.Context, name string, status progress.Wri
}
func (c *Client) Features(ctx context.Context, name string) map[Feature]bool {
c.featuresOnce.Do(func() {
c.featuresCache = c.features(ctx, name)
})
return c.featuresCache
}
func (c *Client) features(ctx context.Context, name string) map[Feature]bool {
features := make(map[Feature]bool)
if dapi, err := c.API(name); err == nil {
if info, err := dapi.Info(ctx); err == nil {

Loading…
Cancel
Save