diff options
Diffstat (limited to 'weed/s3api/filer_util.go')
| -rw-r--r-- | weed/s3api/filer_util.go | 44 |
1 files changed, 39 insertions, 5 deletions
diff --git a/weed/s3api/filer_util.go b/weed/s3api/filer_util.go index a44305505..f0949389c 100644 --- a/weed/s3api/filer_util.go +++ b/weed/s3api/filer_util.go @@ -34,7 +34,7 @@ func (s3a *S3ApiServer) mkdir(parentDirectoryPath string, dirName string, fn fun Entry: entry, } - glog.V(1).Infof("create bucket: %v", request) + glog.V(1).Infof("mkdir: %v", request) if _, err := client.CreateEntry(context.Background(), request); err != nil { return fmt.Errorf("mkdir %s/%s: %v", parentDirectoryPath, dirName, err) } @@ -43,12 +43,46 @@ func (s3a *S3ApiServer) mkdir(parentDirectoryPath string, dirName string, fn fun }) } -func (s3a *S3ApiServer) list(parentDirectoryPath string) (entries []*filer_pb.Entry, err error) { +func (s3a *S3ApiServer) mkFile(parentDirectoryPath string, fileName string, chunks []*filer_pb.FileChunk) error { + return s3a.withFilerClient(func(client filer_pb.SeaweedFilerClient) error { + + entry := &filer_pb.Entry{ + Name: fileName, + IsDirectory: false, + Attributes: &filer_pb.FuseAttributes{ + Mtime: time.Now().Unix(), + Crtime: time.Now().Unix(), + FileMode: uint32(0770), + Uid: OS_UID, + Gid: OS_GID, + }, + Chunks: chunks, + } + + request := &filer_pb.CreateEntryRequest{ + Directory: parentDirectoryPath, + Entry: entry, + } + + glog.V(1).Infof("create file: %s/%s", parentDirectoryPath, fileName) + if _, err := client.CreateEntry(context.Background(), request); err != nil { + return fmt.Errorf("create file %s/%s: %v", parentDirectoryPath, fileName, err) + } + + return nil + }) +} + +func (s3a *S3ApiServer) list(parentDirectoryPath, prefix, startFrom string, inclusive bool, limit int) (entries []*filer_pb.Entry, err error) { err = s3a.withFilerClient(func(client filer_pb.SeaweedFilerClient) error { request := &filer_pb.ListEntriesRequest{ - Directory: s3a.option.BucketsPath, + Directory: s3a.option.BucketsPath, + Prefix: prefix, + StartFromFileName: startFrom, + InclusiveStartFrom: inclusive, + Limit: uint32(limit), } glog.V(4).Infof("read directory: %v", request) @@ -101,10 +135,10 @@ func (s3a *S3ApiServer) exists(parentDirectoryPath string, entryName string, isD Name: entryName, } - glog.V(1).Infof("delete entry %v/%v: %v", parentDirectoryPath, entryName, request) + glog.V(1).Infof("exists entry %v/%v: %v", parentDirectoryPath, entryName, request) resp, err := client.LookupDirectoryEntry(ctx, request) if err != nil { - return fmt.Errorf("delete entry %s/%s: %v", parentDirectoryPath, entryName, err) + return fmt.Errorf("exists entry %s/%s: %v", parentDirectoryPath, entryName, err) } exists = resp.Entry.IsDirectory == isDirectory |
