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.
Symptoms
Cause
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.
À 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 :
$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 :
