Les opérations liées aux systèmes de fichiers répertorient et gèrent les partages de systèmes de fichiers. Toutes les commandes sont configurées pour porter sur un pool de stockage ou un projet donné.
{service_uri}/pools/{pool}/project/{project}
|
Chaque système de fichiers contient des propriétés liées au projet ainsi que les propriétés spécifiques au système de fichiers suivantes.
|
La commande d'énumération des systèmes de fichiers affiche tous les systèmes de fichiers dans un pool ou un projet donné.
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/proj-01/filesystems HTTP/1.1 Host: zfs-storage.example.com Accept: application/json
Une demande traitée avec succès renvoie un code de statut HTTP 200 (OK) ainsi qu'un tableau contenant les propriétés du système de fichiers au format JSON.
Exemple de résultat :
HTTP/1.1 200 OK Content-Type: application/json { “filesystems”: [{ “name”: “filesystem-01”, “project”: “proj-01”, “pool”: “gold”, ... }, { “name”: “filesystem-02”, “project”: “proj-01”, “pool”: “gold”, ... }] }
Une liste de tous les systèmes de fichiers contenus dans tous les pools et projets est également prise en charge. Dans ce cas, l'URI serait /api/storage/v1/filesystems
Exemple de demande d'obtention de tous les systèmes de fichier dont les propriétés contiennent la chaîne "abcd" :
GET /api/storage/v1/filesystems?filter=abcd HTTP/1.1 Host: zfs-storage.example.com Accept: application/json
La commande d'obtention des systèmes de fichiers renvoie les propriétés d'un système de fichiers unique dans un pool ou un projet donné.
|
Exemple de demande pour répertorier le projet nommé "proj-01" :
GET /api/storage/v1/pools/gold/projects/proj-01 HTTP/1.1 Host: zfs-storage.example.com Accept: application/json
En cas de succès de la commande Get, un statut HTTP 200 (OK) est renvoyé ainsi qu'un tableau des propriétés du système de fichiers au format JSON.
Exemple de réponse :
HTTP/1.1 200 OK Content-Type: application/json { "filesystem": { "logbias": "latency", "creation": "20130423T21:30:34", "nodestroy": false, "dedup": false, "sharenfs": "on", "sharesmb": "off", "mountpoint": "/export/grape", "snaplabel": "", "id": "424ca2ec-b3fa-df86-0000-000000000000", "readonly": false, "rrsrc_actions": [], "compression": "off", "sharetftp": "", "source": { "logbias": "default", "dedup": "default", "sharenfs": "inherited", "sharesmb": "off", "mountpoint": "inherited", "rrsrc_actions": "local", "compression": "default", "sharetftp": "inherited", "snapdir": "default", "aclmode": "default", "copies": "default", "aclinherit": "default", "shareftp": "inherited", "readonly": "default", "secondarycache": "default", "exported": "inherited", "vscan": "default", "reservation": "local", "atime": "default", "recordsize": "default", "checksum": "inherited", "sharesftp": "inherited", "nbmand": "default", "rstchown": "default" }, "snapdir": "hidden", "aclmode": "discard", "copies": 1, "aclinherit": "restricted", "shareftp": "", "canonical_name": "platinum/local/default/grape", "recordsize": 131072.0, "usage": { "available": 880395477504.0, "loading": false, "quota": 0.0, "snapshots": 18432.0, "compressratio": 100.0, "reservation": 0.0, "total": 50176.0, "data": 31744.0 }, "secondarycache": "all", "collection": "local", "exported": true, "vscan": false, "reservation": 0.0, "shadow": "none", "atime": true, "pool": "platinum", "quota_snap": true, "name": "grape", "checksum": "fletcher4", "project": "default", "sharesftp": "", "nbmand": false, "reservation_snap": true, "sharedav": "", "rstchown": true } }
La commande de création de systèmes de fichiers crée un système de fichiers avec un nom donné situé dans le pool de stockage ou projet donné. Le nouveau système de fichiers avec les propriétés par défaut est renvoyé.
|
Paramètres de demande :
nom : le nom du système de fichiers doit être renseigné pour créer un nouveau système de fichiers.
propriétés du système de fichiers : chaque propriété répertoriée dans les propriétés du système de fichiers peut être définie en tant que valeur initiale.
Exemple de demande de création d'un système de fichiers nommé "share-01" et dont l'utilisateur "joe" est le propriétaire :
POST /api/storage/v1/pools/gold/projects/proj-01/filesystems HTTP/1.1 Host: zfs-storage.example.com Content-Type: application/json Accept: application/json { “name”: “share-01”, “owner”: “joe” }
Une création réussie renvoie un statut HTTP 201 (Created) dont l'en-tête d'emplacement contient l'URI du nouveau système de fichiers. Le corps contient toutes les propriétés du système de fichiers au format JSON.
Exemple de réponse :
HTTP/1.1 201 Created Content-Type: application/json Location: /api/storage/v1/pools/gold/projects/proj-01/filesystems/share-01 { “filesystem”: { “name”: “share-01”, “pool”: “gold”, “collection”: “local”, “project”: “proj-01”, “owner”: “joe” ... } }
La commande Modify Filesystem modifie les attributs d'un système de fichiers existant. Une réponse obtenue avec succès renvoie le code de statut HTTP 202 (Accepted) et répertorie toutes les propriétés du système de fichiers.
Paramètres de demande, propriétés de système de fichiers : chaque propriété du système de fichiers ou projet peut être modifiée.
|
Exemple de demande de modification d'un nom de système de fichiers "share-01" en "new-name" et de modification de l'utilisateur en "nobody" :
PUT /api/storage/v1/pools/gold/projects/proj-01/filesystems/share-01 HTTP/1.1 Host: zfs-storage.example.com Content-Type: application/json Accept: application/json { “name”: “new-name”, “owner”: “nobody”, }
Exemple de réponse :
HTTP/1.1 202 Accepted Content-Type: application/json Location: http://zfs-storage.example.com:215 /pools/gold/projects/proj-01/filesystems/share-01 { “filesystem”: { “name”: “new-name”, “pool”: “gold”, “collection”: “local”, “project”: “proj-01”, “owner”: “nobody” ... } }
La commande de suppression de systèmes de fichiers supprime un système de fichiers unique dans un pool ou projet donné.
|
Exemple de demande :
DELETE /api/storage/v1/pools/gold/projects/proj-01/filesystems/share-01 HTTP/1.1 Host: zfs-storage.example.com Accept: application/json
Une suppression réussie renvoie le code HTTP 204 (No Content).
Exemple de réponse :
HTTP/1.1 204 No-Content
Les quotas d'utilisateur ou de groupe peuvent être créés ou modifiés respectivement avec les demandes POST et PUT. Les demandes GET liées aux ressources d'utilisation de système de fichiers peuvent être utilisées pour obtenir les données d'utilisation par utilisateur ou par groupe associé au projet.