From 8e4c1e1672f4d4aa38cf221892888c95bc93d9f2 Mon Sep 17 00:00:00 2001 From: Zexi Li Date: Fri, 30 Nov 2018 18:15:25 +0800 Subject: [PATCH] climc: k8s release rollback --- cmd/climc/shell/k8s/releases.go | 18 +++++++++++++++++ pkg/mcclient/options/k8s/release.go | 30 +++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/cmd/climc/shell/k8s/releases.go b/cmd/climc/shell/k8s/releases.go index eaa4e41652..e5480029fa 100644 --- a/cmd/climc/shell/k8s/releases.go +++ b/cmd/climc/shell/k8s/releases.go @@ -66,4 +66,22 @@ func initRelease() { _, err := k8s.Releases.Delete(s, args.NAME, args.Params()) return err }) + + R(&o.ReleaseHistoryOptions{}, cmdN("history"), "Get release history", func(s *mcclient.ClientSession, args *o.ReleaseHistoryOptions) error { + ret, err := k8s.Releases.GetSpecific(s, args.NAME, "history", args.Params()) + if err != nil { + return err + } + printObjectYAML(ret) + return nil + }) + + R(&o.ReleaseRollbackOptions{}, cmdN("rollback"), "Rollback release by history revision number", func(s *mcclient.ClientSession, args *o.ReleaseRollbackOptions) error { + ret, err := k8s.Releases.PerformAction(s, args.NAME, "rollback", args.Params()) + if err != nil { + return err + } + printObjectYAML(ret) + return nil + }) } diff --git a/pkg/mcclient/options/k8s/release.go b/pkg/mcclient/options/k8s/release.go index d6714a8216..2663e6ee57 100644 --- a/pkg/mcclient/options/k8s/release.go +++ b/pkg/mcclient/options/k8s/release.go @@ -128,3 +128,33 @@ type ReleaseDeleteOptions struct { ClusterBaseOptions NAME string `help:"Release instance name"` } + +type ReleaseHistoryOptions struct { + ClusterBaseOptions + NAME string `help:"Release instance name"` + Max int64 `help:"History limit size"` +} + +func (o ReleaseHistoryOptions) Params() *jsonutils.JSONDict { + params := o.ClusterBaseOptions.Params() + if o.Max >= 1 { + params.Add(jsonutils.NewInt(o.Max), "max") + } + return params +} + +type ReleaseRollbackOptions struct { + ClusterBaseOptions + NAME string `help:"Release instance name"` + REVISION int64 `help:"Release history revision number"` + Description string `help:"Release rollback description string"` +} + +func (o ReleaseRollbackOptions) Params() *jsonutils.JSONDict { + params := o.ClusterBaseOptions.Params() + params.Add(jsonutils.NewInt(o.REVISION), "revision") + if o.Description != "" { + params.Add(jsonutils.NewString(o.Description), "description") + } + return params +}