in spinnaker/spinnaker.go [432:480]
func (s Spinnaker) asgs(appName, account, clusterName string) (result []spinnakerServerGroup, err error) {
url := s.serverGroupsURL(appName, account, clusterName)
resp, err := s.client.Get(url)
if err != nil {
return nil, fmt.Errorf("failed to retrieve server groups url (%s): %v", url, err)
}
defer func() {
if cerr := resp.Body.Close(); cerr != nil && err == nil {
err = fmt.Errorf("failed to close response body of %s: %v", url, err)
}
}()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, fmt.Errorf("failed to read body of server groups url (%s): body: '%s': %v", url, string(body), err)
}
// Example:
/*
[
{
"name": "abc-prod-v016",
"region": "us-east-1",
"zones": [
"us-east-1c",
"us-east-1d",
"us-east-1e"
],
"disabled": false,
"instances": [
{
"name": "i-f9ffb752",
...
},
...
]
}
]
*/
var asgs []spinnakerServerGroup
err = json.Unmarshal(body, &asgs)
if err != nil {
return nil, fmt.Errorf("failed to parse body of spinnaker asgs url (%s): body: '%s'. %v", url, string(body), err)
}
return asgs, nil
}