Browse Source

init file system spec

Xiang Li 12 years ago
parent
commit
197b9106f9
2 changed files with 51 additions and 0 deletions
  1. 51 0
      Documentation/etcd-file-system.md
  2. BIN
      Documentation/img/etcd_fs_structure.jpg

+ 51 - 0
Documentation/etcd-file-system.md

@@ -0,0 +1,51 @@
+#Etcd File System
+
+## Structure
+[TODO]
+![alt text](./img/etcd_fs_structure.jpg "etcd file system structure")
+
+## Node
+The building ingredients of etcd file system are two kinds of nodes -- files and directories:
+- File has data associated with it. 
+- Directory has children nodes associated with it.
+
+### Attributes:
+####Expiration Time [optional]
+The node will be deleted when it expires.
+####ACL
+The path of access control list of the node.
+
+### Operation:
+#### Get (path, recursive)
+Get the content of the node 
+ - If the node is a file, the data of the file will be returned.
+ - If the node is a directory, the child nodes of the directory will be returned. 
+ - If recursive is true, it will recursively get the nodes of the directory.
+
+####Set (path, value[optional], ttl [optional])
+Set the value to a file. Set operation will help to create intermediate directories with no expiration time. 
+ - If the value is given, set will create a file
+ - If the value is not given, set will crate a directory
+ - If ttl is given, the node will be deleted when it expires.
+ 
+####Delete (path, recursive)
+Delete the node of given path.
+ - If the node is a directory:
+  - If recursive is true, the operation will delete all nodes under the directory.
+  - If recursive is false, error will be returned.
+
+####TestAndSet (path, prevValue [prevIndex], value, ttl)
+Atomically test and set value to a file. If test succeeds, this operation will change the previous value of the file to the given value.
+ - If the prevValue is given, it will test against previous value of the node.
+  - If the prevValue is empty, it will test if the node is not existing.
+  - If the prevValue is not empty, it will test if the prevValue is equal to the current value of the file.
+ - If the prevIndex is given, it will test if the create/last modified index of the node is equal to prevIndex.
+
+####Renew (path, ttl)
+Set the node's expiration time to (current time + ttl)
+
+## ACL
+[TODO]
+
+## User Group
+[TODO]

BIN
Documentation/img/etcd_fs_structure.jpg