所有项目操作都可限定到给定池。在所有项目中运行的命令会将 "/projects" 附加到 URI,而在单个项目中运行的命令则附加 "/projects/{project}"。
|
下表显示了项目资源中的可编辑属性的列表。
|
此命令列出给定池中的所有项目。每个返回的项目都包含上述可修改属性的列表以及池名称、创建时间、装入状态、复制操作和数据使用情况。
查询参数 filter-一个简单的字符串匹配过滤器,要求项目中的属性在其值中包含相同的过滤器字符串。
|
请求示例:
GET /api/storage/v1/pools/gold/projects HTTP/1.1 Host: zfs-storage.example.com Accept: application/json
成功执行 get 后,将返回 HTTP 代码 200 (OK) 以及项目属性数组(使用 JSON 格式)。
结果示例:
HTTP/1.1 200 OK
Content-Type: application/json
{
“projects”: [{
“name”: “proj-01”,
...
}, {
“name”: “proj-02”,
...
}
}
系统也支持所有池中的所有项目的列表;URI 将仅包含 /projects 路径。
获取所有项目并以 "backup" 作为其部分属性的请求示例:
GET /projects?filter=backup HTTP/1.1 Host: zfs-storage.example.com Accept: application/json
此命令列出给定池中单个项目的属性。成功执行 get 后,将返回 HTTP 代码 200 (OK) 以及项目属性(使用 JSON 格式)。
|
列出 "gold" 池中名为 "proj-01" 的项目的请求示例:
GET /api/storage/v1/pools/gold/projects/proj-01 HTTP/1.1 Host: zfs-storage.example.com Accept: application/json
响应示例:
HTTP/1.1 200 OK
Content-Type: application/json
{
"project": {
"default_volblocksize": 8192.0,
"logbias": "latency",
"creation": "20130411T20:02:35",
"nodestroy": false,
"dedup": false,
"sharenfs": "on",
"sharesmb": "off",
"default_permissions": "700",
"mountpoint": "/export",
"snaplabel": "",
"id": "042919bb-0882-d903-0000-000000000000",
"readonly": false,
"rrsrc_actions": [],
"compression": "off",
"sharetftp": "",
"default_sparse": false,
"snapdir": "hidden",
"aclmode": "discard",
"copies": 1,
"aclinherit": "restricted",
"shareftp": "",
"canonical_name": "gold/local/default",
"recordsize": 131072.0,
"usage": {
"available": 1758424767306.0,
"loading": false,
"quota": 0.0,
"snapshots": 0.0,
"compressratio": 100.0,
"child_reservation": 0.0,
"reservation": 0.0,
"total": 45960.0,
"data": 45960.0
},
"default_volsize": 0.0,
"secondarycache": "all",
"collection": "local",
"exported": true,
"vscan": false,
"reservation": 0.0,
"atime": true,
"pool": "gold",
"default_user": "nobody",
"name": "default",
"checksum": "fletcher4",
"default_group": "other",
"sharesftp": "",
"nbmand": false,
"sharedav": "",
"rstchown": true
}
}
创建项目命令将在给定存储池中创建使用给定名称的项目。将返回具有默认属性的新项目。
|
JSON 正文请求参数:
name-必须提供项目名称以创建项目。
project properties-任何项目属性都可设置为新项目的初始值。
请求示例(创建名为 "proj-01" 的项目):
POST /api/storage/v1/pools/gold/projects HTTP/1.1
Hosta: zfs-storage.example.com
Content-Type: application/json
Accept: application/json
{
“name”: “proj-01”,
“sharenfs”: “ro”
}
成功创建后,将返回 HTTP 状态 201 (Created),且位置头包含新项目的 URI。正文包含所有项目属性(使用 JSON 格式)。
结果示例:
HTTP/1.1 201 Created
Content-Type: application/json
Location: http://zfs-storage.example.com:215
/pools/gold/projects/proj-01
{
“project”: {
“name”: “proj-01”,
"href": "/api/storage/v1/pools/gold/projects/proj-01",
“mountpoint”: “/export/acme/gold”,
...
}
}
此修改项目命令用于更改现有项目的属性。
|
请求参数-Project Properties-任何项目属性都可设置为新项目的初始值。
请求示例(将项目名称从 "proj-01" 更改为 "new-name"):
POST /api/storage/v1/pools/gold/projects/proj-01 HTTP/1.1
Host: zfs-storage.example.com
Content-Type: application/json
Accept: application/json
{
“name”: “new-name”,
“sharenfs”: “rw”,
“compression”: “gzip-9”
}
成功响应后,将返回 HTTP 状态 202 (Accepted) 并列出所有项目属性。
响应示例:
HTTP/1.1 201 Created
Content-Type: application/json
Location: /api/storage/v1/pools/gold/projects/new-name
{
“project”: {
“name”: “new-name”,
“sharenfs”: “rw”,
“compression: “gzip-9”,
...
}
}
此删除项目命令用于删除给定池中的单个项目。
|
请求示例:
DELETE /api/storage/v1/pools/gold/projects/proj-01 HTTP/1.1 Host: zfs-storage.example.com Accept: application/json
获取请求项目使用情况资源可用于按用户或用户组获取项目的使用情况数据。