Initial commit
This commit is contained in:
commit
6bf433c9a9
20 changed files with 1162 additions and 0 deletions
75
Private/Invoke-GpfsApiRequest.ps1
Normal file
75
Private/Invoke-GpfsApiRequest.ps1
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
function Invoke-GpfsApiRequest {
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateSet('GET', 'POST', 'PUT', 'DELETE', 'PATCH')]
|
||||
[string]$Method,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[string]$Endpoint,
|
||||
|
||||
[hashtable]$Body,
|
||||
|
||||
[hashtable]$QueryParameters
|
||||
)
|
||||
|
||||
if (-not $script:GpfsSession) {
|
||||
throw 'Not connected to a GPFS server. Run Connect-GpfsServer first.'
|
||||
}
|
||||
|
||||
$session = $script:GpfsSession
|
||||
$uri = '{0}/scalemgmt/{1}/{2}' -f $session.BaseUrl, $session.ApiVersion, $Endpoint.TrimStart('/')
|
||||
|
||||
if ($QueryParameters -and $QueryParameters.Count -gt 0) {
|
||||
$queryParts = $QueryParameters.GetEnumerator() | ForEach-Object {
|
||||
'{0}={1}' -f $_.Key, [uri]::EscapeDataString($_.Value.ToString())
|
||||
}
|
||||
$uri = '{0}?{1}' -f $uri, ($queryParts -join '&')
|
||||
}
|
||||
|
||||
$params = @{
|
||||
Method = $Method
|
||||
Uri = $uri
|
||||
Headers = $session.Headers
|
||||
ContentType = 'application/json'
|
||||
TimeoutSec = $session.TimeoutSeconds
|
||||
ErrorAction = 'Stop'
|
||||
}
|
||||
|
||||
if ($session.SkipCertificateCheck) {
|
||||
$params['SkipCertificateCheck'] = $true
|
||||
}
|
||||
|
||||
if ($Body -and $Body.Count -gt 0) {
|
||||
$params['Body'] = $Body | ConvertTo-Json -Depth 20
|
||||
}
|
||||
|
||||
try {
|
||||
$response = Invoke-RestMethod @params
|
||||
return $response
|
||||
}
|
||||
catch {
|
||||
$statusCode = $null
|
||||
$detail = $_.ErrorDetails.Message
|
||||
|
||||
if ($_.Exception.Response) {
|
||||
$statusCode = [int]$_.Exception.Response.StatusCode
|
||||
}
|
||||
|
||||
$msg = if ($statusCode) { "GPFS API error (HTTP $statusCode)" } else { 'GPFS API error' }
|
||||
if ($detail) {
|
||||
try {
|
||||
$parsed = $detail | ConvertFrom-Json
|
||||
$msg = '{0}: {1}' -f $msg, $parsed.status.message
|
||||
}
|
||||
catch {
|
||||
$msg = '{0}: {1}' -f $msg, $detail
|
||||
}
|
||||
}
|
||||
else {
|
||||
$msg = '{0}: {1}' -f $msg, $_.Exception.Message
|
||||
}
|
||||
|
||||
throw $msg
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue