Skip to content

Commit 82949ae

Browse files
authored
Merge pull request moby#3607 from crazy-max/remotecache
remotecache: small enhancements
2 parents 34724c2 + 1db8166 commit 82949ae

File tree

7 files changed

+78
-101
lines changed

7 files changed

+78
-101
lines changed

cache/remotecache/azblob/exporter.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ type exporter struct {
5454
}
5555

5656
func (ce *exporter) Name() string {
57-
return "exporting cache to azure blob store"
57+
return "exporting cache to Azure Blob Storage"
5858
}
5959

6060
func (ce *exporter) Finalize(ctx context.Context) (map[string]string, error) {

cache/remotecache/gha/gha.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ func NewExporter(c *Config) (remotecache.Exporter, error) {
9191
}
9292

9393
func (*exporter) Name() string {
94-
return "exporting to GitHub cache"
94+
return "exporting to GitHub Actions Cache"
9595
}
9696

9797
func (ce *exporter) Config() remotecache.Config {

cache/remotecache/local/local.go

Lines changed: 10 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,24 @@ const (
2121
attrDest = "dest"
2222
attrOCIMediatypes = "oci-mediatypes"
2323
contentStoreIDPrefix = "local:"
24-
attrLayerCompression = "compression"
25-
attrForceCompression = "force-compression"
26-
attrCompressionLevel = "compression-level"
2724
)
2825

26+
type exporter struct {
27+
remotecache.Exporter
28+
}
29+
30+
func (*exporter) Name() string {
31+
return "exporting cache to client directory"
32+
}
33+
2934
// ResolveCacheExporterFunc for "local" cache exporter.
3035
func ResolveCacheExporterFunc(sm *session.Manager) remotecache.ResolveCacheExporterFunc {
3136
return func(ctx context.Context, g session.Group, attrs map[string]string) (remotecache.Exporter, error) {
3237
store := attrs[attrDest]
3338
if store == "" {
3439
return nil, errors.New("local cache exporter requires dest")
3540
}
36-
compressionConfig, err := attrsToCompression(attrs)
41+
compressionConfig, err := compression.ParseAttributes(attrs)
3742
if err != nil {
3843
return nil, err
3944
}
@@ -50,7 +55,7 @@ func ResolveCacheExporterFunc(sm *session.Manager) remotecache.ResolveCacheExpor
5055
if err != nil {
5156
return nil, err
5257
}
53-
return remotecache.NewExporter(cs, "", ociMediatypes, *compressionConfig), nil
58+
return &exporter{remotecache.NewExporter(cs, "", ociMediatypes, compressionConfig)}, nil
5459
}
5560
}
5661

@@ -109,38 +114,3 @@ type unlazyProvider struct {
109114
func (p *unlazyProvider) UnlazySession(desc ocispecs.Descriptor) session.Group {
110115
return p.s
111116
}
112-
113-
func attrsToCompression(attrs map[string]string) (*compression.Config, error) {
114-
var compressionType compression.Type
115-
if v, ok := attrs[attrLayerCompression]; ok {
116-
c, err := compression.Parse(v)
117-
if err != nil {
118-
return nil, err
119-
}
120-
compressionType = c
121-
} else {
122-
compressionType = compression.Default
123-
}
124-
compressionConfig := compression.New(compressionType)
125-
if v, ok := attrs[attrForceCompression]; ok {
126-
var force bool
127-
if v == "" {
128-
force = true
129-
} else {
130-
b, err := strconv.ParseBool(v)
131-
if err != nil {
132-
return nil, errors.Wrapf(err, "non-bool value %s specified for %s", v, attrForceCompression)
133-
}
134-
force = b
135-
}
136-
compressionConfig = compressionConfig.SetForce(force)
137-
}
138-
if v, ok := attrs[attrCompressionLevel]; ok {
139-
ii, err := strconv.ParseInt(v, 10, 64)
140-
if err != nil {
141-
return nil, errors.Wrapf(err, "non-integer value %s specified for %s", v, attrCompressionLevel)
142-
}
143-
compressionConfig = compressionConfig.SetLevel(int(ii))
144-
}
145-
return &compressionConfig, nil
146-
}

cache/remotecache/registry/registry.go

Lines changed: 13 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,22 @@ func canonicalizeRef(rawRef string) (reference.Named, error) {
3535
}
3636

3737
const (
38-
attrRef = "ref"
39-
attrOCIMediatypes = "oci-mediatypes"
40-
attrLayerCompression = "compression"
41-
attrForceCompression = "force-compression"
42-
attrCompressionLevel = "compression-level"
43-
attrInsecure = "registry.insecure"
38+
attrRef = "ref"
39+
attrOCIMediatypes = "oci-mediatypes"
40+
attrInsecure = "registry.insecure"
4441
)
4542

43+
type exporter struct {
44+
remotecache.Exporter
45+
}
46+
47+
func (*exporter) Name() string {
48+
return "exporting cache to registry"
49+
}
50+
4651
func ResolveCacheExporterFunc(sm *session.Manager, hosts docker.RegistryHosts) remotecache.ResolveCacheExporterFunc {
4752
return func(ctx context.Context, g session.Group, attrs map[string]string) (remotecache.Exporter, error) {
48-
compressionConfig, err := attrsToCompression(attrs)
53+
compressionConfig, err := compression.ParseAttributes(attrs)
4954
if err != nil {
5055
return nil, err
5156
}
@@ -77,7 +82,7 @@ func ResolveCacheExporterFunc(sm *session.Manager, hosts docker.RegistryHosts) r
7782
if err != nil {
7883
return nil, err
7984
}
80-
return remotecache.NewExporter(contentutil.FromPusher(pusher), refString, ociMediatypes, *compressionConfig), nil
85+
return &exporter{remotecache.NewExporter(contentutil.FromPusher(pusher), refString, ociMediatypes, compressionConfig)}, nil
8186
}
8287
}
8388

@@ -155,41 +160,6 @@ func (dsl *withDistributionSourceLabel) SnapshotLabels(descs []ocispecs.Descript
155160
return labels
156161
}
157162

158-
func attrsToCompression(attrs map[string]string) (*compression.Config, error) {
159-
var compressionType compression.Type
160-
if v, ok := attrs[attrLayerCompression]; ok {
161-
c, err := compression.Parse(v)
162-
if err != nil {
163-
return nil, err
164-
}
165-
compressionType = c
166-
} else {
167-
compressionType = compression.Default
168-
}
169-
compressionConfig := compression.New(compressionType)
170-
if v, ok := attrs[attrForceCompression]; ok {
171-
var force bool
172-
if v == "" {
173-
force = true
174-
} else {
175-
b, err := strconv.ParseBool(v)
176-
if err != nil {
177-
return nil, errors.Wrapf(err, "non-bool value %s specified for %s", v, attrForceCompression)
178-
}
179-
force = b
180-
}
181-
compressionConfig = compressionConfig.SetForce(force)
182-
}
183-
if v, ok := attrs[attrCompressionLevel]; ok {
184-
ii, err := strconv.ParseInt(v, 10, 64)
185-
if err != nil {
186-
return nil, errors.Wrapf(err, "non-integer value %s specified for %s", v, attrCompressionLevel)
187-
}
188-
compressionConfig = compressionConfig.SetLevel(int(ii))
189-
}
190-
return &compressionConfig, nil
191-
}
192-
193163
func registryConfig(hosts docker.RegistryHosts, ref reference.Named, scope string, insecure bool) (string, docker.RegistryHosts) {
194164
if insecure {
195165
insecureTrue := true

cache/remotecache/s3/s3.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ type exporter struct {
162162
}
163163

164164
func (*exporter) Name() string {
165-
return "exporting cache to s3"
165+
return "exporting cache to Amazon S3"
166166
}
167167

168168
func (e *exporter) Config() remotecache.Config {

exporter/containerimage/opts.go

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@ import (
1313

1414
const (
1515
keyImageName = "name"
16-
keyLayerCompression = "compression"
17-
keyCompressionLevel = "compression-level"
18-
keyForceCompression = "force-compression"
1916
keyOCITypes = "oci-mediatypes"
2017
keyBuildInfo = "buildinfo"
2118
keyBuildInfoAttrs = "buildinfo-attrs"
@@ -53,23 +50,15 @@ func (c *ImageCommitOpts) Load(opt map[string]string) (map[string]string, error)
5350
return nil, err
5451
}
5552

53+
if c.RefCfg.Compression, err = compression.ParseAttributes(opt); err != nil {
54+
return nil, err
55+
}
56+
5657
for k, v := range opt {
5758
var err error
5859
switch k {
5960
case keyImageName:
6061
c.ImageName = v
61-
case keyLayerCompression:
62-
c.RefCfg.Compression.Type, err = compression.Parse(v)
63-
case keyCompressionLevel:
64-
ii, err2 := strconv.ParseInt(v, 10, 64)
65-
if err != nil {
66-
err = errors.Wrapf(err2, "non-int value %s specified for %s", v, k)
67-
break
68-
}
69-
v := int(ii)
70-
c.RefCfg.Compression.Level = &v
71-
case keyForceCompression:
72-
err = parseBoolWithDefault(&c.RefCfg.Compression.Force, k, v, true)
7362
case keyOCITypes:
7463
err = parseBoolWithDefault(&c.OCITypes, k, v, true)
7564
case keyBuildInfo:

util/compression/attrs.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package compression
2+
3+
import (
4+
"strconv"
5+
6+
"github.com/pkg/errors"
7+
)
8+
9+
const (
10+
attrLayerCompression = "compression"
11+
attrForceCompression = "force-compression"
12+
attrCompressionLevel = "compression-level"
13+
)
14+
15+
func ParseAttributes(attrs map[string]string) (Config, error) {
16+
var compressionType Type
17+
if v, ok := attrs[attrLayerCompression]; ok {
18+
c, err := Parse(v)
19+
if err != nil {
20+
return Config{}, err
21+
}
22+
compressionType = c
23+
} else {
24+
compressionType = Default
25+
}
26+
compressionConfig := New(compressionType)
27+
if v, ok := attrs[attrForceCompression]; ok {
28+
var force bool
29+
if v == "" {
30+
force = true
31+
} else {
32+
b, err := strconv.ParseBool(v)
33+
if err != nil {
34+
return Config{}, errors.Wrapf(err, "non-bool value %s specified for %s", v, attrForceCompression)
35+
}
36+
force = b
37+
}
38+
compressionConfig = compressionConfig.SetForce(force)
39+
}
40+
if v, ok := attrs[attrCompressionLevel]; ok {
41+
ii, err := strconv.ParseInt(v, 10, 64)
42+
if err != nil {
43+
return Config{}, errors.Wrapf(err, "non-integer value %s specified for %s", v, attrCompressionLevel)
44+
}
45+
compressionConfig = compressionConfig.SetLevel(int(ii))
46+
}
47+
return compressionConfig, nil
48+
}

0 commit comments

Comments
 (0)