Isilon: PowerShell gebruiken met Platform API - Objecten maken en RAN

Summary: In dit artikel wordt uitgelegd hoe u PowerShell gebruikt met de OneFS Platform API om objecten en RAN te maken.

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

Niet vereist

Cause

Niet vereist

Resolution

Inleiding tot JSON

De PAPI gebruikt JSON als indeling voor data-uitwisseling en het is van cruciaal belang om te begrijpen hoe deze kan worden gebruikt om PAPI te gebruiken om bronnen te maken, te wijzigen of te verwijderen. U kunt meer informatie over JSON vinden op www.json.org , maar het belangrijkste principe is dat het volledige onafhankelijke programmeertaal is en is gebouwd op twee structuren:
  • Een verzameling naam-/waardeparen
  • Een bestelde lijst met waarden

Voorbeeld van uitvoer van het ophalen van een systeemobject ziet er als dit uit:

{
"<object>": {
"<eigenschap>": <waarde>,
...
}

Om te weten welke JSON-tekst we nodig hebben om een object te maken, bekijkt u de PAPI-zelfdocumentatie door de volgende aanvraag te verzenden:
GET /platform/1/quota/quotas?describe

Hier is de relevante PowerShell-code: 

#Get PAPI-zelfdocumentatie voor quota
$resource = "/platform/1/quota/quotas?describe"
$uri = $baseurl + $resource
$ISIObject = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
$ISIObject

 

In het onderstaande voorbeeld wordt beschreven wat u moet POST om een nieuwe quota te maken. Let op de vereiste eigenschappen, omdat deze mogelijk niet dezelfde eigenschappen zijn die nodig zijn voor de bijbehorende isi-opdracht.

SLN319398_en_US__1i_isilon_1-powershell

Met behulp van de voorbeeldeigenschappen is het volgende een voorbeeld JSON-tekenreeks die kan worden gebruikt om een harde directoryquota te maken:

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

Nu de JSON-tekenreeks is voltooid, hoeft u alleen nog de Invoke-RestMethod-parameters te bouwen en te verzenden. In de onderstaande voorbeeldcode is de JSON-tekenreeks de body van de POST en dat het inhoudstype applicatie/json is:

$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 " Resulterend quotum-ID: " $ISIObject.id

Alles in elkaar zetten

Als u een voorbeeld gebruikt, gaan we ervan uit dat uw omgeving veel homedirectory's heeft voor gebruikers onder een enkele bovenliggende directory (bijvoorbeeld: /ifs/home) en u wilt directoryquota instellen voor elk van deze home-directory's. Gebruik de Isilon RESTful Access to the Namespace (RAN) API om de paden naar elke homedirectory van de gebruiker te verkrijgen. De volgende code krijgt de submappen van een opgegeven pad en stelt vervolgens een mapquotum in op elke subdirectory:
 

# Submappen ophalen van het opgegeven
pad$resource = '/namespace/' + $path
$uri = $baseurl + $resource
$ISIObject = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
#Loop via elk directory en stel de quota
ForEach ($folder in $ISIObject.children) {

#Create quota
$resource ="/platform/1/quota/quota"
Write-Host "Setting a $quotasize byte quota on $quotapath"
$QuotaObject = @"
{"type":"directory","include_snapshots": false,"container": true, "path": "$quotapath", "afgedwongen": waar, "drempelwaarden": {"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 " Resulterend quotum-ID: " $ISIObject2.id
}

Hier is de uitvoer van het uitvoeren van het script dat aan dit bericht is gekoppeld:

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.