mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdserverpb: add 'LeaseTimeToLive' RPC
This commit is contained in:
parent
33b3fdc627
commit
3132e36bf3
@ -59,6 +59,7 @@ for grpc-gateway
|
|||||||
| LeaseGrant | LeaseGrantRequest | LeaseGrantResponse | LeaseGrant creates a lease which expires if the server does not receive a keepAlive within a given time to live period. All keys attached to the lease will be expired and deleted if the lease expires. Each expired key generates a delete event in the event history. |
|
| LeaseGrant | LeaseGrantRequest | LeaseGrantResponse | LeaseGrant creates a lease which expires if the server does not receive a keepAlive within a given time to live period. All keys attached to the lease will be expired and deleted if the lease expires. Each expired key generates a delete event in the event history. |
|
||||||
| LeaseRevoke | LeaseRevokeRequest | LeaseRevokeResponse | LeaseRevoke revokes a lease. All keys attached to the lease will expire and be deleted. |
|
| LeaseRevoke | LeaseRevokeRequest | LeaseRevokeResponse | LeaseRevoke revokes a lease. All keys attached to the lease will expire and be deleted. |
|
||||||
| LeaseKeepAlive | LeaseKeepAliveRequest | LeaseKeepAliveResponse | LeaseKeepAlive keeps the lease alive by streaming keep alive requests from the client to the server and streaming keep alive responses from the server to the client. |
|
| LeaseKeepAlive | LeaseKeepAliveRequest | LeaseKeepAliveResponse | LeaseKeepAlive keeps the lease alive by streaming keep alive requests from the client to the server and streaming keep alive responses from the server to the client. |
|
||||||
|
| LeaseTimeToLive | LeaseTimeToLiveRequest | LeaseTimeToLiveResponse | LeaseTimeToLive retrieves lease information. |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -510,6 +511,27 @@ Empty field.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### message `LeaseTimeToLiveRequest` (etcdserver/etcdserverpb/rpc.proto)
|
||||||
|
|
||||||
|
| Field | Description | Type |
|
||||||
|
| ----- | ----------- | ---- |
|
||||||
|
| ID | ID is the lease ID for the lease. | int64 |
|
||||||
|
| keys | keys is true to query all the keys attached to this lease. | bool |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##### message `LeaseTimeToLiveResponse` (etcdserver/etcdserverpb/rpc.proto)
|
||||||
|
|
||||||
|
| Field | Description | Type |
|
||||||
|
| ----- | ----------- | ---- |
|
||||||
|
| header | | ResponseHeader |
|
||||||
|
| ID | ID is the lease ID from the keep alive request. | int64 |
|
||||||
|
| TTL | TTL is the remaining TTL in seconds for the lease; the lease will expire in under TTL+1 seconds. | int64 |
|
||||||
|
| grantedTTL | GrantedTTL is the initial granted time in seconds upon lease creation/renewal. | int64 |
|
||||||
|
| keys | Keys is the list of keys attached to this lease. | (slice of) bytes |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##### message `Member` (etcdserver/etcdserverpb/rpc.proto)
|
##### message `Member` (etcdserver/etcdserverpb/rpc.proto)
|
||||||
|
|
||||||
| Field | Description | Type |
|
| Field | Description | Type |
|
||||||
|
@ -636,6 +636,33 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/v3alpha/kv/lease/timetolive": {
|
||||||
|
"post": {
|
||||||
|
"summary": "LeaseTimeToLive retrieves lease information.",
|
||||||
|
"operationId": "LeaseTimeToLive",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/etcdserverpbLeaseTimeToLiveResponse"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "body",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/etcdserverpbLeaseTimeToLiveRequest"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"Lease"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
"/v3alpha/kv/put": {
|
"/v3alpha/kv/put": {
|
||||||
"post": {
|
"post": {
|
||||||
"summary": "Put puts the given key into the key-value store.\nA put request increments the revision of the key-value store\nand generates one event in the event history.",
|
"summary": "Put puts the given key into the key-value store.\nA put request increments the revision of the key-value store\nand generates one event in the event history.",
|
||||||
@ -1614,6 +1641,52 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"etcdserverpbLeaseTimeToLiveRequest": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"ID": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "int64",
|
||||||
|
"description": "ID is the lease ID for the lease."
|
||||||
|
},
|
||||||
|
"keys": {
|
||||||
|
"type": "boolean",
|
||||||
|
"format": "boolean",
|
||||||
|
"description": "keys is true to query all the keys attached to this lease."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"etcdserverpbLeaseTimeToLiveResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"ID": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "int64",
|
||||||
|
"description": "ID is the lease ID from the keep alive request."
|
||||||
|
},
|
||||||
|
"TTL": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "int64",
|
||||||
|
"description": "TTL is the remaining TTL in seconds for the lease; the lease will expire in under TTL+1 seconds."
|
||||||
|
},
|
||||||
|
"grantedTTL": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "int64",
|
||||||
|
"description": "GrantedTTL is the initial granted time in seconds upon lease creation/renewal."
|
||||||
|
},
|
||||||
|
"header": {
|
||||||
|
"$ref": "#/definitions/etcdserverpbResponseHeader"
|
||||||
|
},
|
||||||
|
"keys": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "byte"
|
||||||
|
},
|
||||||
|
"description": "Keys is the list of keys attached to this lease."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"etcdserverpbMember": {
|
"etcdserverpbMember": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -45,6 +45,8 @@
|
|||||||
LeaseRevokeResponse
|
LeaseRevokeResponse
|
||||||
LeaseKeepAliveRequest
|
LeaseKeepAliveRequest
|
||||||
LeaseKeepAliveResponse
|
LeaseKeepAliveResponse
|
||||||
|
LeaseTimeToLiveRequest
|
||||||
|
LeaseTimeToLiveResponse
|
||||||
Member
|
Member
|
||||||
MemberAddRequest
|
MemberAddRequest
|
||||||
MemberAddResponse
|
MemberAddResponse
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -222,6 +222,19 @@ func request_Lease_LeaseKeepAlive_0(ctx context.Context, marshaler runtime.Marsh
|
|||||||
return stream, metadata, nil
|
return stream, metadata, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func request_Lease_LeaseTimeToLive_0(ctx context.Context, marshaler runtime.Marshaler, client LeaseClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
|
var protoReq LeaseTimeToLiveRequest
|
||||||
|
var metadata runtime.ServerMetadata
|
||||||
|
|
||||||
|
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
|
||||||
|
return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
msg, err := client.LeaseTimeToLive(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
|
return msg, metadata, err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func request_Cluster_MemberAdd_0(ctx context.Context, marshaler runtime.Marshaler, client ClusterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
func request_Cluster_MemberAdd_0(ctx context.Context, marshaler runtime.Marshaler, client ClusterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
var protoReq MemberAddRequest
|
var protoReq MemberAddRequest
|
||||||
var metadata runtime.ServerMetadata
|
var metadata runtime.ServerMetadata
|
||||||
@ -935,6 +948,34 @@ func RegisterLeaseHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc
|
|||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
mux.Handle("POST", pattern_Lease_LeaseTimeToLive_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||||
|
ctx, cancel := context.WithCancel(ctx)
|
||||||
|
defer cancel()
|
||||||
|
if cn, ok := w.(http.CloseNotifier); ok {
|
||||||
|
go func(done <-chan struct{}, closed <-chan bool) {
|
||||||
|
select {
|
||||||
|
case <-done:
|
||||||
|
case <-closed:
|
||||||
|
cancel()
|
||||||
|
}
|
||||||
|
}(ctx.Done(), cn.CloseNotify())
|
||||||
|
}
|
||||||
|
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||||
|
rctx, err := runtime.AnnotateContext(ctx, req)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
|
||||||
|
}
|
||||||
|
resp, md, err := request_Lease_LeaseTimeToLive_0(rctx, inboundMarshaler, client, req, pathParams)
|
||||||
|
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
forward_Lease_LeaseTimeToLive_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -944,6 +985,8 @@ var (
|
|||||||
pattern_Lease_LeaseRevoke_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v3alpha", "kv", "lease", "revoke"}, ""))
|
pattern_Lease_LeaseRevoke_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v3alpha", "kv", "lease", "revoke"}, ""))
|
||||||
|
|
||||||
pattern_Lease_LeaseKeepAlive_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v3alpha", "lease", "keepalive"}, ""))
|
pattern_Lease_LeaseKeepAlive_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v3alpha", "lease", "keepalive"}, ""))
|
||||||
|
|
||||||
|
pattern_Lease_LeaseTimeToLive_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v3alpha", "kv", "lease", "timetolive"}, ""))
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -952,6 +995,8 @@ var (
|
|||||||
forward_Lease_LeaseRevoke_0 = runtime.ForwardResponseMessage
|
forward_Lease_LeaseRevoke_0 = runtime.ForwardResponseMessage
|
||||||
|
|
||||||
forward_Lease_LeaseKeepAlive_0 = runtime.ForwardResponseStream
|
forward_Lease_LeaseKeepAlive_0 = runtime.ForwardResponseStream
|
||||||
|
|
||||||
|
forward_Lease_LeaseTimeToLive_0 = runtime.ForwardResponseMessage
|
||||||
)
|
)
|
||||||
|
|
||||||
// RegisterClusterHandlerFromEndpoint is same as RegisterClusterHandler but
|
// RegisterClusterHandlerFromEndpoint is same as RegisterClusterHandler but
|
||||||
|
@ -104,8 +104,15 @@ service Lease {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LeaseTimeToLive retrieves lease information.
|
||||||
|
rpc LeaseTimeToLive(LeaseTimeToLiveRequest) returns (LeaseTimeToLiveResponse) {
|
||||||
|
option (google.api.http) = {
|
||||||
|
post: "/v3alpha/kv/lease/timetolive"
|
||||||
|
body: "*"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
// TODO(xiangli) List all existing Leases?
|
// TODO(xiangli) List all existing Leases?
|
||||||
// TODO(xiangli) Get details information (expirations, leased keys, etc.) of a lease?
|
|
||||||
}
|
}
|
||||||
|
|
||||||
service Cluster {
|
service Cluster {
|
||||||
@ -658,6 +665,25 @@ message LeaseKeepAliveResponse {
|
|||||||
int64 TTL = 3;
|
int64 TTL = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message LeaseTimeToLiveRequest {
|
||||||
|
// ID is the lease ID for the lease.
|
||||||
|
int64 ID = 1;
|
||||||
|
// keys is true to query all the keys attached to this lease.
|
||||||
|
bool keys = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message LeaseTimeToLiveResponse {
|
||||||
|
ResponseHeader header = 1;
|
||||||
|
// ID is the lease ID from the keep alive request.
|
||||||
|
int64 ID = 2;
|
||||||
|
// TTL is the remaining TTL in seconds for the lease; the lease will expire in under TTL+1 seconds.
|
||||||
|
int64 TTL = 3;
|
||||||
|
// GrantedTTL is the initial granted time in seconds upon lease creation/renewal.
|
||||||
|
int64 grantedTTL = 4;
|
||||||
|
// Keys is the list of keys attached to this lease.
|
||||||
|
repeated bytes keys = 5;
|
||||||
|
}
|
||||||
|
|
||||||
message Member {
|
message Member {
|
||||||
// ID is the member ID for this member.
|
// ID is the member ID for this member.
|
||||||
uint64 ID = 1;
|
uint64 ID = 1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user