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

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

Cet article concerne Cet article ne concerne pas Cet article n’est associé à aucun produit spécifique. Toutes les versions du produit ne sont pas identifiées dans cet article.

Symptômes

Nicht erforderlich

Cause

Nicht erforderlich

Résolution

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

Produits concernés

Isilon, PowerScale OneFS, Isilon Platform API
Propriétés de l’article
Numéro d’article: 000132770
Type d’article: Solution
Dernière modification: 12 Oct 2023
Version:  5
Trouvez des réponses à vos questions auprès d’autres utilisateurs Dell
Services de support
Vérifiez si votre appareil est couvert par les services de support.