kubelwagen/fuse.go

36 lines
845 B
Go

package kubelwagen
import (
"github.com/hanwen/go-fuse/fuse"
"github.com/hanwen/go-fuse/fuse/nodefs"
"github.com/sirupsen/logrus"
)
func serveFuse(dir string, req chan RequestCallback, opts WsFsOpts, closer chan bool) error {
nfs := NewWsFs(opts, req, closer)
mountOpts := mkMountOpts(opts)
conn := nodefs.NewFileSystemConnector(nfs.Root(), &nodefs.Options{})
server, err := fuse.NewServer(conn.RawFS(), dir, mountOpts)
if err != nil {
logrus.Fatalln("cannot mount:", err)
}
defer server.Unmount()
go server.Serve()
<-closer
return nil
}
func mkMountOpts(opts WsFsOpts) *fuse.MountOptions {
var fusermountopts []string
if opts.NonEmpty {
fusermountopts = append(fusermountopts, "nonempty")
}
mountOpts := &fuse.MountOptions{
Options: fusermountopts,
FsName: "kubelwagen",
Name: "wsfs",
}
return mountOpts
}