Isilon: Usando o PowerShell com API de plataforma — criando objetos e RAN

摘要: Este artigo explica como usar o PowerShell com a API da plataforma OneFS para criar objetos e RAN.

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

症状

Não obrigatório

原因

Não obrigatório

解决方案

Introdução ao JSON

O PAPI usa JSON como o formato de troca de dados e é essencial entender como usá-lo para usar o PAPI para criar, modificar ou excluir recursos. Você pode saber mais sobre o JSON na www.json.org , mas o principal princípio é que ela é uma linguagem de programação independente completa e é baseada em duas estruturas:
  • Um conjunto de pares de nome/valor
  • Uma lista ordenada de valores

Exemplo de resultado de obter um objeto do sistema seria assim:

{
"<objeto>": {
"<propriedade>": <valor>,
...
}

Para saber qual texto JSON precisamos publicar para criar um objeto, consulte a documentação automática da PAPI enviando a seguinte solicitação:
GET /platform/1/quota/quotas?describe

Este é o código relevante do PowerShell: 

#Get documentação automática papi para cotas
$resource = "/platform/1/quota/quotas?describe"
$uri = $baseurl + $resource
$ISIObject = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
$ISIObject

 

O exemplo de resultado abaixo descreve o que você precisa fazer post para criar uma nova cota. Preste atenção às propriedades necessárias, pois elas podem não ser as mesmas necessárias para o comando isi correspondente.

SLN319398_en_US__1i_isilon_1 PowerShell

Usando as propriedades de exemplo, o seguinte é um exemplo de string JSON que pode ser usada para criar uma cota fixa de diretório:

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

Com a string JSON concluída, tudo o que resta é criar os parâmetros Invoke-RestMethod e enviar. No código de exemplo abaixo, a string JSON é o corpo do POST e que o tipo de conteúdo é 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

Reunindo tudo isso

Usando um exemplo, vamos supor que seu ambiente tenha muitos diretórios base para usuários em um só diretório principal (exemplo: /ifs/home) e você deseja definir cotas de diretório para cada um desses diretórios base. Use o Isilon RESTful Access to the Namespace (RAN) API para obter os caminhos para cada diretório base do usuário. O seguinte código obterá os subdiretórios de um caminho especificado e, em seguida, definirá uma cota de diretório em cada subdiretório:
 

# Obter subdiretórios
do caminho especificado$resource = '/namespace/' + $path
$uri = $baseurl + $resource
$ISIObject = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
#Loop through cada
diretório e defina a cota 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", "imposto": verdadeiro, "limites": {"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" -Method POST
Write-Host " Resulting Quota ID: " $ISIObject2.id
}

Esta é a saída da execução do script anexado a esta publicação:

SLN319398_en_US__2i_isilon_2 PowerShell
SLN319398_en_US__3i_isilon_3 PowerShell

受影响的产品

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