|
|
@@ -60,6 +60,9 @@ type Lessor interface {
|
|
|
|
|
|
// LeaseTimeToLive retrieves lease information.
|
|
|
LeaseTimeToLive(ctx context.Context, r *pb.LeaseTimeToLiveRequest) (*pb.LeaseTimeToLiveResponse, error)
|
|
|
+
|
|
|
+ // LeaseLeases lists all leases.
|
|
|
+ LeaseLeases(ctx context.Context, r *pb.LeaseLeasesRequest) (*pb.LeaseLeasesResponse, error)
|
|
|
}
|
|
|
|
|
|
type Authenticator interface {
|
|
|
@@ -291,6 +294,15 @@ func (s *EtcdServer) LeaseTimeToLive(ctx context.Context, r *pb.LeaseTimeToLiveR
|
|
|
return nil, ErrTimeout
|
|
|
}
|
|
|
|
|
|
+func (s *EtcdServer) LeaseLeases(ctx context.Context, r *pb.LeaseLeasesRequest) (*pb.LeaseLeasesResponse, error) {
|
|
|
+ ls := s.lessor.Leases()
|
|
|
+ lss := make([]*pb.LeaseStatus, len(ls))
|
|
|
+ for i := range ls {
|
|
|
+ lss[i] = &pb.LeaseStatus{ID: int64(ls[i].ID)}
|
|
|
+ }
|
|
|
+ return &pb.LeaseLeasesResponse{Header: newHeader(s), Leases: lss}, nil
|
|
|
+}
|
|
|
+
|
|
|
func (s *EtcdServer) waitLeader(ctx context.Context) (*membership.Member, error) {
|
|
|
leader := s.cluster.Member(s.Leader())
|
|
|
for leader == nil {
|