Isilon: Powershell'i Platform API ile Kullanma - Nesne ve RAN Oluşturma
Summary: Bu makalede, nesne ve RAN oluşturmak için OneFS Platform API ile Powershell'in nasıl kullanılacağı açıklanmaktadır.
Symptoms
Cause
Resolution
JSON'a Giriş
PAPI, veri değişim biçimi olarak JSON'u kullanır. Kaynakları oluşturmak, değiştirmek veya silmek için PAPI'yi kullanmak üzere BT'den nasıl yararlanılacağını anlamak kritik önem taşır. JSON hakkında daha fazla bilgiyi www.json.org adresinde bulabilirsiniz. Temel ilke, tamamen bağımsız bir programlama dili olması ve iki yapı üzerine inşa edilmiş olmasıdır:
- Ad ve değer çiftleri koleksiyonu
- Sıralı bir değer listesi
API nesnesi almanın örnek çıktısı şöyle görünebilir:
{
"<object>": {
"<property>": <value>,
...
}
Hangi JSON metin çıktılarının kullanılabilir olduğunu bilmek için, bir nesne oluşturmak üzere bir POST komutu vermeliyiz; aşağıdaki isteği göndererek PAPI öz belgelerine bakın:
GET /platform/1/quota/quotas?describe
İlgili Powershell kodu aşağıda verilmiştir:
#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
Aşağıdaki örnek çıktı, yeni bir kota oluşturmak için yapmanız gerekenleri özetlemektedir. Gerekli özelliklere dikkat edin, çünkü bunlar karşılık gelen için gereken özelliklerle aynı olmayabilir. isi yaparsınız.
Örnek özellikleri kullanarak, aşağıda bir dizin sabit kotası oluşturmak için kullanılabilecek örnek bir JSON dizesi verilmiştir:
$QuotaObject = @"
{"type":"directory","include_snapshots": false,"container": true, "path": /ifs/home/user1", "enforced": true, "thresholds": {"hard":10000000},"thresholds_include_overhead": false}
"@
JSON dizesi tamamlandığında, geriye kalan tek şey Invoke-RestMethod parametreler ve gönder. Aşağıdaki örnek kodda, JSON dizesi POST'un gövdesidir ve içerik türü 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
Hepsini Bir Araya Getirin
Bir örnek kullanarak, ortamınızın tek bir ana dizin altında kullanıcılar için birçok ana dizine sahip olduğunu varsayalım (örnek: /ifs/home) eklediyseniz ve bu ana dizinlerin her biri için dizin kotaları ayarlamak istiyorsunuz. Her kullanıcı ana dizininin yollarını almak için Isilon RESTful Access to the namespace (RAN) API'sini kullanın. Aşağıdaki kod, belirli bir yolun alt dizinlerini alır ve ardından her alt dizin için bir dizin kotası ayarlar:
# 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
}
İşte bu gönderiye ekli komut dosyasını çalıştırmanın çıktısı: