53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package storagesvc
|
|
|
|
import (
|
|
"os"
|
|
|
|
"github.com/fission/fission/pkg/utils/uuid"
|
|
"github.com/graymeta/stow"
|
|
_ "github.com/graymeta/stow/local"
|
|
)
|
|
|
|
type localStorage struct {
|
|
storageType StorageType
|
|
containerName string
|
|
localPath string
|
|
}
|
|
|
|
// NewLocalStorage return new local storage struct
|
|
func NewLocalStorage(localPath string) Storage {
|
|
subdir := os.Getenv("SUBDIR")
|
|
if len(subdir) == 0 {
|
|
subdir = "fission-functions"
|
|
}
|
|
return localStorage{
|
|
storageType: StorageTypeLocal,
|
|
containerName: subdir,
|
|
localPath: localPath,
|
|
}
|
|
}
|
|
|
|
// Local
|
|
func (ls localStorage) getStorageType() StorageType {
|
|
return ls.storageType
|
|
}
|
|
|
|
func (ls localStorage) getUploadFileName() (string, error) {
|
|
// This is not the item ID (that's returned by Put)
|
|
// should we just use handler.Filename? what are the constraints here?
|
|
return uuid.NewString(), nil
|
|
}
|
|
|
|
func (ls localStorage) getSubDir() string {
|
|
return ""
|
|
}
|
|
|
|
func (ls localStorage) getContainerName() string {
|
|
return ls.containerName
|
|
}
|
|
|
|
func (ls localStorage) dial() (stow.Location, error) {
|
|
cfg := stow.ConfigMap{"path": ls.localPath}
|
|
return stow.Dial("local", cfg)
|
|
}
|