| 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 "errors" |
| 9 "fmt" | 9 "fmt" |
| 10 | 10 |
| 11 "golang.org/x/net/context" | 11 "golang.org/x/net/context" |
| 12 | 12 |
| 13 "github.com/luci/luci-go/milo/api/resp" | 13 "github.com/luci/luci-go/milo/api/resp" |
| 14 "github.com/luci/luci-go/milo/appengine/common" | 14 "github.com/luci/luci-go/milo/appengine/common" |
| 15 ) | 15 ) |
| 16 | 16 |
| 17 func GetAllBuilders(c context.Context) (*resp.CIService, error) { | 17 func GetAllBuilders(c context.Context) (*resp.CIService, error) { |
| 18 settings := common.GetSettings(c) | 18 settings := common.GetSettings(c) |
| 19 bucketSettings := settings.Buildbucket | 19 bucketSettings := settings.Buildbucket |
| 20 if bucketSettings == nil { | 20 if bucketSettings == nil { |
| 21 return nil, errors.New("buildbucket settings missing in config") | 21 return nil, errors.New("buildbucket settings missing in config") |
| 22 } | 22 } |
| 23 result := &resp.CIService{ | 23 result := &resp.CIService{ |
| 24 Name: "Swarmbucket", | 24 Name: "Swarmbucket", |
| 25 » » Host: &resp.Link{ | 25 » » Host: resp.NewLink(bucketSettings.Name, "https://"+bucketSetting
s.Host), |
| 26 » » » Label: bucketSettings.Name, | |
| 27 » » » URL: "https://" + bucketSettings.Host, | |
| 28 » » }, | |
| 29 } | 26 } |
| 30 client, err := newSwarmbucketClient(c, bucketSettings.Host) | 27 client, err := newSwarmbucketClient(c, bucketSettings.Host) |
| 31 if err != nil { | 28 if err != nil { |
| 32 return nil, err | 29 return nil, err |
| 33 } | 30 } |
| 34 // TODO(hinoka): Retries for transient errors | 31 // TODO(hinoka): Retries for transient errors |
| 35 r, err := client.GetBuilders().Do() | 32 r, err := client.GetBuilders().Do() |
| 36 if err != nil { | 33 if err != nil { |
| 37 return nil, err | 34 return nil, err |
| 38 } | 35 } |
| 39 | 36 |
| 40 result.BuilderGroups = make([]resp.BuilderGroup, len(r.Buckets)) | 37 result.BuilderGroups = make([]resp.BuilderGroup, len(r.Buckets)) |
| 41 for i, bucket := range r.Buckets { | 38 for i, bucket := range r.Buckets { |
| 42 group := resp.BuilderGroup{Name: bucket.Name} | 39 group := resp.BuilderGroup{Name: bucket.Name} |
| 43 group.Builders = make([]resp.Link, len(bucket.Builders)) | 40 group.Builders = make([]resp.Link, len(bucket.Builders)) |
| 44 for j, builder := range bucket.Builders { | 41 for j, builder := range bucket.Builders { |
| 45 » » » group.Builders[j] = resp.Link{ | 42 » » » group.Builders[j] = *resp.NewLink( |
| 46 » » » » Label: builder.Name, | 43 » » » » builder.Name, fmt.Sprintf("/buildbucket/%s/%s",
bucket.Name, builder.Name)) |
| 47 » » » » URL: fmt.Sprintf("/buildbucket/%s/%s", bucket.
Name, builder.Name), | |
| 48 » » » } | |
| 49 } | 44 } |
| 50 result.BuilderGroups[i] = group | 45 result.BuilderGroups[i] = group |
| 51 } | 46 } |
| 52 | 47 |
| 53 return result, nil | 48 return result, nil |
| 54 } | 49 } |
| OLD | NEW |