OLD | NEW |
| (Empty) |
1 // Copyright 2017 The LUCI Authors. All rights reserved. | |
2 // Use of this source code is governed under the Apache License, Version 2.0 | |
3 // that can be found in the LICENSE file. | |
4 | |
5 package buildbucket | |
6 | |
7 import ( | |
8 "errors" | |
9 "fmt" | |
10 | |
11 "golang.org/x/net/context" | |
12 | |
13 "github.com/luci/luci-go/milo/api/resp" | |
14 "github.com/luci/luci-go/milo/appengine/common" | |
15 ) | |
16 | |
17 func GetAllBuilders(c context.Context) (*resp.CIService, error) { | |
18 settings := common.GetSettings(c) | |
19 bucketSettings := settings.Buildbucket | |
20 if bucketSettings == nil { | |
21 return nil, errors.New("buildbucket settings missing in config") | |
22 } | |
23 result := &resp.CIService{ | |
24 Name: "Swarmbucket", | |
25 Host: resp.NewLink(bucketSettings.Name, "https://"+bucketSetting
s.Host), | |
26 } | |
27 client, err := newSwarmbucketClient(c, bucketSettings.Host) | |
28 if err != nil { | |
29 return nil, err | |
30 } | |
31 // TODO(hinoka): Retries for transient errors | |
32 r, err := client.GetBuilders().Do() | |
33 if err != nil { | |
34 return nil, err | |
35 } | |
36 | |
37 result.BuilderGroups = make([]resp.BuilderGroup, len(r.Buckets)) | |
38 for i, bucket := range r.Buckets { | |
39 group := resp.BuilderGroup{Name: bucket.Name} | |
40 group.Builders = make([]resp.Link, len(bucket.Builders)) | |
41 for j, builder := range bucket.Builders { | |
42 group.Builders[j] = *resp.NewLink( | |
43 builder.Name, fmt.Sprintf("/buildbucket/%s/%s",
bucket.Name, builder.Name)) | |
44 } | |
45 result.BuilderGroups[i] = group | |
46 } | |
47 | |
48 return result, nil | |
49 } | |
OLD | NEW |