refine doc

This commit is contained in:
Hongchao Deng
2013-09-06 14:28:11 -04:00
parent 450d0eb0da
commit 9b80e1cd64

View File

@@ -5,47 +5,60 @@
![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.
In **Etcd**, the **Node** is the rudimentary element constructing the whole.
Currently **Etcd** file system is comprised in a Unix-like way of files and directories, and they are two kinds of nodes different in:
- **File Node** has data associated with it.
- **Directory Node** has children nodes associated with it.
Besides the file and directory difference, all nodes have common attributes and operations as follows:
### Attributes:
####Expiration Time [optional]
The node will be deleted when it expires.
####ACL
The path of access control list of the node.
- **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.
- **Get** (path, recursive)
####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.
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.
####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.
- **Set** (path, value[optional], ttl [optional])
####Renew (path, ttl)
Set the node's expiration time to (current time + ttl)
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)
Atomic *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]
[TODO]