Просмотр исходного кода

simplify parsing filer host and port

Chris Lu 5 лет назад
Родитель
Сommit
e666aeece2

+ 2 - 7
weed/shell/command_bucket_create.go

@@ -43,16 +43,11 @@ func (c *commandBucketCreate) Do(args []string, commandEnv *CommandEnv, writer i
 		return fmt.Errorf("empty bucket name")
 	}
 
-	filerServer, filerPort, _, parseErr := commandEnv.parseUrl(findInputDirectory(bucketCommand.Args()))
-	if parseErr != nil {
-		return parseErr
-	}
-
-	err = commandEnv.withFilerClient(filerServer, filerPort, func(client filer_pb.SeaweedFilerClient) error {
+	err = commandEnv.WithFilerClient(func(client filer_pb.SeaweedFilerClient) error {
 
 		resp, err := client.GetFilerConfiguration(context.Background(), &filer_pb.GetFilerConfigurationRequest{})
 		if err != nil {
-			return fmt.Errorf("get filer %s:%d configuration: %v", filerServer, filerPort, err)
+			return fmt.Errorf("get filer configuration: %v", err)
 		}
 		filerBucketsPath := resp.DirBuckets
 

+ 3 - 5
weed/shell/command_bucket_delete.go

@@ -38,19 +38,17 @@ func (c *commandBucketDelete) Do(args []string, commandEnv *CommandEnv, writer i
 		return fmt.Errorf("empty bucket name")
 	}
 
-	filerServer, filerPort, _, parseErr := commandEnv.parseUrl(findInputDirectory(bucketCommand.Args()))
+	_, parseErr := commandEnv.parseUrl(findInputDirectory(bucketCommand.Args()))
 	if parseErr != nil {
 		return parseErr
 	}
 
-	filerClient := commandEnv.getFilerClient(filerServer, filerPort)
-
 	var filerBucketsPath string
-	filerBucketsPath, err = readFilerBucketsPath(filerClient)
+	filerBucketsPath, err = readFilerBucketsPath(commandEnv)
 	if err != nil {
 		return fmt.Errorf("read buckets: %v", err)
 	}
 
-	return filer_pb.Remove(filerClient, filerBucketsPath, *bucketName, false, true, true)
+	return filer_pb.Remove(commandEnv, filerBucketsPath, *bucketName, false, true, true)
 
 }

+ 3 - 5
weed/shell/command_bucket_list.go

@@ -34,20 +34,18 @@ func (c *commandBucketList) Do(args []string, commandEnv *CommandEnv, writer io.
 		return nil
 	}
 
-	filerServer, filerPort, _, parseErr := commandEnv.parseUrl(findInputDirectory(bucketCommand.Args()))
+	_, parseErr := commandEnv.parseUrl(findInputDirectory(bucketCommand.Args()))
 	if parseErr != nil {
 		return parseErr
 	}
 
-	filerClient := commandEnv.getFilerClient(filerServer, filerPort)
-
 	var filerBucketsPath string
-	filerBucketsPath, err = readFilerBucketsPath(filerClient)
+	filerBucketsPath, err = readFilerBucketsPath(commandEnv)
 	if err != nil {
 		return fmt.Errorf("read buckets: %v", err)
 	}
 
-	err = filer_pb.List(filerClient, filerBucketsPath, "", func(entry *filer_pb.Entry, isLast bool) {
+	err = filer_pb.List(commandEnv, filerBucketsPath, "", func(entry *filer_pb.Entry, isLast bool) {
 		if entry.Attributes.Replication == "" || entry.Attributes.Replication == "000" {
 			fmt.Fprintf(writer, "  %s\n", entry.Name)
 		} else {

+ 3 - 5
weed/shell/command_fs_cat.go

@@ -30,20 +30,18 @@ func (c *commandFsCat) Help() string {
 
 func (c *commandFsCat) Do(args []string, commandEnv *CommandEnv, writer io.Writer) (err error) {
 
-	input := findInputDirectory(args)
-
-	filerServer, filerPort, path, err := commandEnv.parseUrl(input)
+	path, err := commandEnv.parseUrl(findInputDirectory(args))
 	if err != nil {
 		return err
 	}
 
-	if commandEnv.isDirectory(filerServer, filerPort, path) {
+	if commandEnv.isDirectory(path) {
 		return fmt.Errorf("%s is a directory", path)
 	}
 
 	dir, name := util.FullPath(path).DirAndName()
 
-	return commandEnv.withFilerClient(filerServer, filerPort, func(client filer_pb.SeaweedFilerClient) error {
+	return commandEnv.WithFilerClient(func(client filer_pb.SeaweedFilerClient) error {
 
 		request := &filer_pb.LookupDirectoryEntryRequest{
 			Name:      name,

+ 2 - 8
weed/shell/command_fs_cd.go

@@ -30,25 +30,19 @@ func (c *commandFsCd) Help() string {
 
 func (c *commandFsCd) Do(args []string, commandEnv *CommandEnv, writer io.Writer) (err error) {
 
-	input := findInputDirectory(args)
-
-	filerServer, filerPort, path, err := commandEnv.parseUrl(input)
+	path, err := commandEnv.parseUrl(findInputDirectory(args))
 	if err != nil {
 		return err
 	}
 
 	if path == "/" {
-		commandEnv.option.FilerHost = filerServer
-		commandEnv.option.FilerPort = filerPort
 		commandEnv.option.Directory = "/"
 		return nil
 	}
 
-	err = commandEnv.checkDirectory(filerServer, filerPort, path)
+	err = commandEnv.checkDirectory(path)
 
 	if err == nil {
-		commandEnv.option.FilerHost = filerServer
-		commandEnv.option.FilerPort = filerPort
 		commandEnv.option.Directory = path
 	}
 

+ 6 - 22
weed/shell/command_fs_du.go

@@ -32,18 +32,18 @@ func (c *commandFsDu) Help() string {
 
 func (c *commandFsDu) Do(args []string, commandEnv *CommandEnv, writer io.Writer) (err error) {
 
-	filerServer, filerPort, path, err := commandEnv.parseUrl(findInputDirectory(args))
+	path, err := commandEnv.parseUrl(findInputDirectory(args))
 	if err != nil {
 		return err
 	}
 
-	if commandEnv.isDirectory(filerServer, filerPort, path) {
+	if commandEnv.isDirectory(path) {
 		path = path + "/"
 	}
 
 	var blockCount, byteCount uint64
 	dir, name := util.FullPath(path).DirAndName()
-	blockCount, byteCount, err = duTraverseDirectory(writer, commandEnv.getFilerClient(filerServer, filerPort), dir, name)
+	blockCount, byteCount, err = duTraverseDirectory(writer, commandEnv, dir, name)
 
 	if name == "" && err == nil {
 		fmt.Fprintf(writer, "block:%4d\tbyte:%10d\t%s\n", blockCount, byteCount, dir)
@@ -78,29 +78,13 @@ func duTraverseDirectory(writer io.Writer, filerClient filer_pb.FilerClient, dir
 	return
 }
 
-func (env *CommandEnv) withFilerClient(filerServer string, filerPort int64, fn func(filer_pb.SeaweedFilerClient) error) error {
+func (env *CommandEnv) WithFilerClient(fn func(filer_pb.SeaweedFilerClient) error) error {
 
-	filerGrpcAddress := fmt.Sprintf("%s:%d", filerServer, filerPort+10000)
+	filerGrpcAddress := fmt.Sprintf("%s:%d", env.option.FilerHost, env.option.FilerPort+10000)
 	return pb.WithGrpcFilerClient(filerGrpcAddress, env.option.GrpcDialOption, fn)
 
 }
 
-type commandFilerClient struct {
-	env         *CommandEnv
-	filerServer string
-	filerPort   int64
-}
-
-func (env *CommandEnv) getFilerClient(filerServer string, filerPort int64) *commandFilerClient {
-	return &commandFilerClient{
-		env:         env,
-		filerServer: filerServer,
-		filerPort:   filerPort,
-	}
-}
-func (c *commandFilerClient) WithFilerClient(fn func(filer_pb.SeaweedFilerClient) error) error {
-	return c.env.withFilerClient(c.filerServer, c.filerPort, fn)
-}
-func (c *commandFilerClient) AdjustedUrl(hostAndPort string) string {
+func (env *CommandEnv) AdjustedUrl(hostAndPort string) string {
 	return hostAndPort
 }

+ 3 - 5
weed/shell/command_fs_ls.go

@@ -50,21 +50,19 @@ func (c *commandFsLs) Do(args []string, commandEnv *CommandEnv, writer io.Writer
 		}
 	}
 
-	input := findInputDirectory(args)
-
-	filerServer, filerPort, path, err := commandEnv.parseUrl(input)
+	path, err := commandEnv.parseUrl(findInputDirectory(args))
 	if err != nil {
 		return err
 	}
 
-	if commandEnv.isDirectory(filerServer, filerPort, path) {
+	if commandEnv.isDirectory(path) {
 		path = path + "/"
 	}
 
 	dir, name := util.FullPath(path).DirAndName()
 	entryCount := 0
 
-	err = filer_pb.ReadDirAllEntries(commandEnv.getFilerClient(filerServer, filerPort), util.FullPath(dir), name, func(entry *filer_pb.Entry, isLast bool) {
+	err = filer_pb.ReadDirAllEntries(commandEnv, util.FullPath(dir), name, func(entry *filer_pb.Entry, isLast bool) {
 
 		if !showHidden && strings.HasPrefix(entry.Name, ".") {
 			return

+ 2 - 4
weed/shell/command_fs_meta_cat.go

@@ -31,16 +31,14 @@ func (c *commandFsMetaCat) Help() string {
 
 func (c *commandFsMetaCat) Do(args []string, commandEnv *CommandEnv, writer io.Writer) (err error) {
 
-	input := findInputDirectory(args)
-
-	filerServer, filerPort, path, err := commandEnv.parseUrl(input)
+	path, err := commandEnv.parseUrl(findInputDirectory(args))
 	if err != nil {
 		return err
 	}
 
 	dir, name := util.FullPath(path).DirAndName()
 
-	return commandEnv.withFilerClient(filerServer, filerPort, func(client filer_pb.SeaweedFilerClient) error {
+	return commandEnv.WithFilerClient(func(client filer_pb.SeaweedFilerClient) error {
 
 		request := &filer_pb.LookupDirectoryEntryRequest{
 			Name:      name,

+ 2 - 7
weed/shell/command_fs_meta_load.go

@@ -37,11 +37,6 @@ func (c *commandFsMetaLoad) Do(args []string, commandEnv *CommandEnv, writer io.
 		return nil
 	}
 
-	filerServer, filerPort, path, err := commandEnv.parseUrl(findInputDirectory(nil))
-	if err != nil {
-		return err
-	}
-
 	fileName := args[len(args)-1]
 
 	dst, err := os.OpenFile(fileName, os.O_RDONLY, 0644)
@@ -52,7 +47,7 @@ func (c *commandFsMetaLoad) Do(args []string, commandEnv *CommandEnv, writer io.
 
 	var dirCount, fileCount uint64
 
-	err = commandEnv.withFilerClient(filerServer, filerPort, func(client filer_pb.SeaweedFilerClient) error {
+	err = commandEnv.WithFilerClient(func(client filer_pb.SeaweedFilerClient) error {
 
 		sizeBuf := make([]byte, 4)
 
@@ -98,7 +93,7 @@ func (c *commandFsMetaLoad) Do(args []string, commandEnv *CommandEnv, writer io.
 
 	if err == nil {
 		fmt.Fprintf(writer, "\ntotal %d directories, %d files", dirCount, fileCount)
-		fmt.Fprintf(writer, "\n%s is loaded to http://%s:%d%s\n", fileName, filerServer, filerPort, path)
+		fmt.Fprintf(writer, "\n%s is loaded.\n", fileName)
 	}
 
 	return err

+ 2 - 2
weed/shell/command_fs_meta_notify.go

@@ -32,7 +32,7 @@ func (c *commandFsMetaNotify) Help() string {
 
 func (c *commandFsMetaNotify) Do(args []string, commandEnv *CommandEnv, writer io.Writer) (err error) {
 
-	filerServer, filerPort, path, err := commandEnv.parseUrl(findInputDirectory(args))
+	path, err := commandEnv.parseUrl(findInputDirectory(args))
 	if err != nil {
 		return err
 	}
@@ -43,7 +43,7 @@ func (c *commandFsMetaNotify) Do(args []string, commandEnv *CommandEnv, writer i
 
 	var dirCount, fileCount uint64
 
-	err = doTraverseBFS(writer, commandEnv.getFilerClient(filerServer, filerPort), util.FullPath(path), func(parentPath util.FullPath, entry *filer_pb.Entry) {
+	err = doTraverseBFS(writer, commandEnv, util.FullPath(path), func(parentPath util.FullPath, entry *filer_pb.Entry) {
 
 		if entry.IsDirectory {
 			dirCount++

Некоторые файлы не были показаны из-за большого количества измененных файлов