# File lib/fog/libvirt/models/compute/volumes.rb, line 12
        def all(filter=nil)
          data=[]
          if filter.nil?
            connection.raw.list_storage_pools.each do |poolname|
              pool=connection.raw.lookup_storage_pool_by_name(poolname)
              pool.list_volumes.each do |volumename|
                data << { :raw => pool.lookup_volume_by_name(volumename) }
              end
            end
          else
            volume=nil
            begin
              volume=self.get_by_name(filter[:name]) if filter.has_key?(:name)
              volume=self.get_by_key(filter[:key]) if filter.has_key?(:key)
              volume=self.get_by_path(filter[:path]) if filter.has_key?(:path)
              return nil if volume.nil?

            rescue ::Libvirt::RetrieveError
              return nil
            end
            data << { :raw => volume}
          end

          load(data)
        end