It is fairly easy if you need to store filer metadata with other data store.
Let's use "yourstore" as the chosen name.
Here are the steps:
- Add a package under github.com/chrislusf/seaweedfs/weed/filer2/yourstore
- Implement the filer2.FilerStore interface
package filer2
import (
"errors"
)
type FilerStore interface {
// GetName gets the name to locate the configuration in filer.toml file
GetName() string
// Initialize initializes the file store
Initialize(configuration Configuration) error
InsertEntry(*Entry) error
UpdateEntry(*Entry) (err error)
FindEntry(FullPath) (entry *Entry, err error)
DeleteEntry(FullPath) (err error)
ListDirectoryEntries(dirPath FullPath, startFileName string, includeStartFile bool, limit int) ([]*Entry, error)
}
- Remember to add yourstore to the list of supported stores
func init() {
filer2.Stores = append(filer2.Stores, &YourStore{})
}
- Load yourstore. Just import it in github.com/chrislusf/seaweedfs/weed/server/filer_server.go
import (
"net/http"
"strconv"
"github.com/chrislusf/seaweedfs/weed/filer2"
_ "github.com/chrislusf/seaweedfs/weed/filer2/cassandra"
_ "github.com/chrislusf/seaweedfs/weed/filer2/leveldb"
_ "github.com/chrislusf/seaweedfs/weed/filer2/mysql"
_ "github.com/chrislusf/seaweedfs/weed/filer2/postgres"
_ "github.com/chrislusf/seaweedfs/weed/filer2/redis"
_ "github.com/chrislusf/seaweedfs/weed/filer2/yourstore"
// ^^ add here
"github.com/chrislusf/seaweedfs/weed/security"
"github.com/chrislusf/seaweedfs/weed/glog"
)
- Send a pull request!