プロジェクトの操作はすべて、特定のプールへスコープ指定できます。すべてのプロジェクトを対象に操作するコマンドでは URI の後ろに /projects を追加し、1 つのプロジェクトを対象に操作するコマンドでは /projects/project を追加します。
|
次の表に、プロジェクトのリソース内で編集可能なプロパティーのリストを示します。
|
このコマンドを実行すると、指定のプール内のすべてのプロジェクトが表示されます。リクエストは、ストレージプール名である単一の URI パラメータを取ります。返されるプロジェクトのそれぞれには、上記で示された変更可能なプロパティーのリストのほかに、プール名、作成時間、ロード状態、レプリケーションアクション、データ使用状況も含まれます。
リクエストパラメータ: filter – プロジェクト内のプロパティーがその値内に同じフィルタ文字列を含んでいることを必要とする簡易的な文字列照合フィルタ。
リクエストの例:
GET /api/storage/v1/pools/p1/projects HTTP/1.1 Host: zfs-storage.example.com:215 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:215 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:215 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 の本文リクエストパラメータ:
名前 – プロジェクトを作成するには、プロジェクト名を指定する必要があります。
プロジェクトプロパティー – 任意のプロジェクトプロパティーを新しいプロジェクトの初期値として設定できます。
proj-01 という名前のプロジェクトを作成するリクエストの例:
POST /api/storage/v1/pools/p1/projects HTTP/1.1
Host: zfs-storage.example.com:215
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/p1/projects/proj-01
{
"project": {
"name": "proj-01",
"href": "/api/storage/v1/pools/p1/projects/proj-01",
"mountpoint": "/export/acme/zfs-storage-1",
...
}
}
プロジェクトの変更コマンドは、既存のプロジェクトの属性を変更します。次の URI パラメータを使用します。
ストレージプール名
プロジェクト名
リクエストパラメータ: プロジェクトプロパティー – 任意のプロジェクトプロパティーを新しいプロジェクトの初期値として設定できます。
プロジェクト名を proj-01 から new-name に変更するリクエストの例:
POST /api/storage/v1/pools/p1/projects/proj-01 HTTP/1.1
Host: zfs-storage.example.com:215
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:215 Accept: application/json
プロジェクトの使用状況リソースの取得リクエストは、プロジェクトのユーザー当たりまたはグループ当たりの使用状況データの取得に使用できます。