Esempio n. 1
0
 public IActionResult Get()
 {
     try
     {
         var poolRepository = new PoolRepository();
         return(Ok(poolRepository.GetAll()));
     }
     catch (Exception e)
     {
         AppSettings.Logger.Error($"Unable to connect to the database at: {AppSettings.Logger}");
         AppSettings.Logger.Error($"The error was: {e.Message}");
         return(StatusCode(500));
     }
 }
Esempio n. 2
0
        protected override void Update()
        {
            ConcurrentBag <QueueJob> jobRequests = new ConcurrentBag <QueueJob>();

            Parallel.ForEach(poolRepository.GetAll(), new ParallelOptions {
                MaxDegreeOfParallelism = AppSettings.MAX_DEGREE_OF_PARALLELISM
            }, pool =>
            {
                var poolJobRequests = GetAsync.FetchResponseList <JobRequest>(requestData, $"{requestData.BaseAddress}/_apis/distributedtask/pools/{pool.id}/jobrequests?api-version=1.0").Result;
                if (poolJobRequests != null)
                {
                    foreach (var poolJobRequest in poolJobRequests)
                    {
                        QueueJob queueJob = new QueueJob
                        {
                            RequestId    = poolJobRequest.requestId,
                            QueuedTime   = poolJobRequest.queueTime,
                            AssignedTime = poolJobRequest.assignTime,
                            FinishedTime = poolJobRequest.finishTime,
                            Name         = poolJobRequest.definition.name,
                            Url          = poolJobRequest.definition._links.web.href
                        };

                        if (poolJobRequest.planType == PlanTypes.Build)
                        {
                            var build = buildRepository.GetBuild(poolJobRequest.owner.id);
                            if (build != null)
                            {
                                queueJob.LaunchedBy   = build.Creator;
                                queueJob.StartedTime  = build.StartedDate;
                                queueJob.FinishedTime = build.FinishedDate;
                                queueJob.BuildFolder  = build.Folder;

                                switch (build.BuildStatus)
                                {
                                case BuildStatus.NotStarted:
                                    queueJob.QueueJobStatus = QueueJobStatus.Queued;
                                    break;

                                case BuildStatus.Abandonded:
                                    queueJob.QueueJobStatus = QueueJobStatus.Abandonded;
                                    break;

                                case BuildStatus.Building:
                                    queueJob.QueueJobStatus = QueueJobStatus.Building;
                                    break;

                                case BuildStatus.Cancelled:
                                    queueJob.QueueJobStatus = QueueJobStatus.Cancelled;
                                    break;

                                case BuildStatus.Expired:
                                case BuildStatus.Failed:
                                    queueJob.QueueJobStatus = QueueJobStatus.Failed;
                                    break;

                                case BuildStatus.Succeeded:
                                    queueJob.QueueJobStatus = QueueJobStatus.Succeeded;
                                    break;
                                }
                            }
                            var buildDefinition = buildDefinitionRepository.GetBuildDefinition(poolJobRequest.definition.id);
                            if (buildDefinition != null && buildDefinition.Repository != null)
                            {
                                var project = projectRepository.GetProject(buildDefinition.Repository.Project.Id);
                                if (project != null)
                                {
                                    queueJob.Project = new Project
                                    {
                                        Id   = project.Id,
                                        Name = project.Name,
                                        Url  = project.Url
                                    };
                                }
                                else
                                {
                                    queueJob.Project = new Project
                                    {
                                        Name = "Unknown Project"
                                    };
                                }
                            }
                            else
                            {
                                queueJob.Project = new Project
                                {
                                    Name = "Unknown Build Definition"
                                };
                            }
                        }

                        else if (poolJobRequest.planType == PlanTypes.Release)
                        {
                            if (poolJobRequest.finishTime.HasValue)
                            {
                                switch (poolJobRequest.result)
                                {
                                case BuildResult.succeeded:
                                    queueJob.QueueJobStatus = QueueJobStatus.Succeeded;
                                    break;

                                case BuildResult.abandoned:
                                    queueJob.QueueJobStatus = QueueJobStatus.Abandonded;
                                    break;

                                case BuildResult.canceled:
                                    queueJob.QueueJobStatus = QueueJobStatus.Cancelled;
                                    break;

                                case BuildResult.failed:
                                case BuildResult.partiallySucceeded:
                                    queueJob.QueueJobStatus = QueueJobStatus.Failed;
                                    break;
                                }
                            }

                            var releaseDefinition = releaseDefinitionRepository.GetReleaseDefinition(poolJobRequest.definition.id);
                            if (releaseDefinition != null)
                            {
                                queueJob.Project = releaseDefinition.Project;
                            }
                            else
                            {
                                queueJob.Project = new Project
                                {
                                    Name = "Unknown Release Definition"
                                };
                            }
                        }



                        jobRequests.Add(queueJob);
                    }
                }
            });

            jobRequestRepository.Update(jobRequests);
            updateStatusRepository.UpdateStatus(new UpdateStatus {
                LastUpdate = DateTime.Now, UpdatedRecords = jobRequests.Count, UpdaterName = nameof(JobRequestUpdater)
            });
        }
Esempio n. 3
0
 public IActionResult GetPools()
 {
     return(Ok(poolRepository.GetAll()));
 }