public override PipelineErrorDetail GetPipelineRunActivityErrors(PipelineRunRequest request)
        {
            PipelineRun pipelineRun = _adfManagementClient.PipelineRuns.Get
                                      (
                request.ResourceGroupName,
                request.OrchestratorName,
                request.RunId
                                      );

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

            _logger.LogInformation("Create pipeline Activity Runs query filters.");
            RunFilterParameters filterParams = new RunFilterParameters
                                               (
                request.ActivityQueryStart,
                request.ActivityQueryEnd
                                               );

            _logger.LogInformation("Querying ADF pipeline for Activity Runs.");
            ActivityRunsQueryResponse queryResponse = _adfManagementClient.ActivityRuns.QueryByPipelineRun
                                                      (
                request.ResourceGroupName,
                request.OrchestratorName,
                request.RunId,
                filterParams
                                                      );

            //Create initial output content
            PipelineErrorDetail output = new PipelineErrorDetail()
            {
                PipelineName  = request.PipelineName,
                ActualStatus  = pipelineRun.Status,
                RunId         = request.RunId,
                ResponseCount = queryResponse.Value.Count
            };

            _logger.LogInformation("Pipeline status: " + pipelineRun.Status);
            _logger.LogInformation("Activities found in pipeline response: " + queryResponse.Value.Count.ToString());

            //Loop over activities in pipeline run
            foreach (ActivityRun activity in queryResponse.Value)
            {
                if (activity.Error == null)
                {
                    continue; //only want errors
                }

                //Parse error output to customise output
                dynamic outputBlockInner = JsonConvert.DeserializeObject(activity.Error.ToString());
                string  errorCode        = outputBlockInner?.errorCode;
                string  errorType        = outputBlockInner?.failureType;
                string  errorMessage     = outputBlockInner?.message;

                _logger.LogInformation("Activity run id: " + activity.ActivityRunId);
                _logger.LogInformation("Activity name: " + activity.ActivityName);
                _logger.LogInformation("Activity type: " + activity.ActivityType);
                _logger.LogInformation("Error message: " + errorMessage);

                output.Errors.Add(new FailedActivity()
                {
                    ActivityRunId = activity.ActivityRunId,
                    ActivityName  = activity.ActivityName,
                    ActivityType  = activity.ActivityType,
                    ErrorCode     = errorCode,
                    ErrorType     = errorType,
                    ErrorMessage  = errorMessage
                });
            }
            return(output);
        }
예제 #2
0
        public override PipelineErrorDetail GetPipelineRunActivityErrors(PipelineRunRequest request)
        {
            PipelineRun pipelineRun = _pipelineRunClient.GetPipelineRun
                                      (
                request.RunId
                                      );

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

            _logger.LogInformation("Create pipeline Activity Runs query filters.");
            RunFilterParameters filterParams = new RunFilterParameters
                                               (
                request.ActivityQueryStart,
                request.ActivityQueryEnd
                                               );

            _logger.LogInformation("Querying SYN pipeline for Activity Runs.");
            ActivityRunsQueryResponse queryResponse = _pipelineRunClient.QueryActivityRuns
                                                      (
                request.PipelineName,
                request.RunId,
                filterParams
                                                      );

            //Create initial output content
            PipelineErrorDetail output = new PipelineErrorDetail()
            {
                PipelineName  = request.PipelineName,
                ActualStatus  = pipelineRun.Status,
                RunId         = request.RunId,
                ResponseCount = queryResponse.Value.Count
            };

            _logger.LogInformation("Pipeline status: " + pipelineRun.Status);
            _logger.LogInformation("Activities found in pipeline response: " + queryResponse.Value.Count.ToString());

            //Loop over activities in pipeline run
            foreach (ActivityRun activity in queryResponse.Value)
            {
                if (activity.Error == null)
                {
                    continue; //only want errors
                }

                //Parse error output to customise output
                var json = JsonConvert.SerializeObject(activity.Error);
                Dictionary <string, object> errorContent = JsonConvert.DeserializeObject <Dictionary <string, object> >(json);

                _logger.LogInformation("Activity run id: " + activity.ActivityRunId);
                _logger.LogInformation("Activity name: " + activity.ActivityName);
                _logger.LogInformation("Activity type: " + activity.ActivityType);
                _logger.LogInformation("Error message: " + errorContent["message"].ToString());

                output.Errors.Add(new FailedActivity()
                {
                    ActivityRunId = activity.ActivityRunId,
                    ActivityName  = activity.ActivityName,
                    ActivityType  = activity.ActivityType,
                    ErrorCode     = errorContent["errorCode"].ToString(),
                    ErrorType     = errorContent["failureType"].ToString(),
                    ErrorMessage  = errorContent["message"].ToString()
                });
            }
            return(output);
        }