所有项目操作都可限定到给定池。在所有项目中运行的命令会将 /projects 附加到 URI,而在单个项目中运行的命令则附加 /projects/project。
|
下表显示了项目资源中的可编辑属性的列表。
|
此命令列出给定池中的所有项目。此请求使用作为存储池名称的单个 URI 参数。每个返回的项目都包含上述可修改属性的列表以及池名称、创建时间、装入状态、复制操作和数据使用情况。
查询参数:filter-一个简单的字符串匹配过滤器,要求项目中的属性在其值中包含相同的过滤器字符串。
请求示例:
GET /api/storage/v1/pools/p1/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 格式)。
用于列出 zfs-storage-1 池中名为 proj-01 的项目的请求示例:
GET /api/storage/v1/pools/p1/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": "zfs-storage-1/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": "p1", "default_user": "nobody", "name": "default", "checksum": "fletcher4", "default_group": "other", "sharesftp": "", "nbmand": false, "sharedav": "", "rstchown": true } }
创建项目命令将在给定存储池中创建使用给定名称的项目。此请求使用作为存储池名称的单个 URI 参数。将返回具有默认属性的新项目。
JSON 正文请求参数:
name-必须提供项目名称以创建项目。
Project properties-任何项目属性都可设置为新项目的初始值。
创建名为 proj-01 的项目的请求示例:
POST /api/storage/v1/pools/p1/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/p1/projects/proj-01 { "project": { "name": "proj-01", "href": "/api/storage/v1/pools/p1/projects/proj-01", "mountpoint": "/export/acme/zfs-storage-1", ... } }
此修改项目命令用于更改现有项目的属性。将使用以下 URI 参数:
存储池名称
项目名称
请求参数-Project Properties-任何项目属性都可设置为新项目的初始值。
将项目名称从 proj-01 更改为 new-name 的请求示例:
POST /api/storage/v1/pools/p1/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/p1/projects/new-name { "project": { "name": "new-name", "sharenfs": "rw", "compression: "gzip-9", ... } }
此删除项目命令用于删除给定池中的单个项目。将使用以下 URI 参数:
存储池名称
项目名称
如需监视在接受了延迟更新异步数据集删除 (OS8.7.0) 之后,要在存储池中回收的空间量,请针对 pools/pool 输入 GET 命令。记下 async_destroy_reclaim_space 属性的空间量。操作完成时会显示 0(零)。
请求示例:
DELETE /api/storage/v1/pools/p1/projects/proj-01 HTTP/1.1 Host: zfs-storage.example.com Accept: application/json
获取请求项目使用情况资源可用于按用户或用户组获取项目的使用情况数据。