aboutsummaryrefslogtreecommitdiff
path: root/pkg/driver/mounter_seaweedfs.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/driver/mounter_seaweedfs.go')
-rw-r--r--pkg/driver/mounter_seaweedfs.go22
1 files changed, 21 insertions, 1 deletions
diff --git a/pkg/driver/mounter_seaweedfs.go b/pkg/driver/mounter_seaweedfs.go
index 16d97c8..0fc4281 100644
--- a/pkg/driver/mounter_seaweedfs.go
+++ b/pkg/driver/mounter_seaweedfs.go
@@ -7,6 +7,7 @@ import (
"strconv"
"strings"
+ "github.com/seaweedfs/seaweedfs-csi-driver/pkg/datalocality"
"github.com/seaweedfs/seaweedfs/weed/glog"
"github.com/seaweedfs/seaweedfs/weed/util"
)
@@ -93,6 +94,24 @@ func (seaweedFs *seaweedFsMounter) Mount(target string) (Unmounter, error) {
"readRetryTime": "",
}
+ // Handle DataLocality
+ dataLocality := seaweedFs.driver.DataLocality;
+ // Try to override when set in context
+ if dataLocalityStr, ok := seaweedFs.volContext["dataLocality"]; ok{
+ // Convert to enum
+ dataLocalityRes, ok := datalocality.FromString(dataLocalityStr)
+ if(!ok){
+ glog.Warning("volumeContext 'dataLocality' invalid");
+ }else{
+ dataLocality = dataLocalityRes
+ }
+ }
+ // Settings based on type
+ switch(dataLocality){
+ case datalocality.Write_preferLocalDc:
+ argsMap["dataCenter"] = seaweedFs.driver.DataCenter;
+ }
+
// volContext-parameter -> mount-arg
parameterArgMap := map[string]string{
"uidMap": "map.uid",
@@ -101,10 +120,11 @@ func (seaweedFs *seaweedFsMounter) Mount(target string) (Unmounter, error) {
// volumeContext has "diskType", but mount-option is "disk", converting for backwards compatability
"diskType": "disk",
}
-
+
// Explicitly ignored volContext args e.g. handled somewhere else
ignoreArgs := []string{
"volumeCapacity",
+ "dataLocality",
}
// Merge volContext into argsMap with key-mapping