Isilon: Utilizzo di PowerShell con l'API della piattaforma - Creazione di object e RAN

Summary: Questo articolo spiega come utilizzare PowerShell con l'API della piattaforma OneFS per creare object e 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

Non richiesto

Cause

Non richiesto

Resolution

Introduzione a JSON

PAPI utilizza JSON come formato di scambio dei dati ed è fondamentale capire come utilizzarlo per utilizzare PAPI per creare, modificare o eliminare risorse. È possibile ottenere ulteriori informazioni su JSON in www.json.org , ma il principio chiave è che si tratta di un linguaggio di programmazione indipendente completo ed è costruito su due strutture:
  • Una raccolta di coppie nome/valore
  • Elenco ordinato di valori

L'output di esempio derivante dall'ottenimento di un oggetto di sistema sarà simile al seguente:

{
"<object>": {
"<proprietà>": <valore>,
...
}

Per sapere quale testo JSON è necessario eseguire il POST per creare un oggetto, esaminare la documentazione self-service PAPI inviando la seguente richiesta:
GET /platform/1/quota/quotas?describe 

Di seguito è riportato il codice PowerShell pertinente:

#Get documentazione self-service PAPI per le quote
$resource = "/platform/1/quota/quotas?describe"
$uri = $baseurl + $resource
$ISIObject = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
$ISIObject

 

L'output di esempio riportato di seguito descrive ciò che è necessario eseguire il POST per creare una nuova quota. Prestare attenzione alle proprietà richieste poiché potrebbero non essere le stesse proprietà richieste per il comando isi corrispondente.

SLN319398_en_US__1i_isilon_1 PowerShell

Utilizzando le proprietà di esempio, di seguito è riportata una stringa JSON di esempio che può essere utilizzata per creare una quota rigida della directory:

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

Una volta completata la stringa JSON, resta solo la creazione dei parametri Invoke-RestMethod e l'invio. Nel codice di esempio riportato di seguito, la stringa JSON è il corpo del POST e il tipo di contenuto è application/json:

$headers = @{"Authorization"="Basic $($EncodedPassword)"}
$uri = $baseurl + $resource
$ISIObject = Invoke-RestMethod -Uri $uri -Headers $headers -Body $QuotaObject -ContentType "application/json; carset=utf-8" -Method POST
Write-Host " RESULTING Quota ID: " $ ISIObject.id

Mettere insieme tutto

Utilizzando un esempio, supponiamo che l'ambiente disponga di molte home directory per gli utenti in una singola directory padre (ad esempio: /ifs/home) e si desidera impostare quote di directory per ciascuna di queste home directory. Utilizzare l'API RESTful Isilon RESTful all'API namespace (RAN) per ottenere i percorsi per ogni directory home dell'utente. Il codice seguente otterrà le sottodirectory di un percorso specificato e quindi imposterà una quota di directory su ciascuna sottodirectory:
 

# Ottieni sottodirectory del percorso specificato
$resource = '/namespace/' + $path
$uri = $baseurl + $resource
$ISIObject = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
#Loop tramite ogni directory e impostare la quota
ForEach($folder in $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", "enforced": true, "thresholds": {"hard":$quotasize},"thresholds_include_overhead": false}
"@
$headers = @{"Authorization"="Basic $($EncodedPassword)"}
$uri = $baseurl + $resource
$ISIObject 2 = Invoke-RestMethod -Uri $uri -Headers $headers -Body $QuotaObject -ContentType "application/json; carset=utf-8" -Method POST
Write-Host " RESULTING Quota ID: " $ ISIObject2.id
}

Ecco l'output dell'esecuzione dello script collegato a questo post:

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.