in spinnaker/spinnaker.go [552:593]
func (s Spinnaker) GetClusterNames(app string, account D.AccountName) (clusters []D.ClusterName, err error) {
url := s.appURL(app)
resp, err := s.client.Get(url)
if err != nil {
return nil, errors.Wrapf(err, "http get failed at %s", url)
}
defer func() {
if cerr := resp.Body.Close(); cerr != nil && err == nil {
err = errors.Wrapf(err, "body close failed at %s", url)
}
}()
if resp.StatusCode != http.StatusOK {
return nil, errors.Errorf("unexpected response code (%d) from %s", resp.StatusCode, url)
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, errors.Wrap(err, fmt.Sprintf("body read failed at %s", url))
}
var pcl struct {
Clusters map[D.AccountName][]struct {
Name D.ClusterName
}
}
err = json.Unmarshal(body, &pcl)
if err != nil {
return nil, errors.Wrapf(err, "failed to parse json at %s", url)
}
cls := pcl.Clusters[account]
clusters = make([]D.ClusterName, len(cls))
for i, cl := range cls {
clusters[i] = cl.Name
}
return clusters, nil
}