MCPcopy Index your code
hub / github.com/containerd/containerd / Create

Method Create

core/metadata/leases.go:51–102  ·  view source on GitHub ↗

Create creates a new lease using the provided lease

(ctx context.Context, opts ...leases.Opt)

Source from the content-addressed store, hash-verified

49
50// Create creates a new lease using the provided lease
51func (lm *leaseManager) Create(ctx context.Context, opts ...leases.Opt) (leases.Lease, error) {
52 var l leases.Lease
53 for _, opt := range opts {
54 if err := opt(&l); err != nil {
55 return leases.Lease{}, err
56 }
57 }
58 if l.ID == "" {
59 return leases.Lease{}, errors.New("lease id must be provided")
60 }
61
62 namespace, err := namespaces.NamespaceRequired(ctx)
63 if err != nil {
64 return leases.Lease{}, err
65 }
66
67 if err := update(ctx, lm.db, func(tx *bolt.Tx) error {
68 topbkt, err := createBucketIfNotExists(tx, bucketKeyVersion, []byte(namespace), bucketKeyObjectLeases)
69 if err != nil {
70 return err
71 }
72
73 txbkt, err := topbkt.CreateBucket([]byte(l.ID))
74 if err != nil {
75 if err == errbolt.ErrBucketExists {
76 err = errdefs.ErrAlreadyExists
77 }
78 return fmt.Errorf("lease %q: %w", l.ID, err)
79 }
80
81 t := time.Now().UTC()
82 createdAt, err := t.MarshalBinary()
83 if err != nil {
84 return err
85 }
86 if err := txbkt.Put(bucketKeyCreatedAt, createdAt); err != nil {
87 return err
88 }
89
90 if l.Labels != nil {
91 if err := boltutil.WriteLabels(txbkt, l.Labels); err != nil {
92 return err
93 }
94 }
95 l.CreatedAt = t
96
97 return nil
98 }); err != nil {
99 return leases.Lease{}, err
100 }
101 return l, nil
102}
103
104// Delete deletes the lease with the provided lease ID
105func (lm *leaseManager) Delete(ctx context.Context, lease leases.Lease, _ ...leases.DeleteOpt) error {

Callers

nothing calls this directly

Calls 5

NamespaceRequiredFunction · 0.92
WriteLabelsFunction · 0.92
updateFunction · 0.85
PutMethod · 0.80
createBucketIfNotExistsFunction · 0.70

Tested by

no test coverage detected