aboutsummaryrefslogtreecommitdiff
path: root/weed/filer
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-12-10 00:15:22 -0800
committerChris Lu <chris.lu@gmail.com>2020-12-10 00:15:22 -0800
commit765b3ef1beae5418491e338d397a589186ca4458 (patch)
tree3e2a9b6a3a587a8801e08a3a10786cae8b6653e8 /weed/filer
parent97c942b5eefcd01428fc663ff2a2ec1be68812db (diff)
downloadseaweedfs-765b3ef1beae5418491e338d397a589186ca4458.tar.xz
seaweedfs-765b3ef1beae5418491e338d397a589186ca4458.zip
save /etc/iam/identity.json inside filer store
Diffstat (limited to 'weed/filer')
-rw-r--r--weed/filer/entry.go2
-rw-r--r--weed/filer/read_write.go39
2 files changed, 40 insertions, 1 deletions
diff --git a/weed/filer/entry.go b/weed/filer/entry.go
index d2f257967..dbe10c9b1 100644
--- a/weed/filer/entry.go
+++ b/weed/filer/entry.go
@@ -44,7 +44,7 @@ type Entry struct {
}
func (entry *Entry) Size() uint64 {
- return maxUint64(TotalSize(entry.Chunks), entry.FileSize)
+ return maxUint64(maxUint64(TotalSize(entry.Chunks), entry.FileSize), uint64(len(entry.Content)))
}
func (entry *Entry) Timestamp() time.Time {
diff --git a/weed/filer/read_write.go b/weed/filer/read_write.go
index 286b073bf..548473116 100644
--- a/weed/filer/read_write.go
+++ b/weed/filer/read_write.go
@@ -9,6 +9,7 @@ import (
"io/ioutil"
"math"
"net/http"
+ "time"
)
func ReadEntry(masterClient *wdclient.MasterClient, filerClient filer_pb.SeaweedFilerClient, dir, name string, byteBuffer *bytes.Buffer) error {
@@ -71,3 +72,41 @@ func SaveAs(host string, port int, dir, name string, contentType string, byteBuf
return nil
}
+
+func SaveInsideFiler(client filer_pb.SeaweedFilerClient, dir, name string, content []byte) error {
+
+ resp, err := filer_pb.LookupEntry(client, &filer_pb.LookupDirectoryEntryRequest{
+ Directory: dir,
+ Name: name,
+ })
+
+ if err == filer_pb.ErrNotFound {
+ err = filer_pb.CreateEntry(client, &filer_pb.CreateEntryRequest{
+ Directory: dir,
+ Entry: &filer_pb.Entry{
+ Name: name,
+ IsDirectory: false,
+ Attributes: &filer_pb.FuseAttributes{
+ Mtime: time.Now().Unix(),
+ Crtime: time.Now().Unix(),
+ FileMode: uint32(0644),
+ Collection: "",
+ Replication: "",
+ FileSize: uint64(len(content)),
+ },
+ Content: content,
+ },
+ })
+ } else if err == nil {
+ entry := resp.Entry
+ entry.Content = content
+ entry.Attributes.Mtime = time.Now().Unix()
+ entry.Attributes.FileSize = uint64(len(content))
+ err = filer_pb.UpdateEntry(client, &filer_pb.UpdateEntryRequest{
+ Directory: dir,
+ Entry: entry,
+ })
+ }
+
+ return err
+} \ No newline at end of file