Rename packages
Create separate packages for driver, s3 client and mounters.
This commit is contained in:
parent
2b81290a2f
commit
39ebd7e830
16 changed files with 213 additions and 207 deletions
pkg/mounter
58
pkg/mounter/rclone.go
Normal file
58
pkg/mounter/rclone.go
Normal file
|
@ -0,0 +1,58 @@
|
|||
package mounter
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/ctrox/csi-s3/pkg/s3"
|
||||
)
|
||||
|
||||
// Implements Mounter
|
||||
type rcloneMounter struct {
|
||||
bucket *s3.Bucket
|
||||
url string
|
||||
region string
|
||||
accessKeyID string
|
||||
secretAccessKey string
|
||||
}
|
||||
|
||||
const (
|
||||
rcloneCmd = "rclone"
|
||||
)
|
||||
|
||||
func newRcloneMounter(b *s3.Bucket, cfg *s3.Config) (Mounter, error) {
|
||||
return &rcloneMounter{
|
||||
bucket: b,
|
||||
url: cfg.Endpoint,
|
||||
region: cfg.Region,
|
||||
accessKeyID: cfg.AccessKeyID,
|
||||
secretAccessKey: cfg.SecretAccessKey,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (rclone *rcloneMounter) Stage(stageTarget string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (rclone *rcloneMounter) Unstage(stageTarget string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (rclone *rcloneMounter) Mount(source string, target string) error {
|
||||
args := []string{
|
||||
"mount",
|
||||
fmt.Sprintf(":s3:%s/%s", rclone.bucket.Name, rclone.bucket.FSPath),
|
||||
fmt.Sprintf("%s", target),
|
||||
"--daemon",
|
||||
"--s3-provider=AWS",
|
||||
"--s3-env-auth=true",
|
||||
fmt.Sprintf("--s3-region=%s", rclone.region),
|
||||
fmt.Sprintf("--s3-endpoint=%s", rclone.url),
|
||||
"--allow-other",
|
||||
// TODO: make this configurable
|
||||
"--vfs-cache-mode=writes",
|
||||
}
|
||||
os.Setenv("AWS_ACCESS_KEY_ID", rclone.accessKeyID)
|
||||
os.Setenv("AWS_SECRET_ACCESS_KEY", rclone.secretAccessKey)
|
||||
return fuseMount(target, rcloneCmd, args)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue