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

 

В примере выходных данных ниже описывается, что необходимо выполнить POST для создания новой квоты. Обратите внимание на требуемые свойства, так как они могут не совпадать со свойствами, необходимыми для соответствующего 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) и вы хотите задать квоты каталогов для каждого из этих домашних каталогов. Используйте Isilon RESTful Access to the Namespace (RAN) API для получения путей к каждому исходному каталогу пользователя. Следующий код извлекает подкаталоги указанного пути, а затем задает квоту каталогов для каждого подкаталога:
 

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