From 3bf3d18f1f66a1c3e61caddeb753eee2ad46570e Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Mon, 2 May 2016 03:12:18 -0700 Subject: [PATCH] rpc/client: Implement RenameFile properly. (#1443) --- rpc-client.go | 19 +++++++++++++++++-- rpc-server-datatypes.go | 8 ++++++++ rpc-server.go | 15 +++++++++++++++ 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/rpc-client.go b/rpc-client.go index 5f9904e39..32068bf6b 100644 --- a/rpc-client.go +++ b/rpc-client.go @@ -287,6 +287,21 @@ func (n networkFS) DeleteFile(volume, path string) (err error) { } // RenameFile - Rename file. -func (n networkFS) RenameFile(srcVolume, srcPath, dstVolume, dstPath string) error { - return errUnexpected +func (n networkFS) RenameFile(srcVolume, srcPath, dstVolume, dstPath string) (err error) { + reply := GenericReply{} + if err = n.rpcClient.Call("Storage.RenameFileHandler", RenameFileArgs{ + SrcVol: srcVolume, + SrcPath: srcPath, + DstVol: dstVolume, + DstPath: dstPath, + }, &reply); err != nil { + log.WithFields(logrus.Fields{ + "srcVolume": srcVolume, + "srcPath": srcPath, + "dstVolume": dstVolume, + "dstPath": dstPath, + }).Errorf("Storage.RenameFileHandler failed with %s", err) + return toStorageErr(err) + } + return nil } diff --git a/rpc-server-datatypes.go b/rpc-server-datatypes.go index e0fc197e5..60159b19a 100644 --- a/rpc-server-datatypes.go +++ b/rpc-server-datatypes.go @@ -53,3 +53,11 @@ type DeleteFileArgs struct { Vol string Path string } + +// RenameFileArgs rename file args. +type RenameFileArgs struct { + SrcVol string + SrcPath string + DstVol string + DstPath string +} diff --git a/rpc-server.go b/rpc-server.go index 4d1f05d74..92f6749af 100644 --- a/rpc-server.go +++ b/rpc-server.go @@ -118,6 +118,21 @@ func (s *storageServer) DeleteFileHandler(arg *DeleteFileArgs, reply *GenericRep return nil } +// RenameFileHandler - rename file handler is rpc wrapper to rename file. +func (s *storageServer) RenameFileHandler(arg *RenameFileArgs, reply *GenericReply) error { + err := s.storage.RenameFile(arg.SrcVol, arg.SrcPath, arg.DstVol, arg.DstPath) + if err != nil { + log.WithFields(logrus.Fields{ + "srcVolume": arg.SrcVol, + "srcPath": arg.SrcPath, + "dstVolume": arg.DstVol, + "dstPath": arg.DstPath, + }).Errorf("RenameFile failed with error %s", err) + return err + } + return nil +} + // Initialize new storage rpc. func newRPCServer(exportPath string) (*storageServer, error) { // Initialize posix storage API.