fix: region task notify not work

This commit is contained in:
Zexi Li
2018-10-11 19:04:11 +08:00
parent fed89b0db6
commit 84ee48335b
4 changed files with 21 additions and 6 deletions
+11 -4
View File
@@ -160,10 +160,11 @@ func init() {
})
type DiskCreateOptions struct {
STORAGE string `help:"ID or name of storage where the disk is created"`
NAME string `help:"Name of the disk"`
DISKDESC string `help:"Image size or size of virtual disk"`
Desc string `help:"Description" metavar:"Description"`
STORAGE string `help:"ID or name of storage where the disk is created"`
NAME string `help:"Name of the disk"`
DISKDESC string `help:"Image size or size of virtual disk"`
Desc string `help:"Description" metavar:"Description"`
TaskNotify bool `help:"Setup task notify"`
}
R(&DiskCreateOptions{}, "disk-create", "Create a virtual disk", func(s *mcclient.ClientSession, args *DiskCreateOptions) error {
params := jsonutils.NewDict()
@@ -172,11 +173,17 @@ func init() {
if len(args.Desc) > 0 {
params.Add(jsonutils.NewString(args.Desc), "description")
}
if args.TaskNotify {
s.PrepareTask()
}
disk, err := modules.Disks.CreateInContext(s, params, &modules.Storages, args.STORAGE)
if err != nil {
return err
}
printObject(disk)
if args.TaskNotify {
s.WaitTaskNotify()
}
return nil
})
+1 -1
View File
@@ -156,7 +156,7 @@ func fetchTaskParams(ctx context.Context, taskName string, taskData *jsonutils.J
}
} else {
if !reqContext.IsZero() {
if len(reqContext.TaskId) > 0 {
if len(reqContext.TaskId) > 0 && len(reqContext.TaskNotifyUrl) == 0 {
data.Add(jsonutils.NewString(reqContext.TaskId), PARENT_TASK_ID_KEY)
}
if len(reqContext.TaskNotifyUrl) > 0 {
+7 -1
View File
@@ -18,7 +18,7 @@ const (
func Authenticate(f appsrv.FilterHandler) appsrv.FilterHandler {
return func(ctx context.Context, w http.ResponseWriter, r *http.Request) {
tokenStr := r.Header.Get("X-Auth-Token")
tokenStr := r.Header.Get(mcclient.AUTH_TOKEN)
if len(tokenStr) == 0 {
httperrors.UnauthorizedError(w, "Unauthorized")
return
@@ -30,6 +30,12 @@ func Authenticate(f appsrv.FilterHandler) appsrv.FilterHandler {
return
}
ctx = context.WithValue(ctx, AUTH_TOKEN, token)
if taskId := r.Header.Get(mcclient.TASK_ID); taskId != "" {
ctx = context.WithValue(ctx, appctx.APP_CONTEXT_KEY_TASK_ID, taskId)
}
if taskNotifyUrl := r.Header.Get(mcclient.TASK_NOTIFY_URL); taskNotifyUrl != "" {
ctx = context.WithValue(ctx, appctx.APP_CONTEXT_KEY_TASK_NOTIFY_URL, taskNotifyUrl)
}
f(ctx, w, r)
}
}
+2
View File
@@ -16,7 +16,9 @@ import (
)
const (
TASK_ID = "X-Task-Id"
TASK_NOTIFY_URL = "X-Task-Notify-Url"
AUTH_TOKEN = "X-Auth-Token"
DEFAULT_API_VERSION = "v1"
)