initial commit

This commit is contained in:
ston1th 2022-03-13 18:49:27 +01:00
commit 3053f89410
39 changed files with 4567 additions and 0 deletions

64
cmd/cachefs/main.go Normal file
View file

@ -0,0 +1,64 @@
// Copyright (C) 2022 Marius Schellenberger
package main
import (
"context"
"flag"
"net/http"
"os"
"os/signal"
"syscall"
"time"
"cachefs/pkg/fs"
"cachefs/pkg/srv"
"github.com/go-logr/logr"
"k8s.io/klog/v2"
"k8s.io/klog/v2/klogr"
)
var (
version string
src string
dst string
metadata string
listen string
log logr.Logger
)
func main() {
klog.InitFlags(nil)
flag.StringVar(&src, "src", "", "root directory (NFS share)")
flag.StringVar(&dst, "dst", "", "local directory to cache files")
flag.StringVar(&metadata, "data", "", "path to metadata file")
flag.StringVar(&listen, "listen", "127.0.0.1:8080", "listen addr:port")
flag.Parse()
log = klogr.New().WithName("main")
log.Info("starting cachefs", "version", version)
fs, err := fs.NewFS(src, dst, metadata, klogr.New().WithName("fs"))
if err != nil {
klog.Fatalf("init failed: %s", err)
}
s := &http.Server{Addr: listen, Handler: srv.NewFileServer(fs, klogr.New().WithName("server"))}
go func() {
err := s.ListenAndServe()
if err != nil && err != http.ErrServerClosed {
klog.Fatalf("init failed: %s", err)
}
}()
sigs := make(chan os.Signal, 1)
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
<-sigs
log.Info("cachefs shutdown initiated")
ctx, cancel := context.WithTimeout(context.Background(), time.Second*10)
s.Shutdown(ctx)
fs.Close()
cancel()
log.Info("cachefs shutdown completed")
}