aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2018-08-19 15:36:30 -0700
committerChris Lu <chris.lu@gmail.com>2018-08-19 15:36:30 -0700
commit748870b03ff3b80bf7603f4bdf162e0838f3acba (patch)
tree04ca6bf5a1b3b172fe09169b101f5929c377559a
parent95b997fb3542093d935e5abee10de456b3710cc3 (diff)
downloadseaweedfs-748870b03ff3b80bf7603f4bdf162e0838f3acba.tar.xz
seaweedfs-748870b03ff3b80bf7603f4bdf162e0838f3acba.zip
add "weed scaffold" command
-rw-r--r--weed/command/command.go1
-rw-r--r--weed/command/filer.go5
-rw-r--r--weed/command/scaffold.go (renamed from weed/filer.toml)57
-rw-r--r--weed/filer2/configuration.go79
4 files changed, 56 insertions, 86 deletions
diff --git a/weed/command/command.go b/weed/command/command.go
index c6b005dd9..0d72ee0db 100644
--- a/weed/command/command.go
+++ b/weed/command/command.go
@@ -19,6 +19,7 @@ var Commands = []*Command{
cmdS3,
cmdUpload,
cmdDownload,
+ cmdScaffold,
cmdShell,
cmdVersion,
cmdVolume,
diff --git a/weed/command/filer.go b/weed/command/filer.go
index eaef380a2..30a8b6412 100644
--- a/weed/command/filer.go
+++ b/weed/command/filer.go
@@ -5,7 +5,6 @@ import (
"strconv"
"time"
- "github.com/chrislusf/seaweedfs/weed/filer2"
"github.com/chrislusf/seaweedfs/weed/glog"
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
"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 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 {
diff --git a/weed/filer.toml b/weed/command/scaffold.go
index 4c9dc2041..64aa59fb8 100644
--- a/weed/filer.toml
+++ b/weed/command/scaffold.go
@@ -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]
# local in memory, mostly for testing purpose
@@ -6,7 +52,7 @@ enabled = false
[leveldb]
# local on disk, mostly for simple single-machine setup, fairly scalable
-enabled = true
+enabled = false
dir = "." # directory to store level db files
####################################################
@@ -21,7 +67,7 @@ dir = "." # directory to store level db files
# meta BLOB,
# PRIMARY KEY (dirhash, name)
# ) DEFAULT CHARSET=utf8;
-enabled = false
+enabled = true
hostname = "localhost"
port = 3306
username = "root"
@@ -62,7 +108,7 @@ hosts=[
]
[redis]
-enabled = false
+enabled = true
address = "localhost:6379"
password = ""
db = 0
@@ -73,6 +119,7 @@ addresses = [
"localhost:6379",
]
+
####################################################
# notification
# sends filer updates for each file to an external message queue
@@ -87,3 +134,5 @@ hosts = [
]
topic = "seaweedfs_filer"
+`
+)
diff --git a/weed/filer2/configuration.go b/weed/filer2/configuration.go
index 510e27ab1..80755ee5e 100644
--- a/weed/filer2/configuration.go
+++ b/weed/filer2/configuration.go
@@ -7,85 +7,6 @@ import (
"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 (
Stores []FilerStore