diff --git a/cmd/climc/shell/k8s/clusters.go b/cmd/climc/shell/k8s/clusters.go index ebfed4b12f..6fcbaf7b9b 100644 --- a/cmd/climc/shell/k8s/clusters.go +++ b/cmd/climc/shell/k8s/clusters.go @@ -203,4 +203,17 @@ func initCluster() { printObject(ret) return nil }) + + R(&o.ClusterRestartAgentsOptions{}, cmdN("restart-agent"), "Restart node agents in cluster", func(s *mcclient.ClientSession, args *o.ClusterRestartAgentsOptions) error { + params, err := args.Params() + if err != nil { + return err + } + ret, err := k8s.Clusters.PerformAction(s, args.ID, "restart-agent", params) + if err != nil { + return err + } + printObject(ret) + return nil + }) } diff --git a/pkg/mcclient/options/k8s/cluster.go b/pkg/mcclient/options/k8s/cluster.go index b26974cc58..27207247d7 100644 --- a/pkg/mcclient/options/k8s/cluster.go +++ b/pkg/mcclient/options/k8s/cluster.go @@ -194,3 +194,21 @@ func (o ClusterDeleteNodesOptions) Params() (*jsonutils.JSONDict, error) { params.Add(nodesArray, "nodes") return params, nil } + +type ClusterRestartAgentsOptions struct { + ClusterDeleteNodesOptions + All bool `help:"Restart all nodes agent"` +} + +func (o ClusterRestartAgentsOptions) Params() (*jsonutils.JSONDict, error) { + params, err := o.ClusterDeleteNodesOptions.Params() + if err != nil { + return nil, err + } + all := jsonutils.JSONFalse + if o.All { + all = jsonutils.JSONTrue + } + params.Add(all, "all") + return params, nil +}