| Index: scheduler/appengine/task/swarming/swarming.go
|
| diff --git a/scheduler/appengine/task/swarming/swarming.go b/scheduler/appengine/task/swarming/swarming.go
|
| index 34d33ca9d56816bd7152729895baa6e6d71ec806..8ab6f5d128c430a6c9825bb62b71747981c4c211 100644
|
| --- a/scheduler/appengine/task/swarming/swarming.go
|
| +++ b/scheduler/appengine/task/swarming/swarming.go
|
| @@ -19,6 +19,7 @@ import (
|
| "encoding/json"
|
| "fmt"
|
| "net/url"
|
| + "strings"
|
| "time"
|
|
|
| "github.com/golang/protobuf/proto"
|
| @@ -61,6 +62,13 @@ func (m TaskManager) Traits() task.Traits {
|
| }
|
| }
|
|
|
| +func normalizeServerURL(s string) string {
|
| + if strings.HasPrefix(s, "https://") || strings.HasPrefix(s, "http://") {
|
| + return s
|
| + }
|
| + return "https://" + s
|
| +}
|
| +
|
| // ValidateProtoMessage is part of Manager interface.
|
| func (m TaskManager) ValidateProtoMessage(msg proto.Message) error {
|
| cfg, ok := msg.(*messages.SwarmingTask)
|
| @@ -75,7 +83,7 @@ func (m TaskManager) ValidateProtoMessage(msg proto.Message) error {
|
| if cfg.Server == "" {
|
| return fmt.Errorf("field 'server' is required")
|
| }
|
| - u, err := url.Parse(cfg.Server)
|
| + u, err := url.Parse(normalizeServerURL(cfg.Server))
|
| if err != nil {
|
| return fmt.Errorf("invalid URL %q: %s", cfg.Server, err)
|
| }
|
| @@ -207,8 +215,9 @@ func (m TaskManager) LaunchTask(c context.Context, ctl task.Controller) error {
|
|
|
| // Make sure Swarming can publish PubSub messages, grab token that would
|
| // identify this invocation when receiving PubSub notifications.
|
| - ctl.DebugLog("Preparing PubSub topic for %q", cfg.Server)
|
| - topic, authToken, err := ctl.PrepareTopic(c, cfg.Server)
|
| + serverURL := normalizeServerURL(cfg.Server)
|
| + ctl.DebugLog("Preparing PubSub topic for %q", serverURL)
|
| + topic, authToken, err := ctl.PrepareTopic(c, serverURL)
|
| if err != nil {
|
| ctl.DebugLog("Failed to prepare PubSub topic - %s", err)
|
| return err
|
| @@ -286,7 +295,7 @@ func (m TaskManager) LaunchTask(c context.Context, ctl task.Controller) error {
|
|
|
| // Successfully launched.
|
| ctl.State().Status = task.StatusRunning
|
| - ctl.State().ViewURL = fmt.Sprintf("%s/user/task/%s", cfg.Server, resp.TaskId)
|
| + ctl.State().ViewURL = fmt.Sprintf("%s/user/task/%s", serverURL, resp.TaskId)
|
| ctl.DebugLog("Task URL: %s", ctl.State().ViewURL)
|
|
|
| // Maybe the task was already finished? Can only happen when 'idempotent' is
|
| @@ -340,7 +349,7 @@ func (m TaskManager) createSwarmingService(c context.Context, ctl task.Controlle
|
| return nil, err
|
| }
|
| cfg := ctl.Task().(*messages.SwarmingTask)
|
| - service.BasePath = cfg.Server + "/_ah/api/swarming/v1/"
|
| + service.BasePath = normalizeServerURL(cfg.Server) + "/_ah/api/swarming/v1/"
|
| return service, nil
|
| }
|
|
|
|
|