func listVolumes(client *ec2.EC2, filter *ec2.Filter) ([]string, error) { resp, err := client.Volumes(nil, filter) if err != nil { return nil, err } volumeIds := make([]string, 0, len(resp.Volumes)) for _, vol := range resp.Volumes { var isRootDisk bool for _, att := range vol.Attachments { if att.Device == rootDiskDeviceName { isRootDisk = true break } } if isRootDisk { // We don't want to list root disks in the output. // These are managed by the instance provisioning // code; they will be created and destroyed with // instances. continue } volumeIds = append(volumeIds, vol.Id) } return volumeIds, nil }
func describeVolume(client *ec2.EC2, volumeId string) (*ec2.Volume, error) { resp, err := client.Volumes([]string{volumeId}, nil) if err != nil { return nil, errors.Annotate(err, "querying volume") } if len(resp.Volumes) == 0 { return nil, errors.NotFoundf("%v", volumeId) } else if len(resp.Volumes) != 1 { return nil, errors.Errorf("expected one volume, got %d", len(resp.Volumes)) } return &resp.Volumes[0], nil }
/** * Load a volume passing its Id */ func Load(ec2Ref *ec2.EC2, volume *Volume) (ec2.Volume, error) { if volume.Id == "" { return ec2.Volume{}, errors.New("To load a volume you need to pass its Id") } resp, err := ec2Ref.Volumes([]string{volume.Id}, nil) if err != nil { return ec2.Volume{}, err } else if len(resp.Volumes) == 0 { return ec2.Volume{}, errors.New(fmt.Sprintf("Any volume was found with volume Id <%s>", volume.Id)) } volumeRef := resp.Volumes[0] mergeVolumes(volume, &volumeRef) return volumeRef, nil }
// Load a volume passing its Id func Load(ec2Ref *ec2.EC2, volume *Volume) (ec2.Volume, error) { if volume.ID == "" { return ec2.Volume{}, errors.New("To load a volume you need to pass its Id") } resp, err := ec2Ref.Volumes([]string{volume.ID}, nil) if err != nil { return ec2.Volume{}, err } else if len(resp.Volumes) == 0 { return ec2.Volume{}, fmt.Errorf("Any volume was found with volume Id <%s>", volume.ID) } ec2Volume := resp.Volumes[0] mergeVolumes(volume, &ec2Volume) return ec2Volume, nil }