Public/ps1/Job/Get-ApprxrRemoteJob.ps1
|
<#
.SYNOPSIS Retrieves a remote job for a specified Apprxr pipeline. .DESCRIPTION Fetches a job assignment from the remote server for the given pipeline, processes the job, and logs the result. Handles SQL and file jobs as needed. .PARAMETER pipeline The name of the pipeline to retrieve a job for. .EXAMPLE Get-ApprxrRemoteJob -pipeline 'Pipeline1' .NOTES Used for remote job management and execution in Apprxr automation. #> function Get-ApprxrRemoteJob{ param ($pipeline) if (-not [string]::IsNullOrEmpty($pipeline) -and $pipeline -ne "Default") { $channelId = "?channelId=$($pipeline)" } $deliverResult = "api/services/app/RemoteControl/SetDeliveries" $getTask= "api/services/app/RemoteControl/GetAssignment$channelId" #Get the job from the server $job = (Get-ApprxrResult -request $getTask).result if (-not $job){ return } try { Log("Receive the following job: $job") if ($job.Action -eq "SQL") { $result = Start-ApprxrJobSql -taskInformation $job $result | Add-Member -MemberType NoteProperty -Name "Id" -value $job.Id -Force -ErrorAction SilentlyContinue } elseif ($job.Action -eq "FILE") { $result = Start-ApprxrJobFile -Base64File $job.Base64File -FileLocation $job.FileLocation -Mode $job.Mode -FileName $job.FileName $result | Add-Member -MemberType NoteProperty -Name "Id" -value $job.Id -Force -ErrorAction SilentlyContinue } elseif ($job.Action -eq "HTTP") { $result = Start-ApprxrJobHtml -taskInformation $job $result | Add-Member -MemberType NoteProperty -Name "Id" -value $job.Id -Force -ErrorAction SilentlyContinue } elseif ($job.Action -eq "START_PIPELINES") { $result = [PSCustomObject]@{ success = $true message = Start-AllApprxrPipelines } } elseif ($job.Action -eq "GET_PIPELINES") { $result = [PSCustomObject]@{ success = $true message = Get-AllApprxrPipelines } } elseif ($job.Action -eq "STOP_PIPELINES") { $result = [PSCustomObject]@{ success = $true message = Stop-AllApprxrJobs } } elseif ($job.Action -eq "CREATE_PIPELINE") { $result = [PSCustomObject]@{ success = $true message = Create-ApprxrPipelineJob } } elseif ($job.Action -eq "SELFUPDATE") { $result = [PSCustomObject]@{ success = $true message = Start-UpgradeApprxr } } elseif ($job.Action -eq "GET_VERSION") { $module = Get-Module -Name Apprxr -ListAvailable | Select-Object -First 1 $version = if ($module) { $module.Version.ToString() } else { 'Unknown' } $result = [PSCustomObject]@{ success = $true message = $version } } elseif ($job.Action -like 'POWERSHELL' -and $job.Command) { try { $psResult = Invoke-Expression $job.Command $result = [PSCustomObject]@{ success = $true message = $psResult executedCommand = $job.Command } } catch { $result = [PSCustomObject]@{ success = $false message = ("PowerShell command failed: " + $_) executedCommand = $job.Command } } } else { $result = [PSCustomObject]@{ success = $false message = ("There is no handler known for given action: " + $job.Action) } } } catch { $result = [PSCustomObject]@{ success = $false message = ("There is a unhandled error: " + $_) } } # Send result to server $result | Add-Member -MemberType NoteProperty -Name "CreationDate" -value (Get-Date).ToString("o") Get-ApprxrResult -request $deliverResult -body ($result | ConvertTo-Json) Remove-Variable result } |