From 0d679449666e093e963bc22dd8aea8f7999d3bc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9E=D0=BB=D0=B5=D0=B3=20=D0=91=D0=BE=D1=80=D0=BE=D0=B4?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Wed, 11 Mar 2026 21:02:10 +0200 Subject: [PATCH] image: fixed tags, catalog, push operation --- app/config/variant.go | 8 ++++---- app/handler/manifest.go | 3 ++- app/imageoper/putman.go | 6 +++--- app/service/service.go | 1 + cmd/mstorectl/imagecmd/imagetags.go | 7 ++++--- pkg/accntcli/createacc.go | 2 +- pkg/auxutar/utar.go | 6 +++--- pkg/gcrcli/imagepush.go | 2 +- pkg/repocli/gettags.go | 8 ++++++-- 9 files changed, 25 insertions(+), 18 deletions(-) diff --git a/app/config/variant.go b/app/config/variant.go index bc04665..6cf7189 100644 --- a/app/config/variant.go +++ b/app/config/variant.go @@ -1,10 +1,10 @@ package config const ( - confdir = "/usr/local/etc/mstore" - rundir = "/var/run/mstore" - logdir = "/var/log/mstore" - datadir = "/var/data/mstore" + confdir = "/home/ziggi/Projects/mstore/etc/mstore" + rundir = "/home/ziggi/Projects/mstore/tmp/run" + logdir = "/home/ziggi/Projects/mstore/tmp/log" + datadir = "/home/ziggi/Projects/mstore/tmp/data" version = "0.2.0" srvname = "mstored" ) diff --git a/app/handler/manifest.go b/app/handler/manifest.go index 6b34f0d..1d0fe16 100644 --- a/app/handler/manifest.go +++ b/app/handler/manifest.go @@ -237,5 +237,6 @@ func (hand *Handler) ListManifests(rctx *router.Context) { if err != nil { hand.logg.Errorf("ListManifests error: %v", err) } - rctx.SendJSON(code, res) + + rctx.SendJSON(code, res.Repositories) } diff --git a/app/imageoper/putman.go b/app/imageoper/putman.go index 56afbbf..2b3e792 100644 --- a/app/imageoper/putman.go +++ b/app/imageoper/putman.go @@ -95,6 +95,9 @@ func (oper *Operator) PutManifest(ctx context.Context, params *PutManifestParams return res, code, err } inMan := &ocispec.Manifest{} + inMan.Subject = &ocispec.Descriptor{} + inMan.Subject.Platform = &ocispec.Platform{} + err = json.Unmarshal(inManData, inMan) if err != nil { err = fmt.Errorf("Manifest parsing error: %v", err) @@ -107,9 +110,6 @@ func (oper *Operator) PutManifest(ctx context.Context, params *PutManifestParams name := params.Name reference := params.Reference - if inMan.Subject == nil { - } - arch := inMan.Subject.Platform.Architecture os := inMan.Subject.Platform.OS variant := inMan.Subject.Platform.Variant diff --git a/app/service/service.go b/app/service/service.go index 8d8dec8..b72a171 100644 --- a/app/service/service.go +++ b/app/service/service.go @@ -98,6 +98,7 @@ func (svc *Service) Build() error { svc.rout.Post(`/v2/{name}/blobs/uploads/`, svc.hand.PostUpload) svc.rout.Patch(`/v2/{name}/blobs/uploads/{reference}`, svc.hand.PatchUpload) svc.rout.Put(`/v2/{name}/blobs/uploads/{reference}`, svc.hand.PutUpload) + svc.rout.Put(`/v2/{name}/uploads/{reference}`, svc.hand.PutUpload) svc.rout.Get(`/v2/{name}/blobs/{digest}`, svc.hand.GetBlob) svc.rout.Delete(`/v2/{name}/blobs/{digest}`, svc.hand.DeleteBlob) diff --git a/cmd/mstorectl/imagecmd/imagetags.go b/cmd/mstorectl/imagecmd/imagetags.go index 293ce4f..d19e4f5 100644 --- a/cmd/mstorectl/imagecmd/imagetags.go +++ b/cmd/mstorectl/imagecmd/imagetags.go @@ -15,6 +15,7 @@ import ( "github.com/spf13/cobra" + "mstore/pkg/descr" "mstore/pkg/repocli" ) @@ -24,7 +25,7 @@ type ImageTagsParams struct { } type ImageTagsResult struct { - ImageTags []string `json:"imageTags"` + Tags *descr.Tags `json:"imageTags"` } func (util *ImageUtil) ImageTags(cmd *cobra.Command, args []string) { @@ -36,7 +37,7 @@ func (util *ImageUtil) ImageTags(cmd *cobra.Command, args []string) { func (util *ImageUtil) imageTags(common *CommonImageParams, params *ImageTagsParams) (*ImageTagsResult, error) { var err error res := &ImageTagsResult{ - ImageTags: make([]string, 0), + Tags: &descr.Tags{}, } timeout := time.Duration(common.Timeout) * time.Second @@ -52,6 +53,6 @@ func (util *ImageUtil) imageTags(common *CommonImageParams, params *ImageTagsPar if err != nil { return res, err } - res.ImageTags = opres + res.Tags = opres return res, err } diff --git a/pkg/accntcli/createacc.go b/pkg/accntcli/createacc.go index df4b529..d4b9620 100644 --- a/pkg/accntcli/createacc.go +++ b/pkg/accntcli/createacc.go @@ -20,7 +20,7 @@ func (cli *Client) CreateAccount(ctx context.Context, host, user, pass string) ( if err != nil { return res, err } - respdata, err := cli.doHTTPCall(ctx, host, "accont", "create", reqdata) + respdata, err := cli.doHTTPCall(ctx, host, "account", "create", reqdata) if err != nil { return res, err } diff --git a/pkg/auxutar/utar.go b/pkg/auxutar/utar.go index 689adb9..eaba1d5 100644 --- a/pkg/auxutar/utar.go +++ b/pkg/auxutar/utar.go @@ -105,11 +105,11 @@ func Unarchive(filename, dstdir string) error { target = filepath.Clean(target) fileInfo := header.FileInfo() - switch header.Typeflag { case tar.TypeDir: _, err := os.Stat(target) - if err != nil && err == os.ErrNotExist { + if os.IsNotExist(err) { + err = nil err := os.MkdirAll(target, fileInfo.Mode()) if err != nil { return err @@ -122,7 +122,7 @@ func Unarchive(filename, dstdir string) error { wrapfunc := func() error { dir := filepath.Dir(target) _, err := os.Stat(dir) - if err != nil && err == os.ErrNotExist { + if os.IsNotExist(err) { err := os.MkdirAll(dir, 0750) if err != nil { return err diff --git a/pkg/gcrcli/imagepush.go b/pkg/gcrcli/imagepush.go index 0fb9187..b69c44d 100644 --- a/pkg/gcrcli/imagepush.go +++ b/pkg/gcrcli/imagepush.go @@ -73,7 +73,7 @@ func (cli *Client) PushImage(ctx context.Context, filepath, imagepath string) er dstdir := auxtool.MakeTmpFilename(filepath) err = auxutar.Unarchive(filepath, dstdir) if err != nil { - os.RemoveAll(dstdir) + //os.RemoveAll(dstdir) return err } image, err := imageLoader(dstdir) diff --git a/pkg/repocli/gettags.go b/pkg/repocli/gettags.go index b142a82..f7df798 100644 --- a/pkg/repocli/gettags.go +++ b/pkg/repocli/gettags.go @@ -18,11 +18,15 @@ import ( "fmt" "net/http" "strconv" + + "mstore/pkg/descr" ) -func (cli *Client) GetTags(ctx context.Context, rawrepo string) ([]string, error) { +func (cli *Client) GetTags(ctx context.Context, rawrepo string) (*descr.Tags, error) { var err error - list := make([]string, 0) + list := &descr.Tags{ + Tags: make([]string, 0), + } tagdata, err := cli.GetRawTags(ctx, rawrepo) if err != nil { return list, err