Isilon: Використання Powershell з API платформи — створення об'єктів і RAN

Summary: У цій статті пояснюється, як використовувати Powershell з API платформи OneFS для створення об'єктів і 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

Не обов'язково

Cause

Не обов'язково

Resolution

Вступ до JSON

PAPI використовує JSON як формат обміну даними. Вкрай важливо розуміти, як використовувати його для створення PAPI для створення, зміни або видалення ресурсів. Додаткова інформація про JSON доступна за адресою www.json.orgЦе посилання веде на сайт поза межами Dell Technologies. . Ключовий принцип полягає в тому, що це повністю незалежна мова програмування і побудована на двох структурах:

  • Колекція пар імені та значення
  • Впорядкований список значень

Приклад виводу при отриманні об'єкта API може виглядати так:

{
"<object>": {
     "<property>": <value>,
     ...
}

 

Щоб дізнатися, які JSON-текстові виводи доступні, потрібно виконати команду POST для створення об'єкта; перегляньте самодокументацію PAPI, надіславши наступний запит:

GET /platform/1/quota/quotas?describe 

Ось відповідний код Powershell:

#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

 

Приклад результату нижче описує, що потрібно ОПУБЛІКУВАТИ, щоб створити нову квоту. Звертайте увагу на необхідні властивості, оскільки вони можуть відрізнятися від відповідних властивостей isi Командування.

Вихід команд  

Використовуючи приклад властивостей, наведено приклад JSON-рядка, який можна використати для створення жорсткої квоти каталогу:

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

 

Після завершення JSON-рядка все, що залишається — це побудувати Invoke-RestMethod Параметри та подати документи. У наведеному нижче прикладі коду JSON — це тіло POST, а тип контенту — 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
 

Зібрати все разом

Використовуючи приклад, припустимо, що у вашому середовищі є багато домашніх каталогів для користувачів у одному батьківському каталогу (приклад: /ifs/home) і ви хочете встановити квоти каталогів для кожного з цих домашніх каталогів. Використовуйте API Isilon RESTful Access to the namespace (RAN), щоб отримати шляхи до кожної домашньої папки користувача. Наступний код отримує підкаталоги заданого шляху і встановлює квоту каталогу для кожного підкаталогу:
 

# 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
}

 

Ось результат запуску скрипту, доданого до цього допису:

Вихід скрипту  
Вихід скрипту  

Affected Products

Isilon, PowerScale OneFS, Isilon Platform API
Article Properties
Article Number: 000132770
Article Type: Solution
Last Modified: 02 Apr 2026
Version:  7
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.