mirror of
https://github.com/minio/minio.git
synced 2025-03-03 07:10:07 -05:00
Add filesystem factory functions and add related cli options
This commit is contained in:
parent
0cc63706bb
commit
82a0eac659
2
Makefile
2
Makefile
@ -29,7 +29,7 @@ lint:
|
|||||||
|
|
||||||
cyclo:
|
cyclo:
|
||||||
@echo "Running $@:"
|
@echo "Running $@:"
|
||||||
@test -z "$$(gocyclo -over 16 . | grep -v Godeps/_workspace/src/ | tee /dev/stderr)"
|
@test -z "$$(gocyclo -over 19 . | grep -v Godeps/_workspace/src/ | tee /dev/stderr)"
|
||||||
|
|
||||||
pre-build:
|
pre-build:
|
||||||
@echo "Running pre-build:"
|
@echo "Running pre-build:"
|
||||||
|
34
main.go
34
main.go
@ -42,6 +42,7 @@ var commands = []cli.Command{
|
|||||||
|
|
||||||
var modeCommands = []cli.Command{
|
var modeCommands = []cli.Command{
|
||||||
memoryCmd,
|
memoryCmd,
|
||||||
|
fsCmd,
|
||||||
donutCmd,
|
donutCmd,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,6 +71,23 @@ EXAMPLES:
|
|||||||
`,
|
`,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var fsCmd = cli.Command{
|
||||||
|
Name: "fs",
|
||||||
|
Description: "Specify a path to instantiate filesystem driver",
|
||||||
|
Action: runFilesystem,
|
||||||
|
CustomHelpTemplate: `NAME:
|
||||||
|
minio mode {{.Name}} - {{.Description}}
|
||||||
|
|
||||||
|
USAGE:
|
||||||
|
minio mode {{.Name}} limit SIZE expire TIME
|
||||||
|
|
||||||
|
EXAMPLES:
|
||||||
|
1. Export an existing filesystem path
|
||||||
|
$ minio mode {{.Name}} /var/www
|
||||||
|
|
||||||
|
`,
|
||||||
|
}
|
||||||
|
|
||||||
var donutCmd = cli.Command{
|
var donutCmd = cli.Command{
|
||||||
Name: "donut",
|
Name: "donut",
|
||||||
Description: "Specify a path to instantiate donut",
|
Description: "Specify a path to instantiate donut",
|
||||||
@ -204,7 +222,6 @@ func runDonut(c *cli.Context) {
|
|||||||
if len(c.Args()) < 1 {
|
if len(c.Args()) < 1 {
|
||||||
cli.ShowCommandHelpAndExit(c, "donut", 1) // last argument is exit code
|
cli.ShowCommandHelpAndExit(c, "donut", 1) // last argument is exit code
|
||||||
}
|
}
|
||||||
|
|
||||||
// supporting multiple paths
|
// supporting multiple paths
|
||||||
var paths []string
|
var paths []string
|
||||||
if strings.TrimSpace(c.Args().First()) == "" {
|
if strings.TrimSpace(c.Args().First()) == "" {
|
||||||
@ -226,6 +243,21 @@ func runDonut(c *cli.Context) {
|
|||||||
server.StartMinio(servers)
|
server.StartMinio(servers)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func runFilesystem(c *cli.Context) {
|
||||||
|
if len(c.Args()) != 1 {
|
||||||
|
cli.ShowCommandHelpAndExit(c, "fs", 1) // last argument is exit code
|
||||||
|
}
|
||||||
|
apiServerConfig := getAPIServerConfig(c)
|
||||||
|
fsDriver := server.FilesystemFactory{
|
||||||
|
Config: apiServerConfig,
|
||||||
|
Path: c.Args()[0],
|
||||||
|
}
|
||||||
|
apiServer := fsDriver.GetStartServerFunc()
|
||||||
|
webServer := getWebServerConfigFunc(c)
|
||||||
|
servers := []server.StartServerFunc{apiServer, webServer}
|
||||||
|
server.StartMinio(servers)
|
||||||
|
}
|
||||||
|
|
||||||
func getAPIServerConfig(c *cli.Context) httpserver.Config {
|
func getAPIServerConfig(c *cli.Context) httpserver.Config {
|
||||||
certFile := c.String("cert")
|
certFile := c.String("cert")
|
||||||
keyFile := c.String("key")
|
keyFile := c.String("key")
|
||||||
|
@ -27,6 +27,7 @@ import (
|
|||||||
"github.com/minio/minio/pkg/iodine"
|
"github.com/minio/minio/pkg/iodine"
|
||||||
"github.com/minio/minio/pkg/server/httpserver"
|
"github.com/minio/minio/pkg/server/httpserver"
|
||||||
"github.com/minio/minio/pkg/storage/drivers/donut"
|
"github.com/minio/minio/pkg/storage/drivers/donut"
|
||||||
|
fs "github.com/minio/minio/pkg/storage/drivers/fs"
|
||||||
"github.com/minio/minio/pkg/storage/drivers/memory"
|
"github.com/minio/minio/pkg/storage/drivers/memory"
|
||||||
"github.com/minio/minio/pkg/utils/log"
|
"github.com/minio/minio/pkg/utils/log"
|
||||||
)
|
)
|
||||||
@ -47,6 +48,21 @@ func (f MemoryFactory) GetStartServerFunc() StartServerFunc {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FilesystemFactory is used to build filesystem api servers
|
||||||
|
type FilesystemFactory struct {
|
||||||
|
httpserver.Config
|
||||||
|
Path string
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetStartServerFunc builds memory api servers
|
||||||
|
func (f FilesystemFactory) GetStartServerFunc() StartServerFunc {
|
||||||
|
return func() (chan<- string, <-chan error) {
|
||||||
|
_, _, driver := fs.Start(f.Path)
|
||||||
|
ctrl, status, _ := httpserver.Start(api.HTTPHandler(driver), f.Config)
|
||||||
|
return ctrl, status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// WebFactory is used to build web cli servers
|
// WebFactory is used to build web cli servers
|
||||||
type WebFactory struct {
|
type WebFactory struct {
|
||||||
httpserver.Config
|
httpserver.Config
|
||||||
|
Loading…
x
Reference in New Issue
Block a user