Isilon: Uso de PowerShell con API de plataforma: creación de objetos y RAN

Summary: En este artículo, se explica cómo usar PowerShell con la API de la plataforma OneFS para crear objetos y RAN.

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

No se requiere

Cause

No se requiere

Resolution

Introducción a JSON

PAPI utiliza JSON como formato de intercambio de datos y es fundamental comprender cómo aprovecharlo para usar PAPI a fin de crear, modificar o eliminar recursos. Puede obtener más información sobre JSON en www.json.org , pero el principio clave es que es un lenguaje de programación independiente completo y se basa en dos estructuras:
  • Una recopilación de pares de nombre/valor
  • Una lista ordenada de valores

El resultado de ejemplo de la obtención de un objeto del sistema se vería así:

{
"<object>": {
"<property>": <value>,
...
}

Para saber qué texto JSON debemos publicar para crear un objeto, consulte la documentación automática de PAPI enviando la siguiente solicitud:
GET /platform/1/quota/quotas?describe

Este es el código de PowerShell pertinente: 

#Get documentación automática de PAPI para cuotas
$resource = "/platform/1/quota/quotas?describe"
$uri = $baseurl + $resource
$ISIObject = Invoke-Rest Ctrl -Uri $uri -Headers $headers -Method Get
$ISIObject

 

En la salida de ejemplo que aparece a continuación se describe lo que necesita para post para crear una nueva cuota. Preste atención a las propiedades requeridas, ya que es posible que no sean las mismas propiedades requeridas para el comando isi correspondiente.

SLN319398_en_US__1i_isilon_1 powershell

Con las propiedades de ejemplo, la siguiente es una cadena JSON de ejemplo que se puede usar para crear una cuota máxima de directorio:

$QuotaObject = @"
{"type":"directory","include_snapshots": false,"container": true, "path": /ifs/home/user1", "aplicado": true, "thresholds": {"hard":100000000},"thresholds_include_overhead": false}
" @ 

Una vez completada la cadena JSON, todo lo que queda es crear los parámetros Invoke-Rest Rack y enviar. En el siguiente código de ejemplo, la cadena JSON es el cuerpo de la POST y el tipo de contenido es application/json:

$headers = @{"Authorization"="Basic $($EncodedPassword)"}
$uri = $baseurl + $resource
$ISIObject = Invoke-Rest Pool -Uri $uri -Headers $headers -Body $QuotaObject -ContentType "application/json; charset=utf-8": Método POST
Write-Host " ID de cuota resultante: " $ISIObject.id

Juntando todo

Con un ejemplo, supongamos que su entorno tiene muchos directorios principales para los usuarios en un directorio principal único (por ejemplo: /ifs/home) y desea establecer cuotas de directorio para cada uno de estos directorios principales. Utilice isilon RESTful Access to the Namespace (RAN) API para obtener las rutas a cada directorio principal del usuario. El siguiente código obtendrá los subdirectorios de una ruta especificada y, a continuación, establecerá una cuota de directorio en cada subdirectorio:
 

# Obtener subdirectorios de la ruta especificada
$resource = '/namespace/' + $path
$uri = $baseurl + $resource
$ISIObject = Invoke-Rest Rack -Uri $uri -Headers $headers -Method Get
#Loop a través de cada directorio y configure la cuota
ForEach($folder en $ISIObject.children) {

#Create quota
$resource ="/platform/1/quota/quotas"
Write-Host "Setting a $quotasize byte quota on $quotapath"
$QuotaObject = @"
{"type":"directory","include_snapshots": false,"container": true, "path": "$quotapath", "aplicado": verdadero, "umbrales": {"hard":$quotasize},"thresholds_include_overhead": false}
"@
$headers = @{"Authorization"="Basic $($EncodedPassword)"}
$uri = $baseurl + $resource
$ISIObject 2 = Invoke-Rest Action -Uri $uri -Headers $headers -Body $QuotaObject -ContentType "application/json; charset=utf-8": Método POST
Write-Host " ID de cuota resultante: " $ISIObject2.id
}

Esta es la salida de la ejecución del script adjunto a esta publicación:

SLN319398_en_US__2i_isilon_2 powershell
SLN319398_en_US__3i_isilon_3 powershell

Affected Products

Isilon, PowerScale OneFS, Isilon Platform API
Article Properties
Article Number: 000132770
Article Type: Solution
Last Modified: 12 Oct 2023
Version:  5
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.