diff --git a/cmd/erasure-demo/erasure.go b/cmd/erasure-demo/erasure.go index 6c6004288..18acc8c5b 100644 --- a/cmd/erasure-demo/erasure.go +++ b/cmd/erasure-demo/erasure.go @@ -11,14 +11,14 @@ import ( es "github.com/minio-io/minio/pkgs/storage/encodedstorage" ) -func erasureGetList(config inputConfig) (io.Reader, error) { +func erasureGetList(config inputConfig, objectPath string) (io.Reader, error) { var objectStorage storage.ObjectStorage rootDir := path.Join(config.rootDir, config.storageDriver) objectStorage, err := es.NewStorage(rootDir, config.k, config.m, config.blockSize) if err != nil { return nil, err } - objectDescList, err := objectStorage.List() + objectDescList, err := objectStorage.List(objectPath) if err != nil { return nil, err } diff --git a/cmd/erasure-demo/get.go b/cmd/erasure-demo/get.go index 0d96cae59..991c5a09e 100644 --- a/cmd/erasure-demo/get.go +++ b/cmd/erasure-demo/get.go @@ -20,7 +20,7 @@ func get(c *cli.Context) { case "erasure": { if len(objectName) == 0 { - if objectReader, err = erasureGetList(config); err != nil { + if objectReader, err = erasureGetList(config, ""); err != nil { log.Fatal(err) } } else { diff --git a/pkgs/storage/appendstorage/append_storage.go b/pkgs/storage/appendstorage/append_storage.go index fbf570ecd..97f15e43c 100644 --- a/pkgs/storage/appendstorage/append_storage.go +++ b/pkgs/storage/appendstorage/append_storage.go @@ -25,6 +25,7 @@ import ( "os" "path" "strconv" + "strings" "github.com/minio-io/minio/pkgs/checksum/crc32c" "github.com/minio-io/minio/pkgs/storage" @@ -133,14 +134,16 @@ func (aStorage *appendStorage) Put(objectPath string, object io.Reader) error { return nil } -func (aStorage *appendStorage) List() ([]storage.ObjectDescription, error) { +func (aStorage *appendStorage) List(objectPath string) ([]storage.ObjectDescription, error) { var objectDescList []storage.ObjectDescription for objectName, _ := range aStorage.objects { - var objectDescription storage.ObjectDescription - objectDescription.Name = objectName - objectDescription.Md5sum = "" - objectDescription.Murmur3 = "" - objectDescList = append(objectDescList, objectDescription) + if strings.HasPrefix(objectName, objectPath) { + var objectDescription storage.ObjectDescription + objectDescription.Name = objectName + objectDescription.Md5sum = "" + objectDescription.Murmur3 = "" + objectDescList = append(objectDescList, objectDescription) + } } if len(objectDescList) == 0 { return nil, errors.New("No objects found") diff --git a/pkgs/storage/encodedstorage/encoded_storage.go b/pkgs/storage/encodedstorage/encoded_storage.go index eb180664e..cc00f60f1 100644 --- a/pkgs/storage/encodedstorage/encoded_storage.go +++ b/pkgs/storage/encodedstorage/encoded_storage.go @@ -27,6 +27,7 @@ import ( "os" "path" "strconv" + "strings" "github.com/minio-io/minio/pkgs/erasure" "github.com/minio-io/minio/pkgs/split" @@ -116,15 +117,16 @@ func (eStorage *encodedStorage) Get(objectPath string) (io.Reader, error) { return reader, nil } -func (eStorage *encodedStorage) List() ([]storage.ObjectDescription, error) { +func (eStorage *encodedStorage) List(objectPath string) ([]storage.ObjectDescription, error) { var objectDescList []storage.ObjectDescription for objectName, objectEntry := range eStorage.objects { - var objectDescription storage.ObjectDescription - //protectionLevel := strconv.Itoa(objectEntry.Encoderparams.K) + "," + strconv.Itoa(objectEntry.Encoderparams.M) - objectDescription.Name = objectName - objectDescription.Md5sum = hex.EncodeToString(objectEntry.Md5sum) - objectDescription.Murmur3 = strconv.FormatUint(objectEntry.Murmurhash, 16) - objectDescList = append(objectDescList, objectDescription) + if strings.HasPrefix(objectName, objectPath) { + var objectDescription storage.ObjectDescription + objectDescription.Name = objectName + objectDescription.Md5sum = hex.EncodeToString(objectEntry.Md5sum) + objectDescription.Murmur3 = strconv.FormatUint(objectEntry.Murmurhash, 16) + objectDescList = append(objectDescList, objectDescription) + } } if len(objectDescList) == 0 { return nil, errors.New("No objects found") diff --git a/pkgs/storage/encodedstorage/encoded_storage_test.go b/pkgs/storage/encodedstorage/encoded_storage_test.go index 9b235b0a6..9fb3581dd 100644 --- a/pkgs/storage/encodedstorage/encoded_storage_test.go +++ b/pkgs/storage/encodedstorage/encoded_storage_test.go @@ -35,7 +35,7 @@ func (s *EncodedStorageSuite) TestFileStoragePutAtRootPath(c *C) { object1, _ := ioutil.ReadAll(objectResult1) c.Assert(string(object1), Equals, "object1") - objectList, err := objectStorage.List() + objectList, err := objectStorage.List("") c.Assert(err, IsNil) c.Assert(objectList[0].Name, Equals, "path1") } diff --git a/pkgs/storage/storage.go b/pkgs/storage/storage.go index a70058486..db740fa3d 100644 --- a/pkgs/storage/storage.go +++ b/pkgs/storage/storage.go @@ -3,7 +3,7 @@ package storage import "io" type ObjectStorage interface { - List() ([]ObjectDescription, error) + List(objectPath string) ([]ObjectDescription, error) Get(path string) (io.Reader, error) Put(path string, object io.Reader) error }