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é. La demande utilise un paramètre URI unique, qui est le nom du pool de stockage. 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.
Paramètres de requête : filter – 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/p1/projects HTTP/1.1 Host: zfs-storage.example.com:215 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:215 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 zfs-storage-1 :
GET /api/storage/v1/pools/p1/projects/proj-01 HTTP/1.1 Host: zfs-storage.example.com:215 Accept: application/json
Exemple de résultat :
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 } }
La commande de création de projet crée un projet dont le nom donné se situe dans le pool de stockage donné. La demande utilise un paramètre URI unique, qui est le nom du pool de stockage. 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/p1/projects HTTP/1.1 Host: zfs-storage.example.com:215 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ésultat :
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", ... } }
La commande de modification de projet modifie les attributs d'un projet existant. Les paramètres URI suivants sont utilisés :
Nom du pool de stockage
Nom de projet
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/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" }
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ésultat :
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", ... } }
La commande de suppression de projet supprime un projet unique dans un pool donné. Les paramètres URI suivants sont utilisés :
Nom du pool de stockage
Nom de projet
Pour surveiller l'espace à récupérer dans le pool de stockage si la mise à jour différée pour la suppression d'ensembles de données asynchrone (OS8.7.0) a été acceptée, saisissez la commande GET pour pools/pool. Notez l'espace pour la propriété async_destroy_reclaim_space. Lorsque l'opération est terminée, un 0 (zéro) s'affiche.
Exemple de demande :
DELETE /api/storage/v1/pools/p1/projects/proj-01 HTTP/1.1 Host: zfs-storage.example.com:215 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.