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

Summary: Este artigo explica como usar o PowerShell com a API da plataforma OneFS para criar objetos e 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

Não obrigatório

Cause

Não obrigatório

Resolution

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

Affected Products

Isilon, PowerScale OneFS, Isilon Platform API
Article Properties
Article Number: 000132770
Article Type: Solution
Last Modified: 12 Oct 2023
Version:  5
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.