mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-19 10:46:58 +08:00
feature: archived task show (#22309)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
This commit is contained in:
@@ -18,6 +18,7 @@ import (
|
||||
"fmt"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/pkg/errors"
|
||||
|
||||
"yunion.io/x/onecloud/pkg/apis"
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
@@ -34,38 +35,47 @@ func init() {
|
||||
cmds := []struct {
|
||||
service string
|
||||
manager modulebase.Manager
|
||||
|
||||
archivedManager modulebase.Manager
|
||||
}{
|
||||
{
|
||||
service: "region",
|
||||
manager: &compute.ComputeTasks,
|
||||
service: "region",
|
||||
manager: &compute.ComputeTasks,
|
||||
archivedManager: &compute.ArchivedComputeTasks,
|
||||
},
|
||||
{
|
||||
service: "devtool",
|
||||
manager: &devtool.DevtoolTasks,
|
||||
service: "devtool",
|
||||
manager: &devtool.DevtoolTasks,
|
||||
archivedManager: &devtool.ArchivedDevtoolTasks,
|
||||
},
|
||||
{
|
||||
service: "image",
|
||||
manager: &image.Tasks,
|
||||
service: "image",
|
||||
manager: &image.Tasks,
|
||||
archivedManager: &image.ArchivedTasks,
|
||||
},
|
||||
{
|
||||
service: "identity",
|
||||
manager: &identity.Tasks,
|
||||
service: "identity",
|
||||
manager: &identity.Tasks,
|
||||
archivedManager: &identity.ArchivedTasks,
|
||||
},
|
||||
{
|
||||
service: "k8s",
|
||||
manager: k8s.KubeTasks,
|
||||
service: "k8s",
|
||||
manager: k8s.KubeTasks,
|
||||
archivedManager: k8s.ArchivedKubeTasks,
|
||||
},
|
||||
{
|
||||
service: "notify",
|
||||
manager: ¬ify.Tasks,
|
||||
service: "notify",
|
||||
manager: ¬ify.Tasks,
|
||||
archivedManager: ¬ify.ArchivedTasks,
|
||||
},
|
||||
}
|
||||
for i := range cmds {
|
||||
c := cmds[i]
|
||||
|
||||
type TaskListOptions struct {
|
||||
apis.TaskListInput
|
||||
}
|
||||
R(&TaskListOptions{}, fmt.Sprintf("%s-task-list", c.service), "List tasks on region server", func(s *mcclient.ClientSession, args *TaskListOptions) error {
|
||||
R(&TaskListOptions{}, fmt.Sprintf("%s-task-list", c.service), fmt.Sprintf("List tasks on %s server", c.service), func(s *mcclient.ClientSession, args *TaskListOptions) error {
|
||||
params := jsonutils.Marshal(args)
|
||||
result, err := c.manager.List(s, params)
|
||||
if err != nil {
|
||||
@@ -78,7 +88,7 @@ func init() {
|
||||
type TaskShowOptions struct {
|
||||
ID string `help:"ID or name of the task"`
|
||||
}
|
||||
R(&TaskShowOptions{}, "region-task-show", "Show details of a region task", func(s *mcclient.ClientSession, args *TaskShowOptions) error {
|
||||
R(&TaskShowOptions{}, fmt.Sprintf("%s-task-show", c.service), fmt.Sprintf("Show details of a %s task", c.service), func(s *mcclient.ClientSession, args *TaskShowOptions) error {
|
||||
result, err := c.manager.GetById(s, args.ID, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -86,39 +96,43 @@ func init() {
|
||||
printObject(result)
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
/*type TaskListOptions struct {
|
||||
ObjName string `help:"object name"`
|
||||
ObjId string `help:"object id"`
|
||||
TaskName string `help:"task name"`
|
||||
ServiceType string `choices:"image|cloudid|cloudevent|devtool|ansible|identity|notify|log|compute|compute_v2"`
|
||||
}
|
||||
R(&TaskListOptions{}, "task-list", "List tasks", func(s *mcclient.ClientSession, args *TaskListOptions) error {
|
||||
params := jsonutils.Marshal(args)
|
||||
man := compute.TasksManager{}
|
||||
result, err := man.List(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printList(result, man.GetColumns(s))
|
||||
return nil
|
||||
})
|
||||
R(&TaskShowOptions{}, fmt.Sprintf("%s-task-cancel", c.service), fmt.Sprintf("Cancel a %s task", c.service), func(s *mcclient.ClientSession, args *TaskShowOptions) error {
|
||||
result, err := c.manager.PerformAction(s, args.ID, "cancel", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(result)
|
||||
return nil
|
||||
})
|
||||
|
||||
type TaskShowOptions struct {
|
||||
ID string `help:"ID or name of the task"`
|
||||
ServiceType string `choices:"image|cloudid|cloudevent|devtool|ansible|identity|notify|log|compute|compute_v2"`
|
||||
}
|
||||
R(&TaskListOptions{}, fmt.Sprintf("%s-archived-task-list", c.service), fmt.Sprintf("List archived tasks on %s server", c.service), func(s *mcclient.ClientSession, args *TaskListOptions) error {
|
||||
params := jsonutils.Marshal(args)
|
||||
result, err := c.archivedManager.List(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printList(result, c.archivedManager.GetColumns(s))
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&TaskShowOptions{}, "task-show", "Show details of a task", func(s *mcclient.ClientSession, args *TaskShowOptions) error {
|
||||
man := compute.TasksManager{}
|
||||
params := jsonutils.Marshal(args)
|
||||
result, err := man.Get(s, args.ID, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(result)
|
||||
return nil
|
||||
})*/
|
||||
R(&TaskShowOptions{}, fmt.Sprintf("%s-archived-task-show", c.service), fmt.Sprintf("Show details of an archived %s task", c.service), func(s *mcclient.ClientSession, args *TaskShowOptions) error {
|
||||
params := jsonutils.NewDict()
|
||||
params.Set("task_id", jsonutils.NewString(args.ID))
|
||||
result, err := c.archivedManager.List(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if result.Total == 1 {
|
||||
printObject(result.Data[0])
|
||||
return nil
|
||||
} else if result.Total == 0 {
|
||||
return errors.Wrapf(errors.ErrNotFound, "not found %s", args.ID)
|
||||
} else {
|
||||
printList(result, c.archivedManager.GetColumns(s))
|
||||
return errors.Wrapf(errors.ErrDuplicateId, "found %d record for %s", result.Total, args.ID)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user