Isilon: Brug af PowerShell med Platform API - Oprettelse af objekter og RAN
Summary: Denne artikel forklarer, hvordan du bruger PowerShell med OneFS Platform API til at oprette objekter og RAN.
Symptoms
Cause
Resolution
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.
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:
$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:
