/** * 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 }
// Create new volume func Create(ec2Ref *ec2.EC2, volume *Volume) (ec2.Volume, error) { options := ec2.CreateVolume{ VolumeType: volume.Type, AvailZone: volume.AvailableZone, } if volume.Size > 0 { options.VolumeSize = volume.Size } if volume.SnapshotID != "" { options.SnapshotId = volume.SnapshotID } if volume.Type == "io1" { options.IOPS = volume.IOPS } resp, err := ec2Ref.CreateVolume(options) if err != nil { return ec2.Volume{}, err } ec2Volume := resp.Volume tags := append(volume.Tags, ec2.Tag{"Name", volume.Name}) _, err = ec2Ref.CreateTags([]string{ec2Volume.Id}, tags) if err != nil { return ec2.Volume{}, err } mergeVolumes(volume, &ec2Volume) err = WaitUntilState(ec2Ref, volume, "available") if err != nil { return ec2.Volume{}, err } return ec2Volume, nil }