Chromium Code Reviews| Index: scheduler/appengine/apiservers/scheduler.go |
| diff --git a/scheduler/appengine/apiservers/scheduler.go b/scheduler/appengine/apiservers/scheduler.go |
| index 114d7cf115f825909c66d9d3fa8f6f5ab756d69a..97b58efd34ee22e7000ec9149509538016cd2bc7 100644 |
| --- a/scheduler/appengine/apiservers/scheduler.go |
| +++ b/scheduler/appengine/apiservers/scheduler.go |
| @@ -5,9 +5,15 @@ |
| package apiservers |
| import ( |
| + "github.com/luci/luci-go/common/logging" |
| "github.com/luci/luci-go/scheduler/api/scheduler/v1" |
| "github.com/luci/luci-go/scheduler/appengine/catalog" |
| "github.com/luci/luci-go/scheduler/appengine/engine" |
| + "github.com/luci/luci-go/scheduler/appengine/presentation" |
| + "github.com/luci/luci-go/scheduler/appengine/task" |
| + "golang.org/x/net/context" |
| + "google.golang.org/grpc" |
| + "google.golang.org/grpc/codes" |
| ) |
| // SchedulerServer implements scheduler.Scheduler API. |
| @@ -17,3 +23,46 @@ type SchedulerServer struct { |
| } |
| var _ scheduler.SchedulerServer = (*SchedulerServer)(nil) |
| + |
| +// GetJobs fetches all jobs satisfying JobsRequest and visibility ACLs. |
| +func (s SchedulerServer) GetJobs(ctx context.Context, in *scheduler.JobsRequest) (*scheduler.JobsReply, error) { |
| + var ejobs []*engine.Job |
| + var err error |
| + if in.GetProject() == "" { |
| + ejobs, err = s.Engine.GetAllJobs(ctx) |
| + } else { |
| + ejobs, err = s.Engine.GetProjectJobs(ctx, in.GetProject()) |
| + } |
| + if err != nil { |
| + return nil, grpc.Errorf(codes.Internal, "datastore error: %s", err) |
| + } |
| + |
| + jobs := make([]*scheduler.Job, len(ejobs)) |
| + for i, ej := range ejobs { |
| + jobs[i] = &scheduler.Job{ |
| + Id: ej.JobID, |
| + Project: ej.ProjectID, |
| + Schedule: ej.Schedule, |
| + State: &scheduler.JobState{ |
| + UiStatus: string(presentation.GetPublicStateKind(ej, s.getTaskTraits(ctx, ej))), |
| + }, |
| + } |
| + } |
| + return &scheduler.JobsReply{Jobs: jobs}, nil |
| +} |
| + |
| +//// |
| + |
| +func (s SchedulerServer) getTaskTraits(ctx context.Context, j *engine.Job) task.Traits { |
|
Vadim Sh.
2017/06/20 17:48:54
I think this should be moved somewhere else, so it
tandrii(chromium)
2017/06/20 19:48:36
Done.
|
| + var manager task.Manager |
| + taskDef, err := s.Catalog.UnmarshalTask(j.Task) |
| + if err != nil { |
| + logging.WithError(err).Warningf(ctx, "Failed to unmarshal task proto for %s", j.JobID) |
| + } else { |
| + manager = s.Catalog.GetTaskManager(taskDef) |
| + } |
| + if manager != nil { |
| + return manager.Traits() |
| + } |
| + return task.Traits{} |
| +} |