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

摘要: I den här artikeln beskrivs hur du använder PowerShell med OneFS-plattformens API för att skapa objekt och RAN.

本文适用于 本文不适用于 本文并非针对某种特定的产品。 本文并非包含所有产品版本。

症状

Krävs inte

原因

Krävs inte

解决方案

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

受影响的产品

Isilon, PowerScale OneFS, Isilon Platform API
文章属性
文章编号: 000132770
文章类型: Solution
上次修改时间: 12 10月 2023
版本:  5
从其他戴尔用户那里查找问题的答案
支持服务
检查您的设备是否在支持服务涵盖的范围内。