Ісілон: Використання Powershell з Platform API - Створення об'єктів і RAN

摘要: У цій статті пояснюється, як використовувати Powershell з API платформи OneFS для створення об'єктів і RAN.

本文适用于 本文不适用于 本文并非针对某种特定的产品。 本文并非包含所有产品版本。

症状

Не вимагається

原因

Не вимагається

解决方案

Вступ до JSON

PAPI використовує JSON як формат обміну даними, і дуже важливо розуміти, як використовувати його для використання PAPI для створення, зміни або видалення ресурсів. Ви можете дізнатися більше про JSON на www.json.org але ключовий принцип полягає в тому, що це повністю незалежна мова програмування і побудована на двох структурах:
  • Набір пар ім'я/значення
  • Упорядкований список значень

Приклад виведення з отримання системного об'єкта виглядатиме так:

{
"object>"<:
{ "property>"<: <значення>,
...
}

Щоб дізнатися, який текст JSON нам потрібно ОПУБЛІКУВАТИ, щоб створити об'єкт, подивіться на документацію PAPI самостійно, надіславши такий запит:GET /platform/1/quota/quotas?describe

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

#Get Самостійна документація PAPI для квот
$resource = "/platform/1/quota/quotas?describe"
$uri = $baseurl + $resource
$ISIObject = Invoke-RestMethod -uri $uri -headers $headers -method get
$ISIObject

 

У наведеному нижче прикладі описано, що вам потрібно POST, щоб створити нову квоту. Зверніть увагу на обов'язкові властивості, оскільки вони можуть відрізнятися від властивостей, необхідних для відповідної команди isi.

SLN319398_en_US__1i_isilon_1-powershell

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

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

Коли рядок JSON завершено, все, що залишилося, це зібрати параметри Invoke-RestMethod і відправити. У наведеному нижче прикладі коду рядок JSON є тілом файлу POST, а тип вмісту — application/json:

$headers = @{"authorization"="Базовий $($EncodedPassword)"}
$uri = $baseurl + $resource
$ISIObject = Invoke-RestMethod -uri $uri -headers $headers -body $QuotaObject -contentType "application/json; charset=utf-8" -метод POST
write-host " Ідентифікатор результуючої квоти: " ISIObject.id дол.

Збираємо все разом

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

# Отримати підкаталоги
вказаного шляху$resource = '/namespace/' + $path
$uri = $baseurl + $resource$ISIObject = Invoke-RestMethod -uri $uri -Headers $headers -Method Get
#Loop через кожен каталог і встановіть квоту
ForEach($folder in $ISIObject.children) {#Create quota$resource
="/platform/1/quota/quotas"Write-Host "Встановлення квоти $quotasize байтів на $quotapath"$QuotaObject = @"




{"type":"directory","include_snapshots": false,"container": true, "path": "$quotapath", "enforced": true, "пороги": {"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" -метод POST
write-host " Ідентифікатор результуючої квоти: " $ISIObject2.id
}

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

SLN319398_en_US__2i_isilon_2-силова оболонка
SLN319398_en_US__3i_isilon_3-powershell

受影响的产品

Isilon, PowerScale OneFS, Isilon Platform API
文章属性
文章编号: 000132770
文章类型: Solution
上次修改时间: 12 10月 2023
版本:  5
从其他戴尔用户那里查找问题的答案
支持服务
检查您的设备是否在支持服务涵盖的范围内。