def virtual_mfa_devices(options = {})
      batches = Enumerator.new do |y|
        resp = @client.list_virtual_mfa_devices(options)
        resp.each_page do |page|
          batch = []
          page.data.virtual_mfa_devices.each do |v|
            batch << VirtualMfaDevice.new(
              serial_number: v.serial_number,
              data: v,
              client: @client
            )
          end
          y.yield(batch)
        end
      end
      VirtualMfaDevice::Collection.new(batches)
    end
def virtual_mfa_devices(options = {})
      batches = Enumerator.new do |y|
        resp = @client.list_virtual_mfa_devices(options)
        resp.each_page do |page|
          batch = []
          page.data.virtual_mfa_devices.each do |v|
            batch << VirtualMfaDevice.new(
              serial_number: v.serial_number,
              data: v,
              client: @client
            )
          end
          y.yield(batch)
        end
      end
      VirtualMfaDevice::Collection.new(batches)
    end
@example Request syntax with placeholder values

   virtual_mfa_devices = iam.virtual_mfa_devices({
     assignment_status: "Assigned", # accepts Assigned, Unassigned, Any
   })
 @param [Hash] options ({})
 @option options [String] :assignment_status
   The status (`Unassigned` or `Assigned`) of the devices to list. If you
   do not specify an `AssignmentStatus`, the operation defaults to `Any`,
   which lists both assigned and unassigned virtual MFA devices.,
 @return [VirtualMfaDevice::Collection]