diff options
| author | chrislu <chris.lu@gmail.com> | 2023-01-16 12:40:11 -0800 |
|---|---|---|
| committer | chrislu <chris.lu@gmail.com> | 2023-01-16 12:40:11 -0800 |
| commit | 318c42a3f56acb04f0aff81d782cf69155abada8 (patch) | |
| tree | 3251d8ea8f1c83ac24338a405ee7686dc3a75dae /pkg | |
| parent | b930acc6701771a03f7bf5125f80fa0e820febb1 (diff) | |
| parent | 6ddc2e5d8e14276f4b450b29575e78cdc0979537 (diff) | |
| download | seaweedfs-csi-driver-318c42a3f56acb04f0aff81d782cf69155abada8.tar.xz seaweedfs-csi-driver-318c42a3f56acb04f0aff81d782cf69155abada8.zip | |
Merge branch 'master' of https://github.com/seaweedfs/seaweedfs-csi-driver
Diffstat (limited to 'pkg')
| -rw-r--r-- | pkg/driver/driver.go | 2 | ||||
| -rw-r--r-- | pkg/driver/mounter_seaweedfs.go | 102 |
2 files changed, 51 insertions, 53 deletions
diff --git a/pkg/driver/driver.go b/pkg/driver/driver.go index 00ef2d9..47a55e0 100644 --- a/pkg/driver/driver.go +++ b/pkg/driver/driver.go @@ -39,7 +39,7 @@ type SeaweedFsDriver struct { filerIndex int grpcDialOption grpc.DialOption ConcurrentWriters int - CacheSizeMB int + CacheCapacityMB int CacheDir string UidMap string GidMap string diff --git a/pkg/driver/mounter_seaweedfs.go b/pkg/driver/mounter_seaweedfs.go index a82b10b..51adfdb 100644 --- a/pkg/driver/mounter_seaweedfs.go +++ b/pkg/driver/mounter_seaweedfs.go @@ -41,25 +41,6 @@ func newSeaweedFsMounter(volumeID string, path string, collection string, readOn }, nil } -func (seaweedFs *seaweedFsMounter) getOrDefaultContext(key string, defaultValue string) string { - v, ok := seaweedFs.volContext[key] - if ok { - return v - } - return defaultValue -} - -func (seaweedFs *seaweedFsMounter) getOrDefaultContextInt(key string, defaultValue int) int { - v := seaweedFs.getOrDefaultContext(key, "") - if v != "" { - iv, err := strconv.Atoi(v) - if err == nil { - return iv - } - } - return defaultValue -} - func (seaweedFs *seaweedFsMounter) Mount(target string) (Unmounter, error) { glog.V(0).Infof("mounting %v %s to %s", seaweedFs.driver.filers, seaweedFs.path, target) @@ -68,55 +49,72 @@ func (seaweedFs *seaweedFsMounter) Mount(target string) (Unmounter, error) { filers = append(filers, string(address)) } + // CacheDir should be always defined - we use temp dir in case it is not defined + // we need to use predictable cache path, because we need to clean it up on unstage + cacheDir := filepath.Join(seaweedFs.driver.CacheDir, seaweedFs.volumeID) + + // Final args args := []string{ "-logtostderr=true", "mount", "-dirAutoCreate=true", "-umask=000", fmt.Sprintf("-dir=%s", target), - fmt.Sprintf("-collection=%s", seaweedFs.collection), - fmt.Sprintf("-filer=%s", strings.Join(filers, ",")), - fmt.Sprintf("-filer.path=%s", seaweedFs.path), - fmt.Sprintf("-cacheCapacityMB=%d", seaweedFs.getOrDefaultContextInt("cacheSizeMB", seaweedFs.driver.CacheSizeMB)), fmt.Sprintf("-localSocket=%s", GetLocalSocket(seaweedFs.volumeID)), - } - - // came from https://github.com/seaweedfs/seaweedfs-csi-driver/pull/12 - // preferring explicit settings - // keeping this for backward compatibility - for arg, value := range seaweedFs.volContext { - switch arg { - case "map.uid": - args = append(args, fmt.Sprintf("-map.uid=%s", value)) - case "map.gid": - args = append(args, fmt.Sprintf("-map.gid=%s", value)) - case "replication": - args = append(args, fmt.Sprintf("-replication=%s", value)) - case "diskType": - args = append(args, fmt.Sprintf("-disk=%s", value)) - case "volumeCapacity": - capacityMB := parseVolumeCapacity(value) - args = append(args, fmt.Sprintf("-collectionQuotaMB=%d", capacityMB)) - } + fmt.Sprintf("-cacheDir=%s", cacheDir), } if seaweedFs.readOnly { args = append(args, "-readOnly") } - // CacheDir should be always defined - we use temp dir in case it is not defined - // we need to use predictable cache path, because we need to clean it up on unstage - cacheDir := filepath.Join(seaweedFs.driver.CacheDir, seaweedFs.volumeID) - args = append(args, fmt.Sprintf("-cacheDir=%s", cacheDir)) + // Handle volumeCapacity from controllerserver.go:51 + if value, ok := seaweedFs.volContext["volumeCapacity"]; ok{ + capacityMB := parseVolumeCapacity(value) + args = append(args, fmt.Sprintf("-collectionQuotaMB=%d", capacityMB)) + } - if cw := seaweedFs.getOrDefaultContextInt("concurrentWriters", seaweedFs.driver.ConcurrentWriters); cw > 0 { - args = append(args, fmt.Sprintf("-concurrentWriters=%d", cw)) + // Initial values for override-able args + argsMap := map[string]string { + "collection": seaweedFs.collection, + "filer": strings.Join(filers, ","), + "filer.path": seaweedFs.path, + "cacheCapacityMB": fmt.Sprint(seaweedFs.driver.CacheCapacityMB), + "concurrentWriters": fmt.Sprint(seaweedFs.driver.ConcurrentWriters), + "map.uid": seaweedFs.driver.UidMap, + "map.gid": seaweedFs.driver.GidMap, } - if uidMap := seaweedFs.getOrDefaultContext("uidMap", seaweedFs.driver.UidMap); uidMap != "" { - args = append(args, fmt.Sprintf("-map.uid=%s", uidMap)) + + // volContext-parameter -> mount-arg + parameterArgMap := map[string]string{ + "uidMap": "map.uid", + "gidMap": "map.gid", + "filerPath": "filer.path", + // volumeContext has "diskType", but mount-option is "disk", converting for backwards compatability + "diskType": "disk", + } + + // Merge volContext into argsMap with key-mapping + for arg, value := range seaweedFs.volContext { + if(arg == "volumeCapacity"){ // Ignore volumeCapacity, not the nicest solution like this :/ + continue + } + + // Check if key-mapping exists + newArg, ok := parameterArgMap[arg] + if(ok){ + arg = newArg + } + + // Write to args-map + argsMap[arg] = value } - if gidMap := seaweedFs.getOrDefaultContext("gidMap", seaweedFs.driver.GidMap); gidMap != "" { - args = append(args, fmt.Sprintf("-map.gid=%s", gidMap)) + + // Convert Args-Map to args + for arg, value := range argsMap{ + if(value != ""){ // ignore empty values + args = append(args, fmt.Sprintf("-%s=%s", arg, value)) + } } u, err := fuseMount(target, seaweedFsCmd, args) |
