diff options
| author | chrislusf <chris.lu@gmail.com> | 2025-12-05 18:44:43 -0800 |
|---|---|---|
| committer | Chris Lu <chrislusf@users.noreply.github.com> | 2025-12-06 18:53:22 -0800 |
| commit | f292fb147fb04f857596a0c7bd2ddfef788e52e2 (patch) | |
| tree | 46acc28e48c10bd9967b6147227e0b8f2c1791e2 /pkg/driver | |
| parent | d9a69c414e5050183df1e3174553a931e8dae064 (diff) | |
| download | seaweedfs-csi-driver-f292fb147fb04f857596a0c7bd2ddfef788e52e2.tar.xz seaweedfs-csi-driver-f292fb147fb04f857596a0c7bd2ddfef788e52e2.zip | |
fix: address code review feedback
- CRITICAL: Make socket path configurable based on mountEndpoint
- Added volumeSocketDir field to SeaweedFsDriver
- LocalSocketPath now accepts baseDir parameter
- Derived from mountEndpoint for user-configurable socket paths
- HIGH: Pin seaweedfs version in Dockerfiles for reproducible builds
- Added SEAWEEDFS_VERSION build arg (default: 3.80)
- Clone specific tag instead of master
- HIGH: Fix Dockerfile.dev to use local context instead of personal fork
- Removed hardcoded zemul/seaweedfs-csi-driver clone
- Now uses COPY . . for local development
- HIGH: Change :latest to :dev in kubernetes manifests
- Mutable :latest tag replaced with :dev for predictability
- MEDIUM: Remove Aliyun mirror from Dockerfile.dev
- Region-specific mirrors shouldn't be in general-purpose files
- MEDIUM: Improve error handling in client.go
- Now reports read errors when failing to read error response body
- MEDIUM: Fix inconsistent error return in manager.go
- Return nil instead of empty struct on error (Go idiom)
Diffstat (limited to 'pkg/driver')
| -rw-r--r-- | pkg/driver/driver.go | 33 | ||||
| -rw-r--r-- | pkg/driver/mounter.go | 2 | ||||
| -rw-r--r-- | pkg/driver/volume.go | 2 |
3 files changed, 25 insertions, 12 deletions
diff --git a/pkg/driver/driver.go b/pkg/driver/driver.go index d162369..6bdcc3b 100644 --- a/pkg/driver/driver.go +++ b/pkg/driver/driver.go @@ -4,10 +4,12 @@ import ( "fmt" "os" "os/signal" + "path/filepath" "syscall" "github.com/container-storage-interface/spec/lib/go/csi" "github.com/seaweedfs/seaweedfs-csi-driver/pkg/datalocality" + "github.com/seaweedfs/seaweedfs-csi-driver/pkg/mountmanager" "github.com/seaweedfs/seaweedfs/weed/glog" "github.com/seaweedfs/seaweedfs/weed/pb" "github.com/seaweedfs/seaweedfs/weed/pb/filer_pb" @@ -27,8 +29,9 @@ type SeaweedFsDriver struct { nodeID string version string - endpoint string - mountEndpoint string + endpoint string + mountEndpoint string + volumeSocketDir string // directory for volume sockets, derived from mountEndpoint vcap []*csi.VolumeCapability_AccessMode cscap []*csi.ControllerServiceCapability @@ -55,15 +58,25 @@ func NewSeaweedFsDriver(name, filer, nodeID, endpoint, mountEndpoint string, ena util.LoadConfiguration("security", false) + // Derive volumeSocketDir from mountEndpoint + volumeSocketDir := mountmanager.DefaultSocketDir + if mountEndpoint != "" { + _, address, err := mountmanager.ParseEndpoint(mountEndpoint) + if err == nil && address != "" { + volumeSocketDir = filepath.Dir(address) + } + } + n := &SeaweedFsDriver{ - endpoint: endpoint, - mountEndpoint: mountEndpoint, - nodeID: nodeID, - name: name, - version: version, - filers: pb.ServerAddresses(filer).ToAddresses(), - grpcDialOption: security.LoadClientTLS(util.GetViper(), "grpc.client"), - signature: util.RandomInt32(), + endpoint: endpoint, + mountEndpoint: mountEndpoint, + volumeSocketDir: volumeSocketDir, + nodeID: nodeID, + name: name, + version: version, + filers: pb.ServerAddresses(filer).ToAddresses(), + grpcDialOption: security.LoadClientTLS(util.GetViper(), "grpc.client"), + signature: util.RandomInt32(), } n.AddVolumeCapabilityAccessModes([]csi.VolumeCapability_AccessMode_Mode{ diff --git a/pkg/driver/mounter.go b/pkg/driver/mounter.go index d86d82e..b96f4b8 100644 --- a/pkg/driver/mounter.go +++ b/pkg/driver/mounter.go @@ -68,7 +68,7 @@ func (m *mountServiceMounter) Mount(target string) (Unmounter, error) { cacheBase = os.TempDir() } cacheDir := filepath.Join(cacheBase, m.volumeID) - localSocket := mountmanager.LocalSocketPath(m.volumeID) + localSocket := mountmanager.LocalSocketPath(m.driver.volumeSocketDir, m.volumeID) args, err := m.buildMountArgs(target, cacheDir, localSocket, filers) if err != nil { diff --git a/pkg/driver/volume.go b/pkg/driver/volume.go index 9e258a8..18d5c2a 100644 --- a/pkg/driver/volume.go +++ b/pkg/driver/volume.go @@ -29,7 +29,7 @@ func NewVolume(volumeID string, mounter Mounter, driver *SeaweedFsDriver) *Volum return &Volume{ VolumeId: volumeID, mounter: mounter, - localSocket: mountmanager.LocalSocketPath(volumeID), + localSocket: mountmanager.LocalSocketPath(driver.volumeSocketDir, volumeID), driver: driver, } } |
