From 15429e161c3185c68fff410f56fc3d37bff928dc Mon Sep 17 00:00:00 2001 From: Ram Dayan Date: Tue, 21 May 2019 17:33:29 +0300 Subject: [PATCH] Added support for mount blob API https://docs.docker.com/registry/spec/api/#mount-blob --- registry/blob.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/registry/blob.go b/registry/blob.go index 70008935..d2d20854 100644 --- a/registry/blob.go +++ b/registry/blob.go @@ -42,6 +42,24 @@ func (registry *Registry) UploadBlob(repository string, digest digest.Digest, co return err } +func (registry *Registry) MountBlob(repository string, digest digest.Digest, fromRepository string) error { + url := registry.url("/v2/%s/blobs/uploads/?mount=%s&from=%s", repository, digest, fromRepository) + registry.Logf("registry.blob.mount url=%s repository=%s mount=%s from=%s", url, repository, digest, fromRepository) + + req, err := http.NewRequest("POST", url, nil) + if err != nil { + return err + } + resp, err := registry.Client.Do(req) + if resp != nil { + defer resp.Body.Close() + } + if err != nil { + return err + } + return nil +} + func (registry *Registry) HasBlob(repository string, digest digest.Digest) (bool, error) { checkUrl := registry.url("/v2/%s/blobs/%s", repository, digest) registry.Logf("registry.blob.check url=%s repository=%s digest=%s", checkUrl, repository, digest)