mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdctlv3: expose db size and raft status in server side
This commit is contained in:
parent
1044fbce2c
commit
a9a06438f9
@ -19,6 +19,7 @@ import (
|
|||||||
|
|
||||||
"github.com/coreos/etcd/etcdserver"
|
"github.com/coreos/etcd/etcdserver"
|
||||||
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
|
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
|
||||||
|
"github.com/coreos/etcd/pkg/types"
|
||||||
"github.com/coreos/etcd/storage/backend"
|
"github.com/coreos/etcd/storage/backend"
|
||||||
"github.com/coreos/etcd/version"
|
"github.com/coreos/etcd/version"
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
@ -32,14 +33,21 @@ type Alarmer interface {
|
|||||||
Alarm(ctx context.Context, ar *pb.AlarmRequest) (*pb.AlarmResponse, error)
|
Alarm(ctx context.Context, ar *pb.AlarmRequest) (*pb.AlarmResponse, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type RaftStatusGetter interface {
|
||||||
|
Index() uint64
|
||||||
|
Term() uint64
|
||||||
|
Leader() types.ID
|
||||||
|
}
|
||||||
|
|
||||||
type maintenanceServer struct {
|
type maintenanceServer struct {
|
||||||
|
rg RaftStatusGetter
|
||||||
bg BackendGetter
|
bg BackendGetter
|
||||||
a Alarmer
|
a Alarmer
|
||||||
hdr header
|
hdr header
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMaintenanceServer(s *etcdserver.EtcdServer) pb.MaintenanceServer {
|
func NewMaintenanceServer(s *etcdserver.EtcdServer) pb.MaintenanceServer {
|
||||||
return &maintenanceServer{bg: s, a: s, hdr: newHeader(s)}
|
return &maintenanceServer{rg: s, bg: s, a: s, hdr: newHeader(s)}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ms *maintenanceServer) Defragment(ctx context.Context, sr *pb.DefragmentRequest) (*pb.DefragmentResponse, error) {
|
func (ms *maintenanceServer) Defragment(ctx context.Context, sr *pb.DefragmentRequest) (*pb.DefragmentResponse, error) {
|
||||||
@ -103,7 +111,14 @@ func (ms *maintenanceServer) Alarm(ctx context.Context, ar *pb.AlarmRequest) (*p
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ms *maintenanceServer) Status(ctx context.Context, ar *pb.StatusRequest) (*pb.StatusResponse, error) {
|
func (ms *maintenanceServer) Status(ctx context.Context, ar *pb.StatusRequest) (*pb.StatusResponse, error) {
|
||||||
resp := &pb.StatusResponse{Header: &pb.ResponseHeader{Revision: ms.hdr.rev()}, Version: version.Version}
|
resp := &pb.StatusResponse{
|
||||||
|
Header: &pb.ResponseHeader{Revision: ms.hdr.rev()},
|
||||||
|
Version: version.Version,
|
||||||
|
DbSize: ms.bg.Backend().Size(),
|
||||||
|
Leader: uint64(ms.rg.Leader()),
|
||||||
|
RaftIndex: ms.rg.Index(),
|
||||||
|
RaftTerm: ms.rg.Term(),
|
||||||
|
}
|
||||||
ms.hdr.fill(resp.Header)
|
ms.hdr.fill(resp.Header)
|
||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user