Isilon: Använda PowerShell med Platform API – Skapa objekt och RAN

Summary: I den här artikeln beskrivs hur du använder PowerShell med OneFS-plattformens API för att skapa objekt och 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

Krävs inte

Cause

Krävs inte

Resolution

Introduktion till JSON

PAPI använder JSON som datautbytesformat och det är viktigt att förstå hur du använder PAPI för att skapa, ändra eller ta bort resurser. Du kan lära dig mer om JSON på www.json.org men den viktigaste principen är att det är fullständigt oberoende programmeringsspråk och bygger på två strukturer:
  • En samling namn-/värdepar
  • En beställd värdelista

Exempel på utdata om att få ett systemobjekt att se ut så här:

{
"<object>": {
"<property>": <värde>,
...
}

Om du vill veta vilken JSON-text som krävs för att posta för att skapa ett objekt kan du titta på PAPI-självdokumentationen genom att skicka följande förfrågan:
GET /platform/1/quota/quotas?describe

Här är relevant PowerShell-kod: 

#Get PAPI-självdokumentation för kvoter
$resource = "/platform/1/quota/quotas?describe"
$uri = $baseurl + $resource
$ISIObject = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
$ISIObject

 

I exemplet nedan beskrivs vad du behöver göra vid självtest för att skapa en ny kvot. Var uppmärksam på de egenskaper som krävs eftersom de kanske inte är samma egenskaper som krävs för motsvarande isi-kommando.

SLN319398_en_US__1i_isilon_1 PowerShell

Med hjälp av exempelegenskaperna är följande ett exempel på en JSON-sträng som kan användas för att skapa en hård kvot för katalogen:

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

När JSON-strängen är klar är allt som återstår att skapa parametrarna Invoke-RestMethod och skicka. I exempelkoden nedan är JSON-strängen brödtexten i POST och att innehållstypen är 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 " Resulting Quota ID: " ISIObject.id USD

Sätta ihop allt

Anta att din miljö har många hemkataloger för användare under en enda överordnad katalog (exempel: /ifs/home) och du vill ange katalogkvoter för var och en av dessa hemkataloger. Använd Isilon RESTful-åtkomst till namnrymds-API:t (RAN) för att hämta sökvägarna till varje användares hemkatalog. Följande kod hämtar underkataloger för en angiven sökväg och ställer sedan in en katalogkvot på varje underkatalog:
 

# Hämta underkataloger för den angivna
sökvägen$resource = '/namespace/' + $path
$uri = $baseurl + $resource
$ISIObject = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
#Loop via varje katalog och ställ in kvoten
ForEach ($folder i $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; charset=utf-8" -Method POST
Write-Host " Resulting Quota ID: " ISIObject2.id
}

Här är utdata från körning av skriptet som är kopplat till det här självtestet:

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.