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.