switch to config file and implement src path filter

This commit is contained in:
ston1th 2022-10-07 22:57:54 +02:00
commit a6b9602821
30 changed files with 11907 additions and 60 deletions

View file

@ -3,6 +3,7 @@
package fs
import (
"cachefs/pkg/config"
"cachefs/pkg/provider"
"cachefs/pkg/provider/parse"
"context"
@ -12,6 +13,7 @@ import (
stdfs "io/fs"
"net/http"
"os"
"regexp"
"strconv"
"strings"
@ -33,7 +35,22 @@ type FS struct {
ph *PreloadHandler
}
func NewFS(quota int64, max int, src, srckey, dst, dstkey, metadata string, block bool, log logr.Logger) (fs *FS, err error) {
func NewFSFromConfig(cfg *config.Config, log logr.Logger) (fs *FS, err error) {
c := cfg.Cache
return NewFS(
c.Quota,
c.Preloads,
c.Src.Path,
c.Src.Key,
c.Dst.Path,
c.Dst.Key,
c.Metadata,
cfg.REPath,
*c.BlockSFTP,
log,
)
}
func NewFS(quota int64, max int, src, srckey, dst, dstkey, metadata string, re *regexp.Regexp, block bool, log logr.Logger) (fs *FS, err error) {
if src == dst {
return nil, errors.New("src and dst path can not be equal")
}
@ -52,11 +69,11 @@ func NewFS(quota int64, max int, src, srckey, dst, dstkey, metadata string, bloc
}
log.V(2).Info("using destination encryption")
}
srcfs, err := parse.FS(src, srck, block)
srcfs, err := parse.FS(src, srck, re, block)
if err != nil {
return nil, fmt.Errorf("srcfs: %w", err)
}
dstfs, err := parse.FS(dst, dstk, block)
dstfs, err := parse.FS(dst, dstk, nil, block)
if err != nil {
return nil, fmt.Errorf("dstfs: %w", err)
}