aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2021-08-04 12:30:18 -0700
committerChris Lu <chris.lu@gmail.com>2021-08-04 12:30:18 -0700
commitd84c31169922d395074b1b256d05aa638462df50 (patch)
treea8e35fc46606f2f00b66f3413b26c1c8e7b806c1
parentf6a9ad8001c439e5751fa5488fe6106b185ba8eb (diff)
downloadseaweedfs-d84c31169922d395074b1b256d05aa638462df50.tar.xz
seaweedfs-d84c31169922d395074b1b256d05aa638462df50.zip
refactoring
-rw-r--r--weed/command/shell.go1
-rw-r--r--weed/remote_storage/mount_mapping.go26
-rw-r--r--weed/server/master_server.go1
-rw-r--r--weed/shell/command_remote_mount.go17
-rw-r--r--weed/shell/commands.go7
5 files changed, 35 insertions, 17 deletions
diff --git a/weed/command/shell.go b/weed/command/shell.go
index c9976e809..4a9f4b027 100644
--- a/weed/command/shell.go
+++ b/weed/command/shell.go
@@ -55,6 +55,7 @@ func runShell(command *Command, args []string) bool {
var err error
shellOptions.FilerHost, shellOptions.FilerPort, err = util.ParseHostPort(*shellInitialFiler)
+ shellOptions.FilerAddress = *shellInitialFiler
if err != nil {
fmt.Printf("failed to parse filer %s: %v\n", *shellInitialFiler, err)
return false
diff --git a/weed/remote_storage/mount_mapping.go b/weed/remote_storage/mount_mapping.go
new file mode 100644
index 000000000..65e7be362
--- /dev/null
+++ b/weed/remote_storage/mount_mapping.go
@@ -0,0 +1,26 @@
+package remote_storage
+
+import (
+ "fmt"
+ "github.com/chrislusf/seaweedfs/weed/filer"
+ "github.com/chrislusf/seaweedfs/weed/pb"
+ "github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
+ "google.golang.org/grpc"
+)
+
+func ReadMountMappings(grpcDialOption grpc.DialOption, filerAddress string) (mappings *filer_pb.RemoteStorageMapping, readErr error) {
+ var oldContent []byte
+ if readErr = pb.WithFilerClient(filerAddress, grpcDialOption, func(client filer_pb.SeaweedFilerClient) error {
+ oldContent, readErr = filer.ReadInsideFiler(client, filer.DirectoryEtcRemote, filer.REMOTE_STORAGE_MOUNT_FILE)
+ return readErr
+ }); readErr != nil {
+ return nil, readErr
+ }
+
+ mappings, readErr = filer.UnmarshalRemoteStorageMappings(oldContent)
+ if readErr != nil {
+ return nil, fmt.Errorf("unmarshal mappings: %v", readErr)
+ }
+
+ return
+}
diff --git a/weed/server/master_server.go b/weed/server/master_server.go
index 9d222a342..a23ad0698 100644
--- a/weed/server/master_server.go
+++ b/weed/server/master_server.go
@@ -228,6 +228,7 @@ func (ms *MasterServer) startAdminScripts() {
shellOptions.Masters = &masterAddress
shellOptions.FilerHost, shellOptions.FilerPort, err = util.ParseHostPort(filerHostPort)
+ shellOptions.FilerAddress = filerHostPort
shellOptions.Directory = "/"
if err != nil {
glog.V(0).Infof("failed to parse master.filer.default = %s : %v\n", filerHostPort, err)
diff --git a/weed/shell/command_remote_mount.go b/weed/shell/command_remote_mount.go
index 55dfb42ca..5cd69f3b0 100644
--- a/weed/shell/command_remote_mount.go
+++ b/weed/shell/command_remote_mount.go
@@ -79,20 +79,9 @@ func (c *commandRemoteMount) Do(args []string, commandEnv *CommandEnv, writer io
func (c *commandRemoteMount) listExistingRemoteStorageMounts(commandEnv *CommandEnv, writer io.Writer) (err error) {
// read current mapping
- var oldContent []byte
- err = commandEnv.WithFilerClient(func(client filer_pb.SeaweedFilerClient) error {
- oldContent, err = filer.ReadInsideFiler(client, filer.DirectoryEtcRemote, filer.REMOTE_STORAGE_MOUNT_FILE)
- return err
- })
- if err != nil {
- if err != filer_pb.ErrNotFound {
- return fmt.Errorf("read existing mapping: %v", err)
- }
- }
-
- mappings, unmarshalErr := filer.UnmarshalRemoteStorageMappings(oldContent)
- if unmarshalErr != nil {
- return unmarshalErr
+ mappings, readErr := remote_storage.ReadMountMappings(commandEnv.option.GrpcDialOption, commandEnv.option.FilerAddress)
+ if readErr != nil {
+ return readErr
}
m := jsonpb.Marshaler{
diff --git a/weed/shell/commands.go b/weed/shell/commands.go
index 0e285214b..5b78f1ff9 100644
--- a/weed/shell/commands.go
+++ b/weed/shell/commands.go
@@ -20,9 +20,10 @@ type ShellOptions struct {
Masters *string
GrpcDialOption grpc.DialOption
// shell transient context
- FilerHost string
- FilerPort int64
- Directory string
+ FilerHost string
+ FilerPort int64
+ FilerAddress string
+ Directory string
}
type CommandEnv struct {