MCPcopy
hub / github.com/containerd/containerd / AddResource

Method AddResource

core/metadata/leases.go:186–212  ·  view source on GitHub ↗

AddResource references the resource by the provided lease.

(ctx context.Context, lease leases.Lease, r leases.Resource)

Source from the content-addressed store, hash-verified

184
185// AddResource references the resource by the provided lease.
186func (lm *leaseManager) AddResource(ctx context.Context, lease leases.Lease, r leases.Resource) error {
187 namespace, err := namespaces.NamespaceRequired(ctx)
188 if err != nil {
189 return err
190 }
191
192 return update(ctx, lm.db, func(tx *bolt.Tx) error {
193 topbkt := getBucket(tx, bucketKeyVersion, []byte(namespace), bucketKeyObjectLeases, []byte(lease.ID))
194 if topbkt == nil {
195 return fmt.Errorf("lease %q: %w", lease.ID, errdefs.ErrNotFound)
196 }
197
198 keys, ref, err := parseLeaseResource(r)
199 if err != nil {
200 return err
201 }
202
203 bkt := topbkt
204 for _, key := range keys {
205 bkt, err = bkt.CreateBucketIfNotExists([]byte(key))
206 if err != nil {
207 return err
208 }
209 }
210 return bkt.Put([]byte(ref), nil)
211 })
212}
213
214// DeleteResource dereferences the resource by the provided lease.
215func (lm *leaseManager) DeleteResource(ctx context.Context, lease leases.Lease, r leases.Resource) error {

Callers

nothing calls this directly

Calls 5

NamespaceRequiredFunction · 0.92
updateFunction · 0.85
parseLeaseResourceFunction · 0.85
PutMethod · 0.80
getBucketFunction · 0.70

Tested by

no test coverage detected