Todas las operaciones de los proyectos se pueden acotar a una agrupación específica. Los comandos que funcionan a través de todos los proyectos anexan /projects al identificador uniforme de recursos (URI), y comandos que operan en un solo anexo de proyecto /projects/project.
|
La tabla siguiente muestra la lista de propiedades editables dentro de un recurso de proyecto.
|
Este comando muestra todos los proyectos de una agrupación específica. Esta solicitud toma un solo parámetro del URI, que es el nombre de la agrupación de almacenamiento. Cada proyecto devuelto contiene la lista de propiedades modificables enumeradas arriba, además del nombre de la agrupación, la hora de reacción, el estado de carga, las acciones de replicación y uso de datos.
Parámetros de solicitud: filter; un filtro simple de coincidencia de cadenas que requiere una propiedad dentro del proyecto para contener la misma cadena de filtros dentro de su valor.
Ejemplo de solicitud:
GET /api/storage/v1/pools/p1/projects HTTP/1.1 Host: zfs-storage.example.com:215 Accept: application/json
En un comando get correcto, se devuelve un HTTP code 200 (OK) (código HTTP 200 [correcto]) junto con una matriz de las propiedades del proyecto en formato JSON.
Resultado de ejemplo:
HTTP/1.1 200 OK Content-Type: application/json { "projects": [{ "name": "proj-01", ... }, { "name": "proj-02", ... } }
También se admite una lista de proyectos a través de todas las agrupaciones; la URI contendrá solamente la ruta de los proyectos.
Ejemplo de solicitud para obtener todos los proyectos con backup como parte de sus propiedades:
GET /projects?filter=backup HTTP/1.1 Host: zfs-storage.example.com:215 Accept: application/json
Este comando muestra las propiedades de un solo proyecto en una agrupación específica. Un comando get correcto devuelve HTTP Code 200 (OK) (código HTTP 200 [correcto]) junto con las propiedades del proyecto en formato JSON.
Ejemplo de solicitud para mostrar el proyecto denominado proj-01 en la agrupación zfs-storage-1:
GET /api/storage/v1/pools/p1/projects/proj-01 HTTP/1.1 Host: zfs-storage.example.com:215 Accept: application/json
Resultado de ejemplo:
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 } }
El comando de creación de proyecto crea un proyecto con un nombre determinado que reside en una agrupación de almacenamiento determinada. Esta solicitud toma un solo parámetro del URI, que es el nombre de la agrupación de almacenamiento. Se devuelve el proyecto nuevo con propiedades predeterminadas.
Parámetros de solicitud del cuerpo JSON:
name: se debe suministrar el nombre del proyecto para crear un proyecto.
project properties: cualquiera de las propiedades del proyecto se puede configurar como los valores iniciales del proyecto nuevo.
Ejemplo de solicitud para crear un proyecto denominado 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" }
La creación satisfactoria devuelve HTTP Status 201 (Created) (estado HTTP 201 [creado]) con la cabecera de ubicación que contiene el URI del proyecto nuevo. El cuerpo contiene todas las propiedades del proyecto en formato JSON.
Resultado de ejemplo:
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", ... } }
El comando de modificación de proyecto cambia los atributos de un proyecto existente. Se utilizan los siguientes parámetros de URI:
Nombre de agrupación de almacenamiento
Nombre de proyecto
Parámetros de solicitud: project properties; cualquiera de las propiedades del proyecto se puede configurar como los valores iniciales del proyecto nuevo.
Ejemplo de solicitud para cambiar el nombre de un proyecto de proj-01 a 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" }
La respuesta satisfactoria devuelve el estado HTTP Status 202 (Accepted) (HTTP 202 [aceptado]) y muestra todas las propiedades del proyecto.
Resultado de ejemplo:
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", ... } }
El comando suprimir proyecto elimina un solo proyecto de una agrupación determinada. Se utilizan los siguientes parámetros de URI:
Nombre de agrupación de almacenamiento
Nombre de proyecto
Para supervisar la cantidad de espacio que se debe reclamar en la agrupación de almacenamiento si se aceptó la actualización diferida de Supresión asíncrona de juego de datos (OS8.7.0), introduzca el comando GET para pools/pool. Tome nota de la cantidad de espacio para la propiedad async_destroy_reclaim_space. Una vez que finaliza la operación, se muestra 0 (cero).
Ejemplo de solicitud:
DELETE /api/storage/v1/pools/p1/projects/proj-01 HTTP/1.1 Host: zfs-storage.example.com:215 Accept: application/json
Los recursos de uso de proyecto de las solicitudes GET se pueden usar para obtener datos de uso por usuario o por grupo para el proyecto.