Isilon: Verwenden von PowerShell mit Plattform-API – Erstellen von Objekten und RAN

Summary: In diesem Artikel wird erläutert, wie Sie PowerShell mit der OneFS-Plattform-API verwenden, um Objekte und RAN zu erstellen.

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

Nicht erforderlich

Cause

Nicht erforderlich

Resolution

Einführung in JSON

Papi verwendet JSON als Datenaustauschformat und es ist wichtig zu verstehen, wie man es nutzt, um PAPI zum Erstellen, Ändern oder Löschen von Ressourcen zu verwenden. Sie können mehr über JSON bei www.json.org erfahren, aber das Wichtigste ist, dass es sich um eine vollständige unabhängige Programmiersprache handelt, die auf zwei Strukturen aufbaut:
  • Eine Sammlung von Namens-/Wertpaaren
  • Eine sortierte Liste von Werten

Beispielausgabe vom Abrufen eines Systemobjekts würde wie folgt aussehen:

{
"<Objekt>": {
"<Eigenschaft>": <Wert>,
...
}

Um zu erfahren, welchen JSON-Text wir für den POST benötigen, um ein Objekt zu erstellen, sehen Sie sich die PAPI-Selbstdokumentation an, indem Sie die folgende Anforderung senden:
GET /platform/1/quota/quotas?describe

Hier ist der relevante PowerShell-Code: 

#Get PAPI-Selbstdokumentation für Quotas
$resource = "/platform/1/quota/quotas?describe"
$uri = $baseurl + $resource
$ISIObject = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
$ISIObject

 

In der folgenden Beispielausgabe wird beschrieben, was Sie für den POST benötigen, um eine neue Quota zu erstellen. Achten Sie auf die erforderlichen Eigenschaften, da sie möglicherweise nicht dieselben Eigenschaften sind, die für den entsprechenden isi-Befehl erforderlich sind.

SLN319398_en_US__1i_isilon_1-PowerShell

Mithilfe der Beispieleigenschaften ist die folgende Beispiel-JSON-Zeichenfolge, die verwendet werden kann, um eine Verzeichnis-Hard-Quota zu erstellen:

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

Wenn die JSON-Zeichenfolge abgeschlossen ist, bleibt nur noch das Erstellen der Invoke-RestMethod-Parameter und das Senden. Im folgenden Beispielcode ist die JSON-Zeichenfolge der Text des POST und der Inhaltstyp application/json:

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

Alles zusammensetzen

Angenommen, Ihre Umgebung verfügt über viele Stammverzeichnisse für Benutzer in einem einzigen übergeordneten Verzeichnis (Beispiel: /ifs/home) und Sie möchten Verzeichnis-Quotas für jedes dieser Stammverzeichnisse festlegen. Verwenden Sie die ISILON RESTful Access to the Namespace (RAN)-API, um die Pfade zu jedem Benutzerstammverzeichnis abzurufen. Der folgende Code ruft die Unterverzeichnisse eines angegebenen Pfads ab und legt dann eine Verzeichnis-Quota für jedes Unterverzeichnis fest:
 

# Get subdirectories of path specified
$resource = '/namespace/' + $path
$uri = $baseurl + $resource
$ISIObject = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
#Loop über jedes Verzeichnis und legen Sie die Quota
ForEach($folder in $ISIObject.children) {

#Create quota
$resource ="/platform/1/quota/quotas"
Write-Host "Setting a $quotasize byte quota on $quotapath"
$QuotaObject = @"
fest.{"type":"directory","include_snapshots": false,"container": true, "path": "$quotapath", "erzwungen": 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; charset=utf-8" -Method POST
Write-Host " Resultierende Quota-ID: " $ ISIObject2.id
}

Hier ist die Ausgabe der Ausführung des an diesen Beitrag angehängten Skripts:

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.