aboutsummaryrefslogtreecommitdiff
path: root/weed/filesys/wfs.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2021-01-24 19:01:58 -0800
committerChris Lu <chris.lu@gmail.com>2021-01-24 19:01:58 -0800
commit00707ec00fb8016ac9ef8858a01a9784a6aee1a0 (patch)
treedfe313d9fead4bcdf741e52f7b6316d2da00d71b /weed/filesys/wfs.go
parent2c5eac5705c12b4dc0930d0a27478a73924b9e16 (diff)
downloadseaweedfs-00707ec00fb8016ac9ef8858a01a9784a6aee1a0.tar.xz
seaweedfs-00707ec00fb8016ac9ef8858a01a9784a6aee1a0.zip
mount: outsideContainerClusterMode proxy through filer
Running mount outside of the cluster would not need to expose all the volume servers to outside of the cluster. The chunk read and write will go through the filer.
Diffstat (limited to 'weed/filesys/wfs.go')
-rw-r--r--weed/filesys/wfs.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/weed/filesys/wfs.go b/weed/filesys/wfs.go
index cd14e8032..236ecdacb 100644
--- a/weed/filesys/wfs.go
+++ b/weed/filesys/wfs.go
@@ -3,6 +3,8 @@ package filesys
import (
"context"
"fmt"
+ "github.com/chrislusf/seaweedfs/weed/filer"
+ "github.com/chrislusf/seaweedfs/weed/wdclient"
"math"
"os"
"path"
@@ -24,6 +26,7 @@ import (
)
type Option struct {
+ FilerAddress string
FilerGrpcAddress string
GrpcDialOption grpc.DialOption
FilerMountRootPath string
@@ -237,3 +240,13 @@ func (wfs *WFS) mapPbIdFromLocalToFiler(entry *filer_pb.Entry) {
}
entry.Attributes.Uid, entry.Attributes.Gid = wfs.option.UidGidMapper.LocalToFiler(entry.Attributes.Uid, entry.Attributes.Gid)
}
+
+func (wfs *WFS) LookupFn() wdclient.LookupFileIdFunctionType {
+ if wfs.option.OutsideContainerClusterMode {
+ return func(fileId string) (targetUrls []string, err error) {
+ return []string{"http://" + wfs.option.FilerAddress + "/?proxyChunkId=" + fileId}, nil
+ }
+ }
+ return filer.LookupFn(wfs)
+
+}