From aca7e8d775a3674b41d989ac5be263236273be7b Mon Sep 17 00:00:00 2001 From: Terry Howe Date: Fri, 20 Sep 2024 11:55:34 -0600 Subject: [PATCH] fix: issue with helm template and oci chart Signed-off-by: Terry Howe --- pkg/registry/client.go | 8 ++++---- pkg/registry/reference.go | 7 +++++++ pkg/registry/reference_test.go | 12 ++++++++++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/pkg/registry/client.go b/pkg/registry/client.go index 32d2773a3..4291fe568 100644 --- a/pkg/registry/client.go +++ b/pkg/registry/client.go @@ -357,7 +357,7 @@ func (c *Client) Pull(ref string, options ...PullOption) (*PullResult, error) { } registryStore := content.Registry{Resolver: remotesResolver} - manifest, err := oras.Copy(ctx(c.out, c.debug), registryStore, parsedRef.OrasReference.String(), memoryStore, "", + manifest, err := oras.Copy(ctx(c.out, c.debug), registryStore, parsedRef.String(), memoryStore, "", oras.WithPullEmptyNameAllowed(), oras.WithAllowedMediaTypes(allowedMediaTypes), oras.WithLayerDescriptors(func(l []ocispec.Descriptor) { @@ -419,7 +419,7 @@ func (c *Client) Pull(ref string, options ...PullOption) (*PullResult, error) { }, Chart: &DescriptorPullSummaryWithMeta{}, Prov: &DescriptorPullSummary{}, - Ref: parsedRef.OrasReference.String(), + Ref: parsedRef.String(), } var getManifestErr error if _, manifestData, ok := memoryStore.Get(manifest); !ok { @@ -590,7 +590,7 @@ func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResu return nil, err } - if err := memoryStore.StoreManifest(parsedRef.OrasReference.String(), manifest, manifestData); err != nil { + if err := memoryStore.StoreManifest(parsedRef.String(), manifest, manifestData); err != nil { return nil, err } @@ -620,7 +620,7 @@ func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResu }, Chart: chartSummary, Prov: &descriptorPushSummary{}, // prevent nil references - Ref: parsedRef.OrasReference.String(), + Ref: parsedRef.String(), } if operation.provData != nil { result.Prov = &descriptorPushSummary{ diff --git a/pkg/registry/reference.go b/pkg/registry/reference.go index 09b99588b..2ba0266a9 100644 --- a/pkg/registry/reference.go +++ b/pkg/registry/reference.go @@ -69,3 +69,10 @@ func NewReference(raw string) (result Reference, err error) { result.Tag = result.OrasReference.Reference return result, nil } + +func (r *Reference) String() string { + if r.Tag == "" { + return r.OrasReference.String() + "@" + r.Digest + } + return r.OrasReference.String() +} diff --git a/pkg/registry/reference_test.go b/pkg/registry/reference_test.go index 986c10edd..d62a62eb4 100644 --- a/pkg/registry/reference_test.go +++ b/pkg/registry/reference_test.go @@ -40,6 +40,18 @@ func verify(t *testing.T, actual Reference, registry, repository, tag, digest st if digest != actual.Digest { t.Errorf("Digest expected %v actual %v", digest, actual.Digest) } + expectedString := registry + if repository != "" { + expectedString = expectedString + "/" + repository + } + if tag != "" { + expectedString = expectedString + ":" + tag + } else { + expectedString = expectedString + "@" + digest + } + if actual.String() != expectedString { + t.Errorf("String expected %s actual %s", expectedString, actual.String()) + } } func TestNewReference(t *testing.T) {