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)); } }
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) }); }
public IActionResult GetPools() { return(Ok(poolRepository.GetAll())); }