プロジェクトの操作はすべて、特定のプールへスコープ指定できます。すべてのプロジェクト全体で操作するコマンドは URI に「/projects」を追加し、単一のプロジェクトで操作するコマンドは「/projects/{project}」を追加します。
|
次の表に、プロジェクトのリソース内で編集可能なプロパティーのリストを示します。
|
このコマンドを実行すると、指定のプール内のすべてのプロジェクトが表示されます。返されたプロジェクトのおのおのには、上記で示された変更可能なプロパティーのリストのほかに、プール名、作成時間、ロード状態、レプリケーションアクション、データ使用状況も含まれます。
問合せパラメータフィルタ – プロジェクト内のプロパティーがその値内に同じフィルタ文字列を含んでいることを必要とする簡易的な文字列照合フィルタ。
|
リクエストの例:
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 の本文リクエストパラメータ:
名前 – プロジェクトを作成するには、プロジェクト名を指定する必要があります。
プロジェクトプロパティー – 任意のプロジェクトプロパティーを新しいプロジェクトの初期値として設定できます。
リクエストの例 (「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”
}
作成に成功すると、新しいプロジェクトの URI を含むロケーションヘッダーとともに HTTP ステータス 201 (Created) が返されます。本文には、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”,
...
}
}
プロジェクトの変更コマンドは、既存のプロジェクトの属性を変更します。
|
リクエストパラメータ – プロジェクトプロパティー - 任意のプロジェクトプロパティーを新しいプロジェクトの初期値として設定できます。
リクエストの例 (プロジェクト名を「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
プロジェクトの使用状況リソースの取得リクエストは、プロジェクトのユーザー当たりまたはグループ当たりの使用状況データの取得に使用できます。