/** * Create new volume */ func Create(ec2Ref *ec2.EC2, volume *Volume) (ec2.Volume, error) { options := ec2.CreateVolume{ VolumeType: volume.Type, VolumeSize: volume.Size, } if volume.AvailableZone == "" { options.AvailZone = DefaultAvailableZone } if volume.Type == "io1" { options.IOPS = volume.IOPS } resp, err := ec2Ref.CreateVolume(options) if err != nil { return ec2.Volume{}, err } volumeRef := resp.Volume _, err = ec2Ref.CreateTags([]string{volumeRef.Id}, []ec2.Tag{{"Name", volume.Name}}) if err != nil { return ec2.Volume{}, err } mergeVolumes(volume, &volumeRef) err = WaitUntilState(ec2Ref, volume, "available") if err != nil { return ec2.Volume{}, err } return volumeRef, nil }