mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdctl/ctlv3: add 'lease list' command
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com>
This commit is contained in:
parent
556c1a1fe0
commit
1f20d5d924
@ -439,6 +439,26 @@ Prints lease information.
|
||||
# {"cluster_id":17186838941855831277,"member_id":4845372305070271874,"revision":3,"raft_term":2,"id":3279279168933706764,"ttl":459,"granted-ttl":500,"keys":["Zm9vMQ==","Zm9vMg=="]}
|
||||
```
|
||||
|
||||
### LEASE LIST
|
||||
|
||||
LEASE LIST lists all active leases.
|
||||
|
||||
RPC: LeaseLeases
|
||||
|
||||
#### Output
|
||||
|
||||
Prints a message with a list of active leases.
|
||||
|
||||
#### Example
|
||||
|
||||
```bash
|
||||
./etcdctl lease grant 10
|
||||
# lease 32695410dcc0ca06 granted with TTL(10s)
|
||||
|
||||
./etcdctl lease list
|
||||
32695410dcc0ca06
|
||||
```
|
||||
|
||||
### LEASE KEEP-ALIVE \<leaseID\>
|
||||
|
||||
LEASE KEEP-ALIVE periodically refreshes a lease so it does not expire.
|
||||
@ -736,9 +756,9 @@ If NOSPACE alarm is present:
|
||||
|
||||
### DEFRAG [options]
|
||||
|
||||
DEFRAG defragments the backend database file for a set of given endpoints while etcd is running, or directly defragments an
|
||||
etcd data directory while etcd is not running. When an etcd member reclaims storage space from deleted and compacted keys, the
|
||||
space is kept in a free list and the database file remains the same size. By defragmenting the database, the etcd member
|
||||
DEFRAG defragments the backend database file for a set of given endpoints while etcd is running, or directly defragments an
|
||||
etcd data directory while etcd is not running. When an etcd member reclaims storage space from deleted and compacted keys, the
|
||||
space is kept in a free list and the database file remains the same size. By defragmenting the database, the etcd member
|
||||
releases this free space back to the file system.
|
||||
|
||||
#### Options
|
||||
|
@ -33,6 +33,7 @@ func NewLeaseCommand() *cobra.Command {
|
||||
lc.AddCommand(NewLeaseGrantCommand())
|
||||
lc.AddCommand(NewLeaseRevokeCommand())
|
||||
lc.AddCommand(NewLeaseTimeToLiveCommand())
|
||||
lc.AddCommand(NewLeaseListCommand())
|
||||
lc.AddCommand(NewLeaseKeepAliveCommand())
|
||||
|
||||
return lc
|
||||
@ -129,6 +130,25 @@ func leaseTimeToLiveCommandFunc(cmd *cobra.Command, args []string) {
|
||||
display.TimeToLive(*resp, timeToLiveKeys)
|
||||
}
|
||||
|
||||
// NewLeaseListCommand returns the cobra command for "lease list".
|
||||
func NewLeaseListCommand() *cobra.Command {
|
||||
lc := &cobra.Command{
|
||||
Use: "list",
|
||||
Short: "List all active leases",
|
||||
Run: leaseListCommandFunc,
|
||||
}
|
||||
return lc
|
||||
}
|
||||
|
||||
// leaseListCommandFunc executes the "lease list" command.
|
||||
func leaseListCommandFunc(cmd *cobra.Command, args []string) {
|
||||
resp, rerr := mustClientFromCmd(cmd).Leases(context.TODO())
|
||||
if rerr != nil {
|
||||
ExitWithError(ExitBadConnection, rerr)
|
||||
}
|
||||
display.Leases(*resp)
|
||||
}
|
||||
|
||||
// NewLeaseKeepAliveCommand returns the cobra command for "lease keep-alive".
|
||||
func NewLeaseKeepAliveCommand() *cobra.Command {
|
||||
lc := &cobra.Command{
|
||||
|
@ -36,6 +36,7 @@ type printer interface {
|
||||
Revoke(id v3.LeaseID, r v3.LeaseRevokeResponse)
|
||||
KeepAlive(r v3.LeaseKeepAliveResponse)
|
||||
TimeToLive(r v3.LeaseTimeToLiveResponse, keys bool)
|
||||
Leases(r v3.LeaseLeasesResponse)
|
||||
|
||||
MemberAdd(v3.MemberAddResponse)
|
||||
MemberRemove(id uint64, r v3.MemberRemoveResponse)
|
||||
@ -96,6 +97,7 @@ func (p *printerRPC) Grant(r v3.LeaseGrantResponse) { p.p(r
|
||||
func (p *printerRPC) Revoke(id v3.LeaseID, r v3.LeaseRevokeResponse) { p.p(r) }
|
||||
func (p *printerRPC) KeepAlive(r v3.LeaseKeepAliveResponse) { p.p(r) }
|
||||
func (p *printerRPC) TimeToLive(r v3.LeaseTimeToLiveResponse, keys bool) { p.p(&r) }
|
||||
func (p *printerRPC) Leases(r v3.LeaseLeasesResponse) { p.p(&r) }
|
||||
|
||||
func (p *printerRPC) MemberAdd(r v3.MemberAddResponse) { p.p((*pb.MemberAddResponse)(&r)) }
|
||||
func (p *printerRPC) MemberRemove(id uint64, r v3.MemberRemoveResponse) {
|
||||
|
@ -118,6 +118,13 @@ func (p *fieldsPrinter) TimeToLive(r v3.LeaseTimeToLiveResponse, keys bool) {
|
||||
}
|
||||
}
|
||||
|
||||
func (p *fieldsPrinter) Leases(r v3.LeaseLeasesResponse) {
|
||||
p.hdr(r.ResponseHeader)
|
||||
for _, item := range r.Leases {
|
||||
fmt.Println(`"ID" :`, item.ID)
|
||||
}
|
||||
}
|
||||
|
||||
func (p *fieldsPrinter) MemberList(r v3.MemberListResponse) {
|
||||
p.hdr(r.Header)
|
||||
for _, m := range r.Members {
|
||||
|
@ -104,6 +104,13 @@ func (s *simplePrinter) TimeToLive(resp v3.LeaseTimeToLiveResponse, keys bool) {
|
||||
fmt.Println(txt)
|
||||
}
|
||||
|
||||
func (s *simplePrinter) Leases(resp v3.LeaseLeasesResponse) {
|
||||
fmt.Printf("found %d leases\n", len(resp.Leases))
|
||||
for _, item := range resp.Leases {
|
||||
fmt.Printf("%016x\n", item.ID)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *simplePrinter) Alarm(resp v3.AlarmResponse) {
|
||||
for _, e := range resp.Alarms {
|
||||
fmt.Printf("%+v\n", e)
|
||||
|
Loading…
x
Reference in New Issue
Block a user