    # File lib/fog/aws/models/compute/volume.rb, line 41
            def save
              raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if persisted?
              requires :availability_zone
              requires_one :size, :snapshot_id

              if type == 'io1'
                requires :iops
              end

              data = service.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
                # expect eventual consistency
                Fog.wait_for { self.reload rescue nil }
                for key, value in (self.tags = tags)
                  service.tags.create(
                    :key          => key,
                    :resource_id  => self.identity,
                    :value        => value
                  )
                end
              end

              if @server
                self.server = @server
              end
              true
            end