mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
Merge pull request #8775 from marcovc/master
etcdctl/v3: add lease keep-alive --once flag
This commit is contained in:
commit
d75a6a39f5
@ -24,6 +24,7 @@ import (
|
||||
func TestCtlV3LeaseGrantTimeToLive(t *testing.T) { testCtl(t, leaseTestGrantTimeToLive) }
|
||||
func TestCtlV3LeaseGrantLeases(t *testing.T) { testCtl(t, leaseTestGrantLeasesList) }
|
||||
func TestCtlV3LeaseKeepAlive(t *testing.T) { testCtl(t, leaseTestKeepAlive) }
|
||||
func TestCtlV3LeaseKeepAliveOnce(t *testing.T) { testCtl(t, leaseTestKeepAliveOnce) }
|
||||
func TestCtlV3LeaseRevoke(t *testing.T) { testCtl(t, leaseTestRevoke) }
|
||||
|
||||
func leaseTestGrantTimeToLive(cx ctlCtx) {
|
||||
@ -89,6 +90,23 @@ func leaseTestKeepAlive(cx ctlCtx) {
|
||||
}
|
||||
}
|
||||
|
||||
func leaseTestKeepAliveOnce(cx ctlCtx) {
|
||||
// put with TTL 10 seconds and keep-alive once
|
||||
leaseID, err := ctlV3LeaseGrant(cx, 10)
|
||||
if err != nil {
|
||||
cx.t.Fatalf("leaseTestKeepAlive: ctlV3LeaseGrant error (%v)", err)
|
||||
}
|
||||
if err := ctlV3Put(cx, "key", "val", leaseID); err != nil {
|
||||
cx.t.Fatalf("leaseTestKeepAlive: ctlV3Put error (%v)", err)
|
||||
}
|
||||
if err := ctlV3LeaseKeepAliveOnce(cx, leaseID); err != nil {
|
||||
cx.t.Fatalf("leaseTestKeepAlive: ctlV3LeaseKeepAliveOnce error (%v)", err)
|
||||
}
|
||||
if err := ctlV3Get(cx, []string{"key"}, kv{"key", "val"}); err != nil {
|
||||
cx.t.Fatalf("leaseTestKeepAlive: ctlV3Get error (%v)", err)
|
||||
}
|
||||
}
|
||||
|
||||
func leaseTestRevoke(cx ctlCtx) {
|
||||
// put with TTL 10 seconds and revoke
|
||||
leaseID, err := ctlV3LeaseGrant(cx, 10)
|
||||
@ -143,6 +161,20 @@ func ctlV3LeaseKeepAlive(cx ctlCtx, leaseID string) error {
|
||||
return proc.Stop()
|
||||
}
|
||||
|
||||
func ctlV3LeaseKeepAliveOnce(cx ctlCtx, leaseID string) error {
|
||||
cmdArgs := append(cx.PrefixArgs(), "lease", "keep-alive", "--once", leaseID)
|
||||
|
||||
proc, err := spawnCmd(cmdArgs)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if _, err = proc.Expect(fmt.Sprintf("lease %s keepalived with TTL(", leaseID)); err != nil {
|
||||
return err
|
||||
}
|
||||
return proc.Stop()
|
||||
}
|
||||
|
||||
func ctlV3LeaseRevoke(cx ctlCtx, leaseID string) error {
|
||||
cmdArgs := append(cx.PrefixArgs(), "lease", "revoke", leaseID)
|
||||
return spawnWithExpect(cmdArgs, fmt.Sprintf("lease %s revoked", leaseID))
|
||||
|
@ -150,15 +150,21 @@ func leaseListCommandFunc(cmd *cobra.Command, args []string) {
|
||||
display.Leases(*resp)
|
||||
}
|
||||
|
||||
var (
|
||||
leaseKeepAliveOnce bool
|
||||
)
|
||||
|
||||
// NewLeaseKeepAliveCommand returns the cobra command for "lease keep-alive".
|
||||
func NewLeaseKeepAliveCommand() *cobra.Command {
|
||||
lc := &cobra.Command{
|
||||
Use: "keep-alive <leaseID>",
|
||||
Use: "keep-alive [options] <leaseID>",
|
||||
Short: "Keeps leases alive (renew)",
|
||||
|
||||
Run: leaseKeepAliveCommandFunc,
|
||||
}
|
||||
|
||||
lc.Flags().BoolVar(&leaseKeepAliveOnce, "once", false, "Resets the keep-alive time to its original value and exits immediately")
|
||||
|
||||
return lc
|
||||
}
|
||||
|
||||
@ -169,11 +175,20 @@ func leaseKeepAliveCommandFunc(cmd *cobra.Command, args []string) {
|
||||
}
|
||||
|
||||
id := leaseFromArgs(args[0])
|
||||
|
||||
if leaseKeepAliveOnce {
|
||||
respc, kerr := mustClientFromCmd(cmd).KeepAliveOnce(context.TODO(), id)
|
||||
if kerr != nil {
|
||||
ExitWithError(ExitBadConnection, kerr)
|
||||
}
|
||||
display.KeepAlive(*respc)
|
||||
return
|
||||
}
|
||||
|
||||
respc, kerr := mustClientFromCmd(cmd).KeepAlive(context.TODO(), id)
|
||||
if kerr != nil {
|
||||
ExitWithError(ExitBadConnection, kerr)
|
||||
}
|
||||
|
||||
for resp := range respc {
|
||||
display.KeepAlive(*resp)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user