Skip to content

Commit 53ca81d

Browse files
committed
Migrate Create to Kubernetes client
1 parent 092a6d1 commit 53ca81d

File tree

1 file changed

+8
-14
lines changed
  • staging/src/k8s.io/apiserver/pkg/storage/etcd3

1 file changed

+8
-14
lines changed

staging/src/k8s.io/apiserver/pkg/storage/etcd3/store.go

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -217,9 +217,12 @@ func (s *store) Create(ctx context.Context, key string, obj, out runtime.Object,
217217
}
218218
span.AddEvent("Encode succeeded", attribute.Int("len", len(data)))
219219

220-
opts, err := s.ttlOpts(ctx, int64(ttl))
221-
if err != nil {
222-
return err
220+
var lease clientv3.LeaseID
221+
if ttl != 0 {
222+
lease, err = s.leaseManager.GetLease(ctx, int64(ttl))
223+
if err != nil {
224+
return err
225+
}
223226
}
224227

225228
newData, err := s.transformer.TransformToStorage(ctx, data, authenticatedDataString(preparedKey))
@@ -230,11 +233,7 @@ func (s *store) Create(ctx context.Context, key string, obj, out runtime.Object,
230233
span.AddEvent("TransformToStorage succeeded")
231234

232235
startTime := time.Now()
233-
txnResp, err := s.client.KV.Txn(ctx).If(
234-
notFound(preparedKey),
235-
).Then(
236-
clientv3.OpPut(preparedKey, string(newData), opts...),
237-
).Commit()
236+
txnResp, err := s.client.Kubernetes.OptimisticPut(ctx, preparedKey, newData, 0, kubernetes.PutOptions{LeaseID: lease})
238237
metrics.RecordEtcdRequest("create", s.groupResourceString, err, startTime)
239238
if err != nil {
240239
span.AddEvent("Txn call failed", attribute.String("err", err.Error()))
@@ -247,8 +246,7 @@ func (s *store) Create(ctx context.Context, key string, obj, out runtime.Object,
247246
}
248247

249248
if out != nil {
250-
putResp := txnResp.Responses[0].GetResponsePut()
251-
err = s.decoder.Decode(data, out, putResp.Header.Revision)
249+
err = s.decoder.Decode(data, out, txnResp.Revision)
252250
if err != nil {
253251
span.AddEvent("decode failed", attribute.Int("len", len(data)), attribute.String("err", err.Error()))
254252
recordDecodeError(s.groupResourceString, preparedKey)
@@ -1052,10 +1050,6 @@ func recordDecodeError(resource string, key string) {
10521050
klog.V(4).Infof("Decoding %s \"%s\" failed", resource, key)
10531051
}
10541052

1055-
func notFound(key string) clientv3.Cmp {
1056-
return clientv3.Compare(clientv3.ModRevision(key), "=", 0)
1057-
}
1058-
10591053
// getTypeName returns type name of an object for reporting purposes.
10601054
func getTypeName(obj interface{}) string {
10611055
return reflect.TypeOf(obj).String()

0 commit comments

Comments
 (0)