Toutes les opérations relatives à des projets peuvent se limiter à un projet donné. Les commandes portant sur tous les projets ajoutent "/projects" à l'URI, tandis que les commandes portant sur un seul projet ajoutent "/projects/{project}".
|
Le tableau suivant répertorie les propriétés modifiables au sein d'une ressource de projet.
|
Cette commande répertorie tous les projets dans un pool donné. Chaque projet renvoyé contient la liste des propriétés modifiables répertoriées ci-dessus ainsi que le nom du pool, sa date de création, son état de chargement, les actions de réplication et l'utilisation des données.
Filtre des paramètres de requête : simple filtre de correspondance de chaîne nécessitant une propriété au sein du projet pour contenir la même chaîne de filtre par rapport à sa valeur.
|
Exemple de demande :
GET /api/storage/v1/pools/gold/projects HTTP/1.1 Host: zfs-storage.example.com Accept: application/json
En cas de succès de la commande Get, un code HTTP 200 (OK) est renvoyé ainsi qu'un tableau des propriétés du projet au format JSON.
Exemple de résultat :
HTTP/1.1 200 OK Content-Type: application/json { “projects”: [{ “name”: “proj-01”, ... }, { “name”: “proj-02”, ... } }
Une liste de tous les projets sur tous les pools est également prise en charge. L'URI contiendrait uniquement le chemin /projects.
Exemple de demande d'obtention de tous les projets dont les propriétés contiennent "backup" :
GET /projects?filter=backup HTTP/1.1 Host: zfs-storage.example.com Accept: application/json
Cette commande répertorie les propriétés d'un projet unique dans un pool donné. En cas de succès de la commande Get, un code HTTP 200 (OK) est renvoyé ainsi qu'un tableau des propriétés du projet au format JSON.
|
Exemple de demande pour répertorier le projet nommé "proj-01" dans le pool "gold" :
GET /api/storage/v1/pools/gold/projects/proj-01 HTTP/1.1 Host: zfs-storage.example.com Accept: application/json
Exemple de réponse :
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 } }
La commande de création de projet crée un projet dont le nom donné se situe dans le pool de stockage donné. Le nouveau projet présentant les propriétés par défaut est renvoyé.
|
Paramètres de demande de corps JSON :
nom : le nom du projet doit être renseigné pour créer un projet.
propriétés du projet : chaque propriété du projet peut être définie en tant que valeur initiale du projet.
Exemple de demande de création d'un projet nommé "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” }
Une création réussie renvoie un statut HTTP 201 (Created) dont l'en-tête d'emplacement contient l'URI du nouveau projet. Le corps contient toutes les propriétés du projet au format JSON.
Exemple de résultats :
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”, ... } }
La commande Modify Project modifie les attributs d'un projet existant.
|
Paramètres de demande, propriétés de projet : chaque propriété du projet peut être définie en tant que valeur initiale du projet.
Exemple de demande de modification d'un projet nommé "proj-01" en "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” }
Une réponse obtenue avec succès renvoie le code de statut HTTP 202 (Accepted) et répertorie toutes les propriétés du projet.
Exemple de réponse :
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”, ... } }
La commande Delete Project supprime un projet unique dans un pool donné.
|
Exemple de demande :
DELETE /api/storage/v1/pools/gold/projects/proj-01 HTTP/1.1 Host: zfs-storage.example.com Accept: application/json
La demande d'obtention de ressources d'utilisation de projet peut permettre d'obtenir les données d'utilisation par utilisateur ou par groupe lié au projet.