Isilon: Powershellin käyttäminen Platform API:n kanssa – Objektien ja RANin luominen
Summary: Tässä artikkelissa kerrotaan, miten Powershelliä käytetään OneFS Platform API:n kanssa objektien ja RAN:n luomiseen.
Symptoms
Cause
Resolution
JSONin esittely
PAPI käyttää JSONia tiedonsiirtomuotona. On tärkeää ymmärtää, miten sitä voidaan hyödyntää PAPI: n käyttämiseen resurssien luomiseen, muokkaamiseen tai poistamiseen. Lisätietoja JSONista on osoitteessa www.json.org . Keskeinen periaate on, että se on täysin itsenäinen ohjelmointikieli ja perustuu kahteen rakenteeseen:
- Kokoelma nimi- ja arvopareja
- Järjestetty arvoluettelo
Esimerkkitulos API-objektin hakemisesta voisi näyttää tältä:
{
"<object>": {
"<property>": <value>,
...
}
Jos haluat tietää, mitä JSON-tekstitulosteita on käytettävissä, meidän on annettava POST-komento objektin luomiseksi; Katso PAPI-itsedokumentaatiota lähettämällä seuraava pyyntö:
GET /platform/1/quota/quotas?describe
Tässä on asiaankuuluva Powershell-koodi:
#Get PAPI self documentation for quotas $resource = "/platform/1/quota/quotas?describe" $uri = $baseurl + $resource $ISIObject = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get $ISIObject
Alla olevassa esimerkkituloksessa kerrotaan, mitä sinun on POSTATTAVA, jotta voit luoda uuden kiintiön. Kiinnitä huomiota vaadittuihin ominaisuuksiin, koska ne eivät välttämättä ole samoja ominaisuuksia, joita vastaava edellyttää isi Komento.
Seuraavassa on esimerkkiominaisuuksien avulla esimerkki JSON-merkkijonosta, jota voidaan käyttää hakemiston sitovan kiintiön luomiseen:
$QuotaObject = @"
{"type":"directory","include_snapshots": false,"container": true, "path": /ifs/home/user1", "enforced": true, "thresholds": {"hard":10000000},"thresholds_include_overhead": false}
"@
Kun JSON-merkkijono on valmis, jäljellä on vain rakentaa Invoke-RestMethod parametrit ja lähetä. Alla olevassa esimerkkikoodissa JSON-merkkijono on POST-tiedoston tekstiosa ja sisältötyyppi on 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
Kaiken kokoaminen yhteen
Oletetaan esimerkin avulla, että ympäristössäsi on useita kotihakemistoja käyttäjille yhdessä päähakemistossa (esimerkki: /ifs/home) ja haluat määrittää hakemistokiintiöt kullekin näistä kotihakemistoista. Isilon RESTful Access to the namespace (RAN) API -sovellusliittymän avulla saat polut kunkin käyttäjän kotihakemistoon. Seuraava koodi hakee määritetyn polun alihakemistot ja asettaa sitten hakemistokiintiön kullekin alihakemistolle:
# Get subdirectories of path specified
$resource = '/namespace/' + $path
$uri = $baseurl + $resource
$ISIObject = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
#Loop through each directory and set the quota
ForEach($folder in $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
$ISIObject2 = Invoke-RestMethod -Uri $uri -Headers $headers -Body $QuotaObject -ContentType "application/json; charset=utf-8" -Method POST
Write-Host " Resulting Quota ID: " $ISIObject2.id
}
Tässä on tulos tähän viestiin liitetyn komentosarjan suorittamisesta: