Isilon: Brug af PowerShell med Platform API - Oprettelse af objekter og RAN

摘要: Denne artikel forklarer, hvordan du bruger PowerShell med OneFS Platform API til at oprette objekter og RAN.

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

症状

Ikke påkrævet

原因

Ikke påkrævet

解决方案

Introduktion til JSON

PAPI bruger JSON som dataoverførselsformat, og det er meget vigtigt at forstå, hvordan man anvender PAPI til at oprette, ændre eller slette ressourcer. Du kan få mere at vide om JSON på www.json.org , men det vigtigste udgangspunkt er, at det er et selvstændigt programmeringssprog, der bygger på to strukturer:
  • En samling navne-/værdipar
  • En bestilt liste over værdier

Eksempel på output fra hentning af et systemobjekt ser sådan ud:

{
"<objekt>": {
"<egenskab>": <værdi>,
...
}

For at vide, hvilken JSON-tekst vi har brug for til POST for at oprette et objekt, kan du se i PAPI-selvdokumentationen ved at sende følgende anmodning:
GET /platform/1/quota/quotas?beskriv

Her er den relevante PowerShell-kode: 

#Get PAPI-selvdokumentation for kvoter
$resource = "/platform/1/kvote/kvoter?beskriv"
$uri = $baseurl + $resource
$ISIObject = Invoke-RestMeturi -Uri $uri -Headers $headers -Method Get
$ISIObject

 

Nedenstående eksempel på output beskriver, hvad du skal bruge til POST for at oprette en ny kvote. Vær opmærksom på de nødvendige egenskaber, da de muligvis ikke er de samme egenskaber, som er påkrævet for den tilsvarende isi-kommando.

SLN319398_en_US__1i_isilon_1 PowerShell

Med egenskaberne i eksemplet er følgende et eksempel på en JSON-streng, der kan bruges til at oprette en mappehardkvote:

$QuotaObject = @"
{"type":"directory","include_snapshots": falsk,"container": sand, "sti": /ifs/home/user1", "håndhæves": sand, "tærskler": {"hard": 10000000},"thresholds_include_overhead": false}
" @ 

Når JSON-strengen er fuldført, er alt, hvad der er tilbage, at bygge Invoke-RestMetometer-parametrene og indsende. I nedenstående eksempelkode er JSON-strengen indholdet i POST, og at indholdstypen er application/json:

$headers = @{"Authorization"="Basic $($EncodedPassword)"}
$uri = $baseurl + $resource
$ISIObject = Invoke-RestMet byte -Uri $uri -Headers $headers -Body $QuotaObject -ContentType "application/json; charset=utf-8" -Metode POST
Write-Host " Resulterende kvote-id: " $ISIObject.id

Sætte det hele sammen

Lad os f.eks. antage, at dit miljø har mange hjemmebiblioteker for brugere under en enkelt overordnet mappe (f.eks.: /ifs/home), og du vil angive mappekvoter for hver af disse hjemmebiblioteker. Brug Isilon RESTful-adgang til navneområdets API (RAN) for at hente stierne til hver enkelt brugers hjemmemappe. Følgende kode henter undermapperne for en bestemt sti og indstiller derefter en mappekvote i hver undermappe:
 

# Hent undermapper for den angivne
sti$resource = "/namespace/" + $path
$uri = $baseurl + $resource
$ISIObject = Invoke-RestMeturi -Uri $uri -Headers $headers -Method Get
#Loop through hver mappe og indstille kvoten
ForEach($folder i $ISIObject.children) {

#Create kvote
$resource ="/platform/1/kvote/kvoter"
Write-Host "Indstilling af en $quotasize bytekvote på $quotapath"
$QuotaObject = @"
{"type":"directory","include_snapshots": falsk,"container": sand, "sti": "$quotapath", "håndhæves": sand, "grænser": {"hard":$quotasize},"thresholds_include_overhead": false}
"@
$headers = @{"Authorization"="Basic $($EncodedPassword)"}
$uri = $baseurl + $resource
$ISIObject 2 = Invoke-RestMetometer -Uri $uri -Headers $headers -Body $QuotaObject -ContentType "application/json; charset=utf-8" -Metode POST
Write-Host " Resulterende kvote-id: "$ISIObject2.id
}

Her er outputtet fra at køre det script, der er vedhæftet til dette indlæg:

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
从其他戴尔用户那里查找问题的答案
支持服务
检查您的设备是否在支持服务涵盖的范围内。