From 09d1e25738426977cf187c9d2b6de4977a8a2145 Mon Sep 17 00:00:00 2001 From: Cezar Craciunoiu Date: Tue, 11 Jul 2023 16:08:10 +0300 Subject: [PATCH 1/3] fix(oci): Split name and version with '@' when digest is used Signed-off-by: Cezar Craciunoiu --- oci/pack.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/oci/pack.go b/oci/pack.go index adf06c6ee..2cf523734 100644 --- a/oci/pack.go +++ b/oci/pack.go @@ -10,6 +10,7 @@ import ( "fmt" "os" "path/filepath" + "strings" "github.com/google/go-containerregistry/pkg/crane" "github.com/google/go-containerregistry/pkg/name" @@ -380,6 +381,9 @@ func (ocipack *ociPackage) Version() string { // imageRef returns the OCI-standard image name in the format `name:tag` func (ocipack *ociPackage) imageRef() string { + if strings.HasPrefix(ocipack.Version(), "sha256:") { + return fmt.Sprintf("%s@%s", ocipack.Name(), ocipack.Version()) + } return fmt.Sprintf("%s:%s", ocipack.Name(), ocipack.Version()) } From 3b85b4727f22bea7fa57b561734ba7121386cab0 Mon Sep 17 00:00:00 2001 From: Cezar Craciunoiu Date: Tue, 11 Jul 2023 16:08:53 +0300 Subject: [PATCH 2/3] fix(oci): Split name on '@' when digest is used Signed-off-by: Cezar Craciunoiu --- oci/handler/directory.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/oci/handler/directory.go b/oci/handler/directory.go index b0c9e4a6b..3ebac54a6 100644 --- a/oci/handler/directory.go +++ b/oci/handler/directory.go @@ -191,10 +191,17 @@ func (handle *DirectoryHandler) ResolveImage(ctx context.Context, fullref string return ocispec.Image{}, err } + var jsonPath string + if strings.ContainsRune(ref.Name(), '@') { + jsonPath = strings.ReplaceAll(ref.Name(), "@", string(filepath.Separator)) + ".json" + } else { + jsonPath = strings.ReplaceAll(ref.Name(), ":", string(filepath.Separator)) + ".json" + } + manifestPath := filepath.Join( handle.path, DirectoryHandlerManifestsDir, - strings.ReplaceAll(ref.Name(), ":", string(filepath.Separator))+".json", + jsonPath, ) // Check whether the manifest exists @@ -277,10 +284,17 @@ func (handle *DirectoryHandler) FetchImage(ctx context.Context, fullref, platfor return err } + var jsonPath string + if strings.ContainsRune(ref.Name(), '@') { + jsonPath = strings.ReplaceAll(ref.Name(), "@", string(filepath.Separator)) + ".json" + } else { + jsonPath = strings.ReplaceAll(ref.Name(), ":", string(filepath.Separator)) + ".json" + } + manifestPath := filepath.Join( handle.path, DirectoryHandlerManifestsDir, - strings.ReplaceAll(ref.Name(), ":", string(filepath.Separator))+".json", + jsonPath, ) // Recursively create the directory From 48c20429d5c509ed5201e3e57d010a1eadb59618 Mon Sep 17 00:00:00 2001 From: Cezar Craciunoiu Date: Tue, 11 Jul 2023 16:11:19 +0300 Subject: [PATCH 3/3] fix(pull): Provide pull platform/architecture options Signed-off-by: Cezar Craciunoiu --- cmd/kraft/pkg/pull/pull.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmd/kraft/pkg/pull/pull.go b/cmd/kraft/pkg/pull/pull.go index 9eade2fe1..05fbf9e47 100644 --- a/cmd/kraft/pkg/pull/pull.go +++ b/cmd/kraft/pkg/pull/pull.go @@ -299,6 +299,8 @@ func (opts *Pull) Run(cmd *cobra.Command, args []string) error { pack.WithPullWorkdir(workdir), pack.WithPullChecksum(!opts.NoChecksum), pack.WithPullCache(opts.ForceCache), + pack.WithPullPlatform(opts.Platform), + pack.WithPullArchitecture(opts.Architecture), ) }, ))