Isilon : Utilisation de PowerShell avec l’API de plate-forme - Création d’objets et RAN

Summary: Cet article explique comment utiliser PowerShell avec l’API oneFS Platform pour créer des objets et ran.

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

Non requise

Cause

Non requise

Resolution

Présentation de JSON

Le PAPI utilise JSON comme format d’échange de données et il est essentiel de comprendre comment l’exploiter pour utiliser PAPI pour créer, modifier ou supprimer des ressources. Vous pouvez en savoir plus sur JSON au www.json.org , mais le principe principal est qu’il s’agit d’un langage de programmation indépendant complet et repose sur deux structures :
  • Ensemble de paires nom/valeur
  • Une liste ordonnée de valeurs

L’exemple de sortie de l’obtention d’un objet système ressemble à ce qui suit :

{
"<objet> » : {
« <propriété> » : <valeur>,
...
}

Pour savoir quel texte JSON nous devons publier pour créer un objet, consultez la documentation personnelle PAPI en envoyant la demande suivante :
GET /platform/1/quota/quotas ?describe

Voici le code PowerShell pertinent : 

#Get documentation personnelle PAPI pour les quotas
$resource = « /platform/1/quota/quotas ?describe"
$uri = $baseurl + $resource
$ISIObject = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
$ISIObject

 

L’exemple de sortie ci-dessous décrit ce dont vous avez besoin pour effectuer l’autotest de démarrage (POST) pour créer un nouveau quota. Soyez attentif aux propriétés requises, car il se peut qu’elles ne soient pas les mêmes propriétés requises pour la commande isi correspondante.

SLN319398_en_US__1i_isilon_1-PowerShell

À l’aide des exemples de propriétés, voici un exemple de chaîne JSON qui peut être utilisé pour créer un quota strict de répertoire :

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

Une fois la chaîne JSON terminée, il ne reste plus qu’à créer les paramètres Invoke-RestMethod et à les soumettre. Dans l’exemple de code ci-dessous, la chaîne JSON est le corps du POST et le type de contenu est 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

Mise en place d’un ensemble

À l’aide d’un exemple, supposons que votre environnement dispose de nombreux répertoires de base pour les utilisateurs sous un répertoire parent unique (par exemple : /ifs/home) et vous souhaitez définir des quotas de répertoire pour chacun de ces répertoires de base. Utilisez l’API Isilon RESTful Access to the Namespace (RAN) pour obtenir les chemins d’accès à chaque répertoire de base utilisateur. Le code suivant obtient les sous-répertoires d’un chemin spécifié, puis définit un quota de répertoire sur chaque sous-répertoire :
 

# Obtenir les sous-répertoires du chemin spécifié
$resource = '/namespace/' + $path
$uri = $baseurl + $resource
$ISIObject = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
#Loop via chaque répertoire et définissez le quota
ForEach ($folder dans $ISIObject.children) {

#Create quota
$resource ="/platform/1/quota/quotas"
Write-Host « Définition d’un quota d’octets $quotasize sur $quotapath"
$QuotaObject = @ »
{"type » :"directory »,"include_snapshots » : false,"container » : true, « path » : « $quotapath », « appliqué » : vrai, « seuils » : {"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
}

Voici la sortie de l’exécution du script joint à ce post :

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.