From 3792f6a708e4fb22145b40e0cf8370fa0b1a6776 Mon Sep 17 00:00:00 2001 From: Grant Linville Date: Wed, 12 Jul 2023 14:21:28 -0400 Subject: [PATCH] Use credentials correctly when checking to see if an image is remote Signed-off-by: Grant Linville --- pkg/controller/appdefinition/pullappimage.go | 2 +- pkg/images/operations.go | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/pkg/controller/appdefinition/pullappimage.go b/pkg/controller/appdefinition/pullappimage.go index b0df5ca1f..ed34319d2 100644 --- a/pkg/controller/appdefinition/pullappimage.go +++ b/pkg/controller/appdefinition/pullappimage.go @@ -62,7 +62,7 @@ func pullAppImage(transport http.RoundTripper, client pullClient) router.Handler isLocal bool ) // Only attempt to resolve locally if auto-upgrade is not on, or if auto-upgrade is on but we know the image is not remote. - if !autoUpgradeOn || !images.IsImageRemote(target, true, remote.WithTransport(transport)) { + if !autoUpgradeOn || !images.IsImageRemote(req.Ctx, req.Client, appInstance.Namespace, target, true, remote.WithTransport(transport)) { resolved, isLocal, err = client.resolve(req.Ctx, req.Client, appInstance.Namespace, target) if err != nil { cond.Error(err) diff --git a/pkg/images/operations.go b/pkg/images/operations.go index 4fee016dd..0a45036d2 100644 --- a/pkg/images/operations.go +++ b/pkg/images/operations.go @@ -119,7 +119,7 @@ func ResolveTag(tag imagename.Reference, image string) string { // IsImageRemote checks the remote registry to see if the given image name exists. // If noDefaultRegistry is true, and the image does not have a specified registry, this function will return false // without attempting to check any remote registries. -func IsImageRemote(image string, noDefaultRegistry bool, opts ...remote.Option) bool { +func IsImageRemote(ctx context.Context, c client.Reader, namespace, image string, noDefaultRegistry bool, opts ...remote.Option) bool { var ( ref imagename.Reference err error @@ -134,6 +134,11 @@ func IsImageRemote(image string, noDefaultRegistry bool, opts ...remote.Option) return false } + opts, err = GetAuthenticationRemoteOptions(ctx, c, namespace, opts...) + if err != nil { + return false + } + _, err = remote.Index(ref, opts...) return err == nil