inline data fetching for pull result

Signed-off-by: Josh Dolitsky <josh@dolit.ski>
pull/9782/head
Josh Dolitsky 4 years ago
parent dd7bc40bc4
commit 4073e4d118
No known key found for this signature in database
GPG Key ID: B2B93673243A65FB

@ -100,61 +100,50 @@ func (c *Client) Pull(ref string, options ...PullOption) (*PullResult, error) {
ProvLayerMediaType)) ProvLayerMediaType))
} }
} }
_, manifestData, ok := store.Get(manifest)
if !ok {
return nil, errors.Errorf("Unable to retrieve blob with digest %s", manifest.Digest)
}
_, configData, ok := store.Get(*configDescriptor)
if !ok {
return nil, errors.Errorf("Unable to retrieve blob with digest %s", configDescriptor.Digest)
}
var meta *chart.Metadata
if err := json.Unmarshal(configData, &meta); err != nil {
return nil, err
}
var chartData []byte
if operation.withChart {
var ok bool
_, chartData, ok = store.Get(*chartDescriptor)
if !ok {
return nil, errors.Errorf("Unable to retrieve blob with digest %s", chartDescriptor.Digest)
}
}
var provData []byte
if operation.withProv && !provMissing {
var ok bool
_, provData, ok = store.Get(*provDescriptor)
if !ok {
return nil, errors.Errorf("Unable to retrieve blob with digest %s", provDescriptor.Digest)
}
}
result := &PullResult{ result := &PullResult{
Manifest: &descriptorPullSummary{ Manifest: &descriptorPullSummary{
Data: manifestData,
Digest: manifest.Digest.String(), Digest: manifest.Digest.String(),
Size: manifest.Size, Size: manifest.Size,
}, },
Config: &descriptorPullSummary{ Config: &descriptorPullSummary{
Data: configData,
Digest: configDescriptor.Digest.String(), Digest: configDescriptor.Digest.String(),
Size: configDescriptor.Size, Size: configDescriptor.Size,
}, },
Chart: &descriptorPullSummaryWithMeta{ Chart: &descriptorPullSummaryWithMeta{},
Meta: meta, Prov: &descriptorPullSummary{},
},
Prov: &descriptorPullSummary{}, // prevent nil references
Ref: ref, Ref: ref,
} }
if chartData != nil { if _, manifestData, ok := store.Get(manifest); !ok {
return nil, errors.Errorf("Unable to retrieve blob with digest %s", manifest.Digest)
} else {
result.Manifest.Data = manifestData
}
if _, configData, ok := store.Get(*configDescriptor); !ok {
return nil, errors.Errorf("Unable to retrieve blob with digest %s", configDescriptor.Digest)
} else {
result.Config.Data = configData
var meta *chart.Metadata
if err := json.Unmarshal(configData, &meta); err != nil {
return nil, err
}
result.Chart.Meta = meta
}
if operation.withChart {
if _, chartData, ok := store.Get(*chartDescriptor); !ok {
return nil, errors.Errorf("Unable to retrieve blob with digest %s", chartDescriptor.Digest)
} else {
result.Chart.Data = chartData result.Chart.Data = chartData
result.Chart.Digest = chartDescriptor.Digest.String() result.Chart.Digest = chartDescriptor.Digest.String()
result.Chart.Size = chartDescriptor.Size result.Chart.Size = chartDescriptor.Size
} }
if provData != nil { }
result.Prov = &descriptorPullSummary{ if operation.withProv && !provMissing {
Data: provData, if _, provData, ok := store.Get(*provDescriptor); !ok {
Digest: provDescriptor.Digest.String(), return nil, errors.Errorf("Unable to retrieve blob with digest %s", provDescriptor.Digest)
Size: provDescriptor.Size, } else {
result.Prov.Data = provData
result.Prov.Digest = provDescriptor.Digest.String()
result.Prov.Size = provDescriptor.Size
} }
} }
fmt.Fprintf(c.out, "Pulled: %s\n", result.Ref) fmt.Fprintf(c.out, "Pulled: %s\n", result.Ref)

Loading…
Cancel
Save