Example #1
0
// Volumes is a wrapper for (*ec2.EC2).DescribeVolumesPages.
func (c *Client) Volumes() ([]*ec2.Volume, error) {
	var volumes []*ec2.Volume
	var params ec2.DescribeVolumesInput
	if c.MaxResults != 0 {
		params.MaxResults = aws.Int64(c.MaxResults)
	}
	var page int
	err := c.EC2.DescribeVolumesPages(&params, func(resp *ec2.DescribeVolumesOutput, _ bool) bool {
		page++
		c.Log.Debug("received %d volumes (page=%d)", len(resp.Volumes), page)
		volumes = append(volumes, resp.Volumes...)
		return true
	})
	if err != nil {
		return nil, awsError(err)
	}
	if len(volumes) == 0 {
		return nil, newNotFoundError("Volume", errors.New("no volume found"))
	}
	return volumes, nil
}