From 33eadfb8bd79fae054055681451a8acac17da697 Mon Sep 17 00:00:00 2001 From: gongweibao Date: Wed, 3 May 2017 20:29:31 +0800 Subject: [PATCH] add filemanager doc --- doc/design/file_mananger/README.md | 72 ++++++++++++++++++ .../file_mananger/src/filemanager.graffle | Bin 0 -> 3656 bytes doc/design/file_mananger/src/filemanager.png | Bin 0 -> 50663 bytes 3 files changed, 72 insertions(+) create mode 100644 doc/design/file_mananger/README.md create mode 100644 doc/design/file_mananger/src/filemanager.graffle create mode 100644 doc/design/file_mananger/src/filemanager.png diff --git a/doc/design/file_mananger/README.md b/doc/design/file_mananger/README.md new file mode 100644 index 000000000..0dd7e05d2 --- /dev/null +++ b/doc/design/file_mananger/README.md @@ -0,0 +1,72 @@ +# Desgin doc: FileManager +## Objetive +在本文档中,我们设计说明了用户上传、下载、管理自己在PaddlePaddle Cloud上的文件所涉及到的模块和流程 + + +## Module +### Client +Client是用户操作的界面,支持的命令如下 + +- ls + +```bash +ls +``` + +- cp + +```bash +cp +``` + +- sync + +```bash +sync +``` + +- mv + +```bash +mv +``` + + +### Ingress +- 在kubernets中运行 +- 做Http转发 +- 注意配置session保持 + + +### FileServer +FileServer是gorpc写的HttpServer, 用来接收Client的REST API的请求,自身由kubernets来管理。 +REST API说明 + +- file + +``` +GET /file: Get attribue of files +POST /file: Touch a file +DELETE /file: Delete a File +``` + +- chunk + +``` +GET /file/chunk: Get a chunk info +POST /file/chunk: Update a chunk +``` + +- dir + +``` +GET /dir: List all files in a directory +POST /dir: Touch a directory +DELETE /dir: Delete a directory +``` + + +## 流程 +### cp +### 断点续传 +### sync diff --git a/doc/design/file_mananger/src/filemanager.graffle b/doc/design/file_mananger/src/filemanager.graffle new file mode 100644 index 0000000000000000000000000000000000000000..68fc8224d33cbc17dfa3634284901fdc5e2cb775 GIT binary patch literal 3656 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 aZY51p#(d0=(dTjAzWP4}9#6rwX8-^_ek|Jn literal 0 HcmV?d00001 diff --git a/doc/design/file_mananger/src/filemanager.png b/doc/design/file_mananger/src/filemanager.png new file mode 100644 index 0000000000000000000000000000000000000000..661d547e414f0119728e1bb5262d0cbb446b395a GIT binary patch literal 50663 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 literal 0 HcmV?d00001 -- GitLab