Ісілон: Використання Powershell з Platform API - Створення об'єктів і RAN
Summary: У цій статті пояснюється, як використовувати Powershell з API платформи OneFS для створення об'єктів і RAN.
Symptoms
Cause
Resolution
Вступ до 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.
Використовуючи властивості прикладу, нижче наведено приклад рядка 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:
$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
}
Ось результат запуску скрипта, прикріпленого до цього запису:
