Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1835)

Unified Diff: scheduler/appengine/apiservers/scheduler.go

Issue 2945843002: scheduler WIP: add GetAllJobs api. (Closed)
Patch Set: meh Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « scheduler/api/scheduler/v1/scheduler.pb.go ('k') | scheduler/appengine/apiservers/scheduler_test.go » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: scheduler/appengine/apiservers/scheduler.go
diff --git a/scheduler/appengine/apiservers/scheduler.go b/scheduler/appengine/apiservers/scheduler.go
index 114d7cf115f825909c66d9d3fa8f6f5ab756d69a..02e1e9b0ce1224cc538a8f800abafca73de64c10 100644
--- a/scheduler/appengine/apiservers/scheduler.go
+++ b/scheduler/appengine/apiservers/scheduler.go
@@ -8,6 +8,10 @@ import (
"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"
+ "golang.org/x/net/context"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
)
// SchedulerServer implements scheduler.Scheduler API.
@@ -17,3 +21,34 @@ 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 {
+ traits, err := presentation.GetJobTraits(ctx, s.Catalog, ej)
+ if err != nil {
+ return nil, grpc.Errorf(codes.Internal, "failed to get traits: %s", err)
+ }
+ jobs[i] = &scheduler.Job{
+ Id: ej.JobID,
+ Project: ej.ProjectID,
+ Schedule: ej.Schedule,
+ State: &scheduler.JobState{
+ UiStatus: string(presentation.GetPublicStateKind(ej, traits)),
+ },
+ }
+ }
+ return &scheduler.JobsReply{Jobs: jobs}, nil
+}
« no previous file with comments | « scheduler/api/scheduler/v1/scheduler.pb.go ('k') | scheduler/appengine/apiservers/scheduler_test.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698