Ejemplo n.º 1
0
        public override PipelineRunStatus CancelPipeline(PipelineRunRequest request)
        {
            _logger.LogInformation("Getting SYN pipeline current status.");

            PipelineRun pipelineRun;

            pipelineRun = _pipelineRunClient.GetPipelineRun
                          (
                request.RunId
                          );

            //Defensive check
            PipelineNameCheck(request.PipelineName, pipelineRun.PipelineName);

            if (pipelineRun.Status == "InProgress" || pipelineRun.Status == "Queued")
            {
                _logger.LogInformation("Attempting to cancel SYN pipeline.");
                _pipelineRunClient.CancelPipelineRun
                (
                    request.RunId,
                    isRecursive: request.RecursivePipelineCancel
                );
            }
            else
            {
                _logger.LogInformation("ADF pipeline status: " + pipelineRun.Status);
                throw new InvalidRequestException("Target pipeline is not in a state that can be cancelled.");
            }

            //wait for cancelled state
            _logger.LogInformation("Checking ADF pipeline status after cancel request.");
            while (true)
            {
                pipelineRun = _pipelineRunClient.GetPipelineRun
                              (
                    request.RunId
                              );

                _logger.LogInformation("Waiting for pipeline to cancel, current status: " + pipelineRun.Status);

                if (pipelineRun.Status == "Cancelled")
                {
                    break;
                }
                Thread.Sleep(internalWaitDuration);
            }

            //Final return detail
            return(new PipelineRunStatus()
            {
                PipelineName = request.PipelineName,
                RunId = request.RunId,
                ActualStatus = pipelineRun.Status
            });
        }
 public void CancelPipelineRun(string runId)
 {
     _pipelineRunClient.CancelPipelineRun(runId);
 }