From 42faf9fe06d2d1867a56274278ea84f323074cb8 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Tue, 22 Feb 2022 16:30:08 +0100 Subject: [PATCH] etcdctl: Use minor versions for downgrade --- etcdctl/README.md | 12 ++++++------ etcdctl/ctlv3/command/printer_simple.go | 6 +++--- server/etcdserver/v3_server.go | 7 ++++--- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/etcdctl/README.md b/etcdctl/README.md index fa92089b3..66dfc619f 100644 --- a/etcdctl/README.md +++ b/etcdctl/README.md @@ -1116,10 +1116,10 @@ DOWNGRADE VALIDATE validate downgrade capability before starting downgrade. #### Example ```bash -./etcdctl downgrade validate 3.5.0 -Downgrade validate success, cluster version 3.6.0 +./etcdctl downgrade validate 3.5 +Downgrade validate success, cluster version 3.6 -./etcdctl downgrade validate 3.4.0 +./etcdctl downgrade validate 3.4 Error: etcdserver: invalid downgrade target version ``` @@ -1131,8 +1131,8 @@ DOWNGRADE ENABLE starts a downgrade action to cluster. #### Example ```bash -./etcdctl downgrade enable 3.5.0 -Downgrade enable success, cluster version 3.6.0 +./etcdctl downgrade enable 3.5 +Downgrade enable success, cluster version 3.6 ``` ### DOWNGRADE CANCEL \ @@ -1143,7 +1143,7 @@ DOWNGRADE CANCEL cancels the ongoing downgrade action to cluster. ```bash ./etcdctl downgrade cancel -Downgrade cancel success, cluster version 3.6.0 +Downgrade cancel success, cluster version 3.5 ``` ## Concurrency commands diff --git a/etcdctl/ctlv3/command/printer_simple.go b/etcdctl/ctlv3/command/printer_simple.go index 1970a49a4..32f8cac60 100644 --- a/etcdctl/ctlv3/command/printer_simple.go +++ b/etcdctl/ctlv3/command/printer_simple.go @@ -177,13 +177,13 @@ func (s *simplePrinter) MoveLeader(leader, target uint64, r v3.MoveLeaderRespons } func (s *simplePrinter) DowngradeValidate(r v3.DowngradeResponse) { - fmt.Printf("Downgrade validate success, cluster version %s", r.Version) + fmt.Printf("Downgrade validate success, cluster version %s\n", r.Version) } func (s *simplePrinter) DowngradeEnable(r v3.DowngradeResponse) { - fmt.Printf("Downgrade enable success, cluster version %s", r.Version) + fmt.Printf("Downgrade enable success, cluster version %s\n", r.Version) } func (s *simplePrinter) DowngradeCancel(r v3.DowngradeResponse) { - fmt.Printf("Downgrade cancel success, cluster version %s", r.Version) + fmt.Printf("Downgrade cancel success, cluster version %s\n", r.Version) } func (s *simplePrinter) RoleAdd(role string, r v3.AuthRoleAddResponse) { diff --git a/server/etcdserver/v3_server.go b/server/etcdserver/v3_server.go index 9885fc01c..3e868bebd 100644 --- a/server/etcdserver/v3_server.go +++ b/server/etcdserver/v3_server.go @@ -23,6 +23,7 @@ import ( "time" pb "go.etcd.io/etcd/api/v3/etcdserverpb" + "go.etcd.io/etcd/api/v3/version" "go.etcd.io/etcd/pkg/v3/traceutil" "go.etcd.io/etcd/raft/v3" "go.etcd.io/etcd/server/v3/auth" @@ -922,7 +923,7 @@ func (s *EtcdServer) downgradeValidate(ctx context.Context, v string) (*pb.Downg if cv == nil { return nil, ErrClusterVersionUnavailable } - resp.Version = cv.String() + resp.Version = version.Cluster(cv.String()) err = s.Version().DowngradeValidate(ctx, targetVersion) if err != nil { return nil, err @@ -943,7 +944,7 @@ func (s *EtcdServer) downgradeEnable(ctx context.Context, r *pb.DowngradeRequest lg.Warn("reject downgrade request", zap.Error(err)) return nil, err } - resp := pb.DowngradeResponse{Version: s.ClusterVersion().String()} + resp := pb.DowngradeResponse{Version: version.Cluster(s.ClusterVersion().String())} return &resp, nil } @@ -952,6 +953,6 @@ func (s *EtcdServer) downgradeCancel(ctx context.Context) (*pb.DowngradeResponse if err != nil { s.lg.Warn("failed to cancel downgrade", zap.Error(err)) } - resp := pb.DowngradeResponse{Version: s.ClusterVersion().String()} + resp := pb.DowngradeResponse{Version: version.Cluster(s.ClusterVersion().String())} return &resp, nil }