def save
raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if identity
requires :availability_zone
requires_one :size, :snapshot_id
if type == 'io1'
requires :iops
end
data = connection.create_volume(availability_zone, size, 'SnapshotId' => snapshot_id, 'VolumeType' => type, 'Iops' => iops).body
new_attributes = data.reject {|key,value| key == 'requestId'}
merge_attributes(new_attributes)
if tags = self.tags
Fog.wait_for { self.reload rescue nil }
for key, value in (self.tags = tags)
connection.tags.create(
:key => key,
:resource_id => self.identity,
:value => value
)
end
end
if @server
self.server = @server
end
true
end