private void JobStatusChanged(Job job_, Job.StatusEnum status) { try { JobImpl job = (JobImpl)job_; Trace.TraceInformation("Form JobStatusChanged was called for: {0}, which changed status to {1}", job.Title, status.ToString()); if (Server.IsRemote) { if (status == Job.StatusEnum.StartedOnServer) { RemoteJobInfo remoteJobInfo; if (JobMap.TryGetValue(job, out remoteJobInfo) == false) { Trace.TraceError("Could not find jenkins job for {0}. Persistence will not work", job.Title); } else { SavedJob saved = SavedJob.CreateSavedJob( job.Title, job.WorkingDirectory, job.RunCommand, job.Status.ToString(), remoteJobInfo.JenkinsJobName); saved.VFUrl = Server.JenkinsUrl; Entities.SavedJobs.AddObject(saved); Entities.SaveChanges(); Entities.SavedJobs.Detach(saved); } } else if (Job.IsFailedStatus(status) || status == Job.StatusEnum.Succeeded) { RemoteJobInfo remoteJobInfo; if (JobMap.TryGetValue(job, out remoteJobInfo) == false) { Trace.TraceError("Could not find jenkins job for {0}. It may remain in the database", job.Title); } else { foreach (var entity in Entities.SavedJobs.Where(x => x.JobName == remoteJobInfo.JenkinsJobName)) { Entities.SavedJobs.DeleteObject(entity); } Entities.SaveChanges(); } } } if (status == Job.StatusEnum.Ready) { JobsToBeStarted.Add(delegate() { StartJob(job); }); } } catch (Exception ex) { //TODO: Propagate error back to UI? Trace.TraceError(ex.ToString()); } }
public void JobStatusChanged(Job job_, Job.StatusEnum status) { try { JobImpl job = (JobImpl)job_; Trace.TraceInformation("Form JobStatusChanged was called for: {0}, which changed status to {1}", job.Title, status.ToString()); autoresize_counter--; lvJobQueue.SafeInvoke(delegate { Color color = Color.White; switch (status) { case Job.StatusEnum.Ready: color = Color.PeachPuff; break; case Job.StatusEnum.QueuedLocal: case Job.StatusEnum.QueuedOnServer: case Job.StatusEnum.StartedOnServer: color = Color.LightYellow; break; case Job.StatusEnum.UploadPackage: case Job.StatusEnum.DownloadResults: color = Color.PaleTurquoise; break; case Job.StatusEnum.PostedToServer: color = Color.Khaki; break; case Job.StatusEnum.RunningOnServer: case Job.StatusEnum.RunningLocal: color = Color.LightSkyBlue; break; case Job.StatusEnum.Succeeded: color = Color.LightGreen; break; case Job.StatusEnum.Failed: case Job.StatusEnum.FailedAbortOnServer: case Job.StatusEnum.FailedAbortByUser: case Job.StatusEnum.FailedExecution: case Job.StatusEnum.FailedToUploadServer: case Job.StatusEnum.FailedToDownload: case Job.StatusEnum.AbortOnServerRequested: color = Color.Tomato; break; default: color = Color.White; break; } var item = lvJobQueue.Items. Cast <ListViewItem>(). FirstOrDefault(x => x.SubItems[(int)Headers.Id].Text == job.Id.ToString()); item.BackColor = color; item.SubItems[(int)Headers.Status].Text = status.ToString(); AutoResizeColumns(); }); } catch (Exception ex) { MessageBox.Show(ex.Message); Trace.TraceError(ex.ToString()); } }