add "weed scaffold" command
This commit is contained in:
@@ -19,6 +19,7 @@ var Commands = []*Command{
|
|||||||
cmdS3,
|
cmdS3,
|
||||||
cmdUpload,
|
cmdUpload,
|
||||||
cmdDownload,
|
cmdDownload,
|
||||||
|
cmdScaffold,
|
||||||
cmdShell,
|
cmdShell,
|
||||||
cmdVersion,
|
cmdVersion,
|
||||||
cmdVolume,
|
cmdVolume,
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/chrislusf/seaweedfs/weed/filer2"
|
|
||||||
"github.com/chrislusf/seaweedfs/weed/glog"
|
"github.com/chrislusf/seaweedfs/weed/glog"
|
||||||
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
|
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
|
||||||
"github.com/chrislusf/seaweedfs/weed/server"
|
"github.com/chrislusf/seaweedfs/weed/server"
|
||||||
@@ -68,9 +67,9 @@ var cmdFiler = &Command{
|
|||||||
|
|
||||||
The configuration file "filer.toml" is read from ".", "$HOME/.seaweedfs/", or "/etc/seaweedfs/", in that order.
|
The configuration file "filer.toml" is read from ".", "$HOME/.seaweedfs/", or "/etc/seaweedfs/", in that order.
|
||||||
|
|
||||||
The following are example filer.toml configuration file.
|
The example filer.toml configuration file can be generated by "weed scaffold filer"
|
||||||
|
|
||||||
` + filer2.FILER_TOML_EXAMPLE + "\n",
|
`,
|
||||||
}
|
}
|
||||||
|
|
||||||
func runFiler(cmd *Command, args []string) bool {
|
func runFiler(cmd *Command, args []string) bool {
|
||||||
|
|||||||
@@ -1,4 +1,50 @@
|
|||||||
# An example TOML config file for SeaweedFS filer store
|
package command
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io/ioutil"
|
||||||
|
"path/filepath"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
cmdScaffold.Run = runScaffold // break init cycle
|
||||||
|
}
|
||||||
|
|
||||||
|
var cmdScaffold = &Command{
|
||||||
|
UsageLine: "scaffold [filer]",
|
||||||
|
Short: "generate basic configuration files",
|
||||||
|
Long: `Generate filer.toml with all possible configurations for you to customize.
|
||||||
|
|
||||||
|
`,
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
outputPath = cmdScaffold.Flag.String("output", "", "if not empty, save the configuration file to this directory")
|
||||||
|
config = cmdScaffold.Flag.String("config", "filer", "the configuration file to generate")
|
||||||
|
)
|
||||||
|
|
||||||
|
func runScaffold(cmd *Command, args []string) bool {
|
||||||
|
|
||||||
|
content := ""
|
||||||
|
switch *config {
|
||||||
|
case "filer":
|
||||||
|
content = FILER_TOML_EXAMPLE
|
||||||
|
}
|
||||||
|
if content == "" {
|
||||||
|
println("need a valid -config option")
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if *outputPath != "" {
|
||||||
|
ioutil.WriteFile(filepath.Join(*outputPath, *config+".toml"), []byte(content), 0x755)
|
||||||
|
} else {
|
||||||
|
println(content)
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
FILER_TOML_EXAMPLE = `
|
||||||
|
# A sample TOML config file for SeaweedFS filer store
|
||||||
|
|
||||||
[memory]
|
[memory]
|
||||||
# local in memory, mostly for testing purpose
|
# local in memory, mostly for testing purpose
|
||||||
@@ -6,7 +52,7 @@ enabled = false
|
|||||||
|
|
||||||
[leveldb]
|
[leveldb]
|
||||||
# local on disk, mostly for simple single-machine setup, fairly scalable
|
# local on disk, mostly for simple single-machine setup, fairly scalable
|
||||||
enabled = true
|
enabled = false
|
||||||
dir = "." # directory to store level db files
|
dir = "." # directory to store level db files
|
||||||
|
|
||||||
####################################################
|
####################################################
|
||||||
@@ -21,7 +67,7 @@ dir = "." # directory to store level db files
|
|||||||
# meta BLOB,
|
# meta BLOB,
|
||||||
# PRIMARY KEY (dirhash, name)
|
# PRIMARY KEY (dirhash, name)
|
||||||
# ) DEFAULT CHARSET=utf8;
|
# ) DEFAULT CHARSET=utf8;
|
||||||
enabled = false
|
enabled = true
|
||||||
hostname = "localhost"
|
hostname = "localhost"
|
||||||
port = 3306
|
port = 3306
|
||||||
username = "root"
|
username = "root"
|
||||||
@@ -62,7 +108,7 @@ hosts=[
|
|||||||
]
|
]
|
||||||
|
|
||||||
[redis]
|
[redis]
|
||||||
enabled = false
|
enabled = true
|
||||||
address = "localhost:6379"
|
address = "localhost:6379"
|
||||||
password = ""
|
password = ""
|
||||||
db = 0
|
db = 0
|
||||||
@@ -73,6 +119,7 @@ addresses = [
|
|||||||
"localhost:6379",
|
"localhost:6379",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
####################################################
|
####################################################
|
||||||
# notification
|
# notification
|
||||||
# sends filer updates for each file to an external message queue
|
# sends filer updates for each file to an external message queue
|
||||||
@@ -87,3 +134,5 @@ hosts = [
|
|||||||
]
|
]
|
||||||
topic = "seaweedfs_filer"
|
topic = "seaweedfs_filer"
|
||||||
|
|
||||||
|
`
|
||||||
|
)
|
||||||
@@ -7,85 +7,6 @@ import (
|
|||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
|
||||||
FILER_TOML_EXAMPLE = `
|
|
||||||
# A sample TOML config file for SeaweedFS filer store
|
|
||||||
|
|
||||||
[memory]
|
|
||||||
# local in memory, mostly for testing purpose
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
[leveldb]
|
|
||||||
# local on disk, mostly for simple single-machine setup, fairly scalable
|
|
||||||
enabled = false
|
|
||||||
dir = "." # directory to store level db files
|
|
||||||
|
|
||||||
####################################################
|
|
||||||
# multiple filers on shared storage, fairly scalable
|
|
||||||
####################################################
|
|
||||||
|
|
||||||
[mysql]
|
|
||||||
# CREATE TABLE IF NOT EXISTS filemeta (
|
|
||||||
# dirhash BIGINT COMMENT 'first 64 bits of MD5 hash value of directory field',
|
|
||||||
# name VARCHAR(1000) COMMENT 'directory or file name',
|
|
||||||
# directory VARCHAR(4096) COMMENT 'full path to parent directory',
|
|
||||||
# meta BLOB,
|
|
||||||
# PRIMARY KEY (dirhash, name)
|
|
||||||
# ) DEFAULT CHARSET=utf8;
|
|
||||||
enabled = true
|
|
||||||
hostname = "localhost"
|
|
||||||
port = 3306
|
|
||||||
username = "root"
|
|
||||||
password = ""
|
|
||||||
database = "" # create or use an existing database
|
|
||||||
connection_max_idle = 2
|
|
||||||
connection_max_open = 100
|
|
||||||
|
|
||||||
[postgres]
|
|
||||||
# CREATE TABLE IF NOT EXISTS filemeta (
|
|
||||||
# dirhash BIGINT,
|
|
||||||
# name VARCHAR(1000),
|
|
||||||
# directory VARCHAR(4096),
|
|
||||||
# meta bytea,
|
|
||||||
# PRIMARY KEY (dirhash, name)
|
|
||||||
# );
|
|
||||||
enabled = false
|
|
||||||
hostname = "localhost"
|
|
||||||
port = 5432
|
|
||||||
username = "postgres"
|
|
||||||
password = ""
|
|
||||||
database = "" # create or use an existing database
|
|
||||||
sslmode = "disable"
|
|
||||||
connection_max_idle = 100
|
|
||||||
connection_max_open = 100
|
|
||||||
|
|
||||||
[cassandra]
|
|
||||||
# CREATE TABLE filemeta (
|
|
||||||
# directory varchar,
|
|
||||||
# name varchar,
|
|
||||||
# meta blob,
|
|
||||||
# PRIMARY KEY (directory, name)
|
|
||||||
# ) WITH CLUSTERING ORDER BY (name ASC);
|
|
||||||
enabled = false
|
|
||||||
keyspace="seaweedfs"
|
|
||||||
hosts=[
|
|
||||||
"localhost:9042",
|
|
||||||
]
|
|
||||||
|
|
||||||
[redis]
|
|
||||||
enabled = true
|
|
||||||
address = "localhost:6379"
|
|
||||||
password = ""
|
|
||||||
db = 0
|
|
||||||
|
|
||||||
[redis_cluster]
|
|
||||||
enabled = false
|
|
||||||
addresses = [
|
|
||||||
"localhost:6379",
|
|
||||||
]
|
|
||||||
|
|
||||||
`
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
var (
|
||||||
Stores []FilerStore
|
Stores []FilerStore
|
||||||
|
|||||||
Reference in New Issue
Block a user