AddResource references the resource by the provided lease.
(ctx context.Context, lease leases.Lease, r leases.Resource)
| 184 | |
| 185 | // AddResource references the resource by the provided lease. |
| 186 | func (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. |
| 215 | func (lm *leaseManager) DeleteResource(ctx context.Context, lease leases.Lease, r leases.Resource) error { |
nothing calls this directly
no test coverage detected