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