check pull chart ref

Signed-off-by: lzj <lzjhost@163.com>
pull/9559/head
lzj 5 years ago
parent 213a7df2dc
commit a32612e06a

@ -147,27 +147,29 @@ func (c *Client) PushChart(ref *Reference) error {
// PullChart downloads a chart from a registry // PullChart downloads a chart from a registry
func (c *Client) PullChart(ref *Reference) (*bytes.Buffer, error) { func (c *Client) PullChart(ref *Reference) (*bytes.Buffer, error) {
buf := bytes.NewBuffer(nil)
if ref == nil {
return nil, errors.New("reference explicitly required")
}
if ref.Tag == "" { if ref.Tag == "" {
return buf, errors.New("tag explicitly required") return nil, errors.New("tag explicitly required")
} }
fmt.Fprintf(c.out, "%s: Pulling from %s\n", ref.Tag, ref.Repo) fmt.Fprintf(c.out, "%s: Pulling from %s\n", ref.Tag, ref.Repo)
store := content.NewMemoryStore() store := content.NewMemoryStore()
fullname := ref.FullName() fullName := ref.FullName()
_ = fullname _, layerDescriptors, err := oras.Pull(ctx(c.out, c.debug), c.resolver, fullName, store,
_, layerDescriptors, err := oras.Pull(ctx(c.out, c.debug), c.resolver, ref.FullName(), store,
oras.WithPullEmptyNameAllowed(), oras.WithPullEmptyNameAllowed(),
oras.WithAllowedMediaTypes(KnownMediaTypes())) oras.WithAllowedMediaTypes(KnownMediaTypes()))
if err != nil { if err != nil {
return buf, err return nil, err
} }
numLayers := len(layerDescriptors) numLayers := len(layerDescriptors)
if numLayers < 1 { if numLayers < 1 {
return buf, errors.New( return nil, errors.New(
fmt.Sprintf("manifest does not contain at least 1 layer (total: %d)", numLayers)) fmt.Sprintf("manifest does not contain at least 1 layer (total: %d)", numLayers))
} }
@ -182,17 +184,17 @@ func (c *Client) PullChart(ref *Reference) (*bytes.Buffer, error) {
} }
if contentLayer == nil { if contentLayer == nil {
return buf, errors.New( return nil, errors.New(
fmt.Sprintf("manifest does not contain a layer with mediatype %s", fmt.Sprintf("manifest does not contain a layer with mediatype %s",
HelmChartContentLayerMediaType)) HelmChartContentLayerMediaType))
} }
_, b, ok := store.Get(*contentLayer) _, b, ok := store.Get(*contentLayer)
if !ok { if !ok {
return buf, errors.Errorf("Unable to retrieve blob with digest %s", contentLayer.Digest) return nil, errors.Errorf("Unable to retrieve blob with digest %s", contentLayer.Digest)
} }
buf = bytes.NewBuffer(b) buf := bytes.NewBuffer(b)
return buf, nil return buf, nil
} }

Loading…
Cancel
Save