67 lines
1.7 KiB
PowerShell
67 lines
1.7 KiB
PowerShell
function Get-GpfsJob {
|
|
[CmdletBinding(DefaultParameterSetName = 'All')]
|
|
param(
|
|
[Parameter(Mandatory, ParameterSetName = 'ById', Position = 0)]
|
|
[string]$JobId,
|
|
|
|
[Parameter(ParameterSetName = 'All')]
|
|
[ValidateSet('RUNNING', 'COMPLETED', 'FAILED', 'CANCELLED')]
|
|
[string]$Status
|
|
)
|
|
|
|
if ($PSCmdlet.ParameterSetName -eq 'ById') {
|
|
Invoke-GpfsApiRequest -Method GET -Endpoint "jobs/$JobId"
|
|
}
|
|
else {
|
|
$params = @{ Method = 'GET'; Endpoint = 'jobs' }
|
|
if ($Status) {
|
|
$params['QueryParameters'] = @{ status = $Status }
|
|
}
|
|
Invoke-GpfsApiRequest @params
|
|
}
|
|
}
|
|
|
|
function Remove-GpfsJob {
|
|
[CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'Medium')]
|
|
param(
|
|
[Parameter(Mandatory, Position = 0)]
|
|
[string]$JobId
|
|
)
|
|
|
|
if ($PSCmdlet.ShouldProcess($JobId, 'Remove job')) {
|
|
Invoke-GpfsApiRequest -Method DELETE -Endpoint "jobs/$JobId"
|
|
}
|
|
}
|
|
|
|
function Wait-GpfsJob {
|
|
[CmdletBinding()]
|
|
param(
|
|
[Parameter(Mandatory, Position = 0)]
|
|
[string]$JobId,
|
|
|
|
[Parameter()]
|
|
[int]$PollingIntervalSeconds = 5,
|
|
|
|
[Parameter()]
|
|
[int]$TimeoutSeconds = 300
|
|
)
|
|
|
|
$start = Get-Date
|
|
|
|
do {
|
|
Start-Sleep -Seconds $PollingIntervalSeconds
|
|
|
|
$job = Invoke-GpfsApiRequest -Method GET -Endpoint "jobs/$JobId"
|
|
$currentStatus = $job.jobs[0].status
|
|
|
|
Write-Verbose "Job $JobId status: $currentStatus"
|
|
|
|
if ($currentStatus -in @('COMPLETED', 'FAILED', 'CANCELLED')) {
|
|
return $job
|
|
}
|
|
|
|
if (((Get-Date) - $start).TotalSeconds -ge $TimeoutSeconds) {
|
|
throw "Timed out waiting for job $JobId after $TimeoutSeconds seconds."
|
|
}
|
|
} while ($true)
|
|
}
|