Skip to content

Commit 9c8a2ee

Browse files
committed
Polishing some code after rebasing to the latest code from pack manifest command PR
Signed-off-by: Juan Bustamante <jbustamante@vmware.com>
1 parent d501165 commit 9c8a2ee

6 files changed

Lines changed: 30 additions & 33 deletions

File tree

pkg/buildpack/downloader.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,7 @@ type DownloadOptions struct {
7777
// The kind of module to download (valid values: "buildpack", "extension"). Defaults to "buildpack".
7878
ModuleKind string
7979

80-
Daemon bool
81-
Multiarch bool
80+
Daemon bool
8281

8382
PullPolicy image.PullPolicy
8483

@@ -114,7 +113,6 @@ func (c *buildpackDownloader) Download(ctx context.Context, moduleURI string, op
114113
PullPolicy: opts.PullPolicy,
115114
Platform: opts.Platform,
116115
Target: opts.Target,
117-
MultiArch: opts.Multiarch,
118116
})
119117
if err != nil {
120118
return nil, nil, errors.Wrapf(err, "extracting from registry %s", style.Symbol(moduleURI))
@@ -131,7 +129,6 @@ func (c *buildpackDownloader) Download(ctx context.Context, moduleURI string, op
131129
PullPolicy: opts.PullPolicy,
132130
Platform: opts.Platform,
133131
Target: opts.Target,
134-
MultiArch: opts.Multiarch,
135132
})
136133
if err != nil {
137134
return nil, nil, errors.Wrapf(err, "extracting from registry %s", style.Symbol(moduleURI))

pkg/client/create_builder.go

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99

1010
"github.com/Masterminds/semver"
1111
"github.com/buildpacks/imgutil"
12+
"github.com/google/go-containerregistry/pkg/v1/types"
1213
"github.com/pkg/errors"
1314
"golang.org/x/text/cases"
1415
"golang.org/x/text/language"
@@ -84,16 +85,16 @@ func (c *Client) CreateBuilder(ctx context.Context, opts CreateBuilderOptions) e
8485

8586
var digests []string
8687
for _, target := range targets {
87-
bldr, err := c.createBaseBuilder(ctx, opts, target, multiArch)
88+
bldr, err := c.createBaseBuilder(ctx, opts, target)
8889
if err != nil {
8990
return errors.Wrap(err, "failed to create builder")
9091
}
9192

92-
if err := c.addBuildpacksToBuilder(ctx, opts, bldr, multiArch); err != nil {
93+
if err := c.addBuildpacksToBuilder(ctx, opts, bldr); err != nil {
9394
return errors.Wrap(err, "failed to add buildpacks to builder")
9495
}
9596

96-
if err := c.addExtensionsToBuilder(ctx, opts, bldr, false); err != nil {
97+
if err := c.addExtensionsToBuilder(ctx, opts, bldr); err != nil {
9798
return errors.Wrap(err, "failed to add extensions to builder")
9899
}
99100

@@ -123,9 +124,11 @@ func (c *Client) CreateBuilder(ctx context.Context, opts CreateBuilderOptions) e
123124

124125
if multiArch && len(digests) > 1 {
125126
return c.CreateManifest(ctx, CreateManifestOptions{
126-
ManifestName: opts.BuilderName,
127-
Manifests: digests,
128-
Publish: true,
127+
IndexRepoName: opts.BuilderName,
128+
RepoNames: digests,
129+
Publish: true,
130+
// TODO: If we do not specify the media type we get an error that can't be empty.
131+
Format: types.OCIImageIndex,
129132
})
130133
}
131134

@@ -193,8 +196,8 @@ func (c *Client) validateRunImageConfig(ctx context.Context, opts CreateBuilderO
193196
return nil
194197
}
195198

196-
func (c *Client) createBaseBuilder(ctx context.Context, opts CreateBuilderOptions, target dist.Target, multiarch bool) (*builder.Builder, error) {
197-
baseImage, err := c.imageFetcher.Fetch(ctx, opts.Config.Build.Image, image.FetchOptions{Daemon: !opts.Publish, PullPolicy: opts.PullPolicy, Platform: fmt.Sprintf("%s/%s", target.OS, target.Arch), Target: &target, MultiArch: multiarch})
199+
func (c *Client) createBaseBuilder(ctx context.Context, opts CreateBuilderOptions, target dist.Target) (*builder.Builder, error) {
200+
baseImage, err := c.imageFetcher.Fetch(ctx, opts.Config.Build.Image, image.FetchOptions{Daemon: !opts.Publish, PullPolicy: opts.PullPolicy, Platform: fmt.Sprintf("%s/%s", target.OS, target.Arch), Target: &target})
198201
if err != nil {
199202
return nil, errors.Wrap(err, "fetch build image")
200203
}
@@ -289,25 +292,25 @@ func (c *Client) fetchLifecycle(ctx context.Context, config pubbldr.LifecycleCon
289292
return lifecycle, nil
290293
}
291294

292-
func (c *Client) addBuildpacksToBuilder(ctx context.Context, opts CreateBuilderOptions, bldr *builder.Builder, multiarch bool) error {
295+
func (c *Client) addBuildpacksToBuilder(ctx context.Context, opts CreateBuilderOptions, bldr *builder.Builder) error {
293296
for _, b := range opts.Config.Buildpacks {
294-
if err := c.addConfig(ctx, buildpack.KindBuildpack, b, opts, bldr, multiarch); err != nil {
297+
if err := c.addConfig(ctx, buildpack.KindBuildpack, b, opts, bldr); err != nil {
295298
return err
296299
}
297300
}
298301
return nil
299302
}
300303

301-
func (c *Client) addExtensionsToBuilder(ctx context.Context, opts CreateBuilderOptions, bldr *builder.Builder, multiarch bool) error {
304+
func (c *Client) addExtensionsToBuilder(ctx context.Context, opts CreateBuilderOptions, bldr *builder.Builder) error {
302305
for _, e := range opts.Config.Extensions {
303-
if err := c.addConfig(ctx, buildpack.KindExtension, e, opts, bldr, multiarch); err != nil {
306+
if err := c.addConfig(ctx, buildpack.KindExtension, e, opts, bldr); err != nil {
304307
return err
305308
}
306309
}
307310
return nil
308311
}
309312

310-
func (c *Client) addConfig(ctx context.Context, kind string, config pubbldr.ModuleConfig, opts CreateBuilderOptions, bldr *builder.Builder, multiarch bool) error {
313+
func (c *Client) addConfig(ctx context.Context, kind string, config pubbldr.ModuleConfig, opts CreateBuilderOptions, bldr *builder.Builder) error {
311314
c.logger.Debugf("Looking up %s %s", kind, style.Symbol(config.DisplayString()))
312315

313316
builderOS, err := bldr.Image().OS()
@@ -332,7 +335,6 @@ func (c *Client) addConfig(ctx context.Context, kind string, config pubbldr.Modu
332335
RegistryName: opts.Registry,
333336
RelativeBaseDir: opts.RelativeBaseDir,
334337
Target: &dist.Target{OS: builderOS, Arch: builderArch},
335-
Multiarch: multiarch,
336338
})
337339
if err != nil {
338340
return errors.Wrapf(err, "downloading %s", kind)

pkg/client/create_builder_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ func testCreateBuilder(t *testing.T, when spec.G, it spec.S) {
227227
})
228228

229229
it("should fail when the stack ID from the builder config does not match the stack ID from the build image", func() {
230-
mockImageFetcher.EXPECT().Fetch(gomock.Any(), "some/build-image", image.FetchOptions{Daemon: true, PullPolicy: image.PullAlways, Platform: platform, Target: &target, MultiArch: false}).Return(fakeBuildImage, nil)
230+
mockImageFetcher.EXPECT().Fetch(gomock.Any(), "some/build-image", image.FetchOptions{Daemon: true, PullPolicy: image.PullAlways, Platform: platform, Target: &target}).Return(fakeBuildImage, nil)
231231
h.AssertNil(t, fakeBuildImage.SetLabel("io.buildpacks.stack.id", "other.stack.id"))
232232
prepareFetcherWithRunImages()
233233

@@ -371,7 +371,7 @@ func testCreateBuilder(t *testing.T, when spec.G, it spec.S) {
371371
})
372372

373373
it("should warn when the run image cannot be found", func() {
374-
mockImageFetcher.EXPECT().Fetch(gomock.Any(), "some/build-image", image.FetchOptions{Daemon: true, PullPolicy: image.PullAlways, Platform: platform, Target: &target, MultiArch: false}).Return(fakeBuildImage, nil)
374+
mockImageFetcher.EXPECT().Fetch(gomock.Any(), "some/build-image", image.FetchOptions{Daemon: true, PullPolicy: image.PullAlways, Platform: platform, Target: &target}).Return(fakeBuildImage, nil)
375375

376376
mockImageFetcher.EXPECT().Fetch(gomock.Any(), "some/run-image", image.FetchOptions{Daemon: false, PullPolicy: image.PullAlways}).Return(nil, errors.Wrap(image.ErrNotFound, "yikes"))
377377
mockImageFetcher.EXPECT().Fetch(gomock.Any(), "some/run-image", image.FetchOptions{Daemon: true, PullPolicy: image.PullAlways}).Return(nil, errors.Wrap(image.ErrNotFound, "yikes"))

pkg/client/package_buildpack.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"os"
77
"path/filepath"
88

9+
"github.com/google/go-containerregistry/pkg/v1/types"
910
"github.com/pkg/errors"
1011

1112
pubbldpkg "github.com/buildpacks/pack/buildpackage"
@@ -166,7 +167,6 @@ func (c *Client) PackageBuildpack(ctx context.Context, opts PackageBuildpackOpti
166167
Daemon: !opts.Publish,
167168
PullPolicy: opts.PullPolicy,
168169
Target: &target,
169-
Multiarch: multiArch,
170170
})
171171
if err != nil {
172172
return errors.Wrapf(err, "packaging dependencies (uri=%s,image=%s)", style.Symbol(dep.URI), style.Symbol(dep.ImageName))
@@ -214,6 +214,8 @@ func (c *Client) PackageBuildpack(ctx context.Context, opts PackageBuildpackOpti
214214
IndexRepoName: opts.Name,
215215
RepoNames: digests,
216216
Publish: true,
217+
// TODO: If we do not specify the media type we get an error that can't be empty.
218+
Format: types.OCIImageIndex,
217219
})
218220
}
219221

pkg/client/package_buildpack_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -270,11 +270,11 @@ func testPackageBuildpack(t *testing.T, when spec.G, it spec.S) {
270270
})
271271

272272
shouldFetchNestedPackage := func(demon bool, pull image.PullPolicy) {
273-
mockImageFetcher.EXPECT().Fetch(gomock.Any(), nestedPackage.Name(), image.FetchOptions{Daemon: demon, PullPolicy: pull, Platform: "linux", Target: &dist.Target{OS: "linux"}, MultiArch: false}).Return(nestedPackage, nil)
273+
mockImageFetcher.EXPECT().Fetch(gomock.Any(), nestedPackage.Name(), image.FetchOptions{Daemon: demon, PullPolicy: pull, Platform: "linux", Target: &dist.Target{OS: "linux"}}).Return(nestedPackage, nil)
274274
}
275275

276276
shouldNotFindNestedPackageWhenCallingImageFetcherWith := func(demon bool, pull image.PullPolicy) {
277-
mockImageFetcher.EXPECT().Fetch(gomock.Any(), nestedPackage.Name(), image.FetchOptions{Daemon: demon, PullPolicy: pull, Platform: "linux", Target: &dist.Target{OS: "linux"}, MultiArch: false}).Return(nil, image.ErrNotFound)
277+
mockImageFetcher.EXPECT().Fetch(gomock.Any(), nestedPackage.Name(), image.FetchOptions{Daemon: demon, PullPolicy: pull, Platform: "linux", Target: &dist.Target{OS: "linux"}}).Return(nil, image.ErrNotFound)
278278
}
279279

280280
shouldCreateLocalPackage := func() imgutil.Image {
@@ -395,7 +395,7 @@ func testPackageBuildpack(t *testing.T, when spec.G, it spec.S) {
395395
when("nested package is not a valid package", func() {
396396
it("should error", func() {
397397
notPackageImage := fakes.NewImage("not/package", "", nil)
398-
mockImageFetcher.EXPECT().Fetch(gomock.Any(), notPackageImage.Name(), image.FetchOptions{Daemon: true, PullPolicy: image.PullAlways, Platform: "linux", Target: &dist.Target{OS: "linux"}, MultiArch: false}).Return(notPackageImage, nil)
398+
mockImageFetcher.EXPECT().Fetch(gomock.Any(), notPackageImage.Name(), image.FetchOptions{Daemon: true, PullPolicy: image.PullAlways, Platform: "linux", Target: &dist.Target{OS: "linux"}}).Return(notPackageImage, nil)
399399

400400
mockDockerClient.EXPECT().Info(context.TODO()).Return(system.Info{OSType: "linux"}, nil).AnyTimes()
401401

@@ -606,7 +606,7 @@ func testPackageBuildpack(t *testing.T, when spec.G, it spec.S) {
606606
PullPolicy: image.PullAlways,
607607
}))
608608

609-
mockImageFetcher.EXPECT().Fetch(gomock.Any(), nestedPackage.Name(), image.FetchOptions{Daemon: true, PullPolicy: image.PullAlways, Platform: "linux", Target: &dist.Target{OS: "linux"}, MultiArch: false}).Return(nestedPackage, nil)
609+
mockImageFetcher.EXPECT().Fetch(gomock.Any(), nestedPackage.Name(), image.FetchOptions{Daemon: true, PullPolicy: image.PullAlways, Platform: "linux", Target: &dist.Target{OS: "linux"}}).Return(nestedPackage, nil)
610610
})
611611

612612
it("should pull and use local nested package image", func() {
@@ -721,7 +721,7 @@ func testPackageBuildpack(t *testing.T, when spec.G, it spec.S) {
721721
PullPolicy: image.PullAlways,
722722
}))
723723

724-
mockImageFetcher.EXPECT().Fetch(gomock.Any(), nestedPackage.Name(), image.FetchOptions{Daemon: true, PullPolicy: image.PullAlways, Platform: "linux", Target: &dist.Target{OS: "linux"}, MultiArch: false}).Return(nestedPackage, nil)
724+
mockImageFetcher.EXPECT().Fetch(gomock.Any(), nestedPackage.Name(), image.FetchOptions{Daemon: true, PullPolicy: image.PullAlways, Platform: "linux", Target: &dist.Target{OS: "linux"}}).Return(nestedPackage, nil)
725725
})
726726

727727
it("should include both of them", func() {
@@ -829,7 +829,7 @@ func testPackageBuildpack(t *testing.T, when spec.G, it spec.S) {
829829
h.AssertNil(t, err)
830830
err = packageImage.SetLabel("io.buildpacks.buildpack.layers", `{"example/foo":{"1.1.0":{"api": "0.2", "layerDiffID":"sha256:xxx", "stacks":[{"id":"some.stack.id"}]}}}`)
831831
h.AssertNil(t, err)
832-
mockImageFetcher.EXPECT().Fetch(gomock.Any(), packageImage.Name(), image.FetchOptions{Daemon: true, PullPolicy: image.PullAlways, Platform: "linux", Target: &dist.Target{OS: "linux"}, MultiArch: false}).Return(packageImage, nil)
832+
mockImageFetcher.EXPECT().Fetch(gomock.Any(), packageImage.Name(), image.FetchOptions{Daemon: true, PullPolicy: image.PullAlways, Platform: "linux", Target: &dist.Target{OS: "linux"}}).Return(packageImage, nil)
833833

834834
packHome := filepath.Join(tmpDir, "packHome")
835835
h.AssertNil(t, os.Setenv("PACK_HOME", packHome))

pkg/image/fetcher.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ type Fetcher struct {
6363

6464
type FetchOptions struct {
6565
Daemon bool
66-
MultiArch bool
6766
Platform string
6867
Target *dist.Target
6968
PullPolicy PullPolicy
@@ -97,7 +96,7 @@ func (f *Fetcher) Fetch(ctx context.Context, name string, options FetchOptions)
9796
}
9897

9998
if !options.Daemon {
100-
return f.fetchRemoteImage(name, options.Target, options.MultiArch)
99+
return f.fetchRemoteImage(name, options.Target)
101100
}
102101

103102
switch options.PullPolicy {
@@ -174,17 +173,14 @@ func (f *Fetcher) fetchDaemonImage(name string) (imgutil.Image, error) {
174173
return image, nil
175174
}
176175

177-
func (f *Fetcher) fetchRemoteImage(name string, target *dist.Target, multiarch bool) (imgutil.Image, error) {
176+
func (f *Fetcher) fetchRemoteImage(name string, target *dist.Target) (imgutil.Image, error) {
178177
var (
179178
image imgutil.Image
180179
err error
181180
)
182181

183182
if target == nil {
184183
image, err = remote.NewImage(name, f.keychain, remote.FromBaseImage(name))
185-
} else if multiarch {
186-
// TODO remote.SaveWithDigest()
187-
image, err = remote.NewImage(name, f.keychain, remote.FromBaseImage(name), remote.WithDefaultPlatform(imgutil.Platform{OS: target.OS, Architecture: target.Arch}))
188184
} else {
189185
image, err = remote.NewImage(name, f.keychain, remote.FromBaseImage(name), remote.WithDefaultPlatform(imgutil.Platform{OS: target.OS, Architecture: target.Arch}))
190186
}

0 commit comments

Comments
 (0)