private void buttonResendResult_Click(object sender, EventArgs e) { if (listViewStatus.SelectedItems.Count > 0) { ListViewItem item = listViewStatus.SelectedItems[0]; if (item.Tag != null && item.Tag is FullJob) { FullJob job = (FullJob)item.Tag; AutomationMessage m = new AutomationMessage(job.Job.OriginalHost, job.Job.OriginalMessageID, new JobCompleted(job.Job, job.Status.Result)); msr.SendToHost(m); } } }
private void WaitForResponses(object arg) { object[] args = (object[])arg; MessageSendRecieve msr = (MessageSendRecieve)args[0]; string msgID = (string)args[1]; JobReportReturn jr = msr.WaitForStatus(msgID, TimeSpan.FromMinutes(1)); if (jr != null) { Invoke(new MethodInvoker(delegate() { listViewStatus.BeginUpdate(); })); foreach (Job j in jr.Jobs.Keys) { JobStatus js = jr.Jobs[j]; FullJob fj = new FullJob(j, js); Invoke(new MethodInvoker(delegate() { ListViewItem lvi = listViewStatus.Items.Add(new ListViewItem(j.StartDate.ToString("yyyy/MM/dd HH:mm:ss"))); lvi.SubItems.Add(j.Configuration.ToString()); lvi.SubItems.Add(js.State.ToString()); if (js.Result != null) { lvi.SubItems.Add(js.Result.Success ? "Yes" : "No"); } else { lvi.SubItems.Add("N/A"); } lvi.SubItems.Add(j.JobXML); if (js.Result != null && js.Result.Errors != null && js.Result.Errors.Count > 0) { lvi.SubItems.Add(js.Result.Errors[0]); } else { lvi.SubItems.Add(String.Empty); } lvi.Tag = fj; })); } Invoke(new MethodInvoker(delegate() { listViewStatus.EndUpdate(); })); } Invoke(new MethodInvoker(delegate() { button1.Enabled = true; })); }
private void button2_Click(object sender, EventArgs e) { if (listViewStatus.SelectedItems.Count > 0) { ListViewItem item = listViewStatus.SelectedItems[0]; if (item.Tag != null && item.Tag is FullJob) { FullJob fj = (FullJob)item.Tag; JobStatus js = fj.Status; FolderBrowserDialog fbd = new FolderBrowserDialog(); if (fbd.ShowDialog(this) == DialogResult.OK) { DirectoryInfo di = new DirectoryInfo(fbd.SelectedPath); int i = 0; foreach (ExecutionResult er in js.Result.ExecutionResults) { if (er.Attachments.Count > 0) { DirectoryInfo targetDir = new DirectoryInfo(Path.Combine(di.FullName, i.ToString())); if (!targetDir.Exists) { targetDir.Create(); } foreach (FileData fd in er.Attachments) { try { fd.WriteToDir(targetDir); } catch (IOException ex) { MessageBox.Show(ex.ToString()); } } } i++; } } } } }
private void listViewStatus_DoubleClick(object sender, EventArgs e) { if (listViewStatus.SelectedItems.Count > 0) { ListViewItem item = listViewStatus.SelectedItems[0]; if (item.Tag != null && item.Tag is FullJob) { FullJob fj = (FullJob)item.Tag; JobStatus js = fj.Status; if (js.Result != null && js.Result.Logs.Count > 0) { Dictionary<string, List<string>> logEntries = new Dictionary<string, List<string>>(); foreach (FileData log in js.Result.Logs) { using (MemoryStream ms = new MemoryStream(log.Data)) { string lastDateTimeStr = null; TextReader tr = new StreamReader(ms); string line = null; while ((line = tr.ReadLine()) != null) { //[20100830 15:58:49] string datetime = line.Substring(1, 17); if (System.Text.RegularExpressions.Regex.Match(datetime, @"\d{8}\s\d{2}:\d{2}:\d{2}").Success) { lastDateTimeStr = datetime; if (!logEntries.ContainsKey(datetime)) { logEntries[datetime] = new List<string>(); } if (!logEntries[datetime].Contains(line)) { logEntries[datetime].Add(line); } } else { if (lastDateTimeStr != null) { logEntries[lastDateTimeStr].Add(line); } } } } } System.IO.FileInfo fi = new System.IO.FileInfo(System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.InternetCache), Guid.NewGuid().ToString() + ".log")); using (TextWriter tw = new StreamWriter(new FileStream(fi.FullName, FileMode.Create))) { List<string> keys = new List<string>(logEntries.Keys); keys.Sort(); foreach (string key in keys) { foreach (string line in logEntries[key]) { tw.WriteLine(line); } } } System.Diagnostics.Process.Start("notepad.exe", "\"" + fi.FullName + "\"").WaitForExit(); try { fi.Delete(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } } } }
private void buttonDetail_Click(object sender, EventArgs e) { if (listViewStatus.SelectedItems.Count > 0) { ListViewItem item = listViewStatus.SelectedItems[0]; if (item.Tag != null && item.Tag is FullJob) { FullJob fj = (FullJob)item.Tag; StringBuilder sb = new StringBuilder(); sb.AppendLine("Started: " + fj.Job.StartDate); sb.AppendLine("Configuration: " + fj.Job.Configuration); sb.AppendLine("VM: " + fj.Status.VMPath); sb.AppendLine("Job ID: " + fj.Job.JobID); sb.AppendLine("JobXML: " + fj.Job.JobXML); sb.AppendLine("SequenceXML: " + fj.Job.SequenceXML); sb.AppendLine("ConfigXML: " + fj.Job.ConfigurationXML); sb.AppendLine("Packages (" + fj.Job.Packages.Count + "):"); for (int i = 0; i < fj.Job.Packages.Count; i++) { ExecutablePackage ep = fj.Job.Packages[i]; sb.AppendLine("PackageXML: " + ep.PackageXML); sb.AppendLine(" DLL: " + ep.JobRunnerDLLName); if (ep.Properties.Count > 0) { sb.AppendLine(" Package Properties:"); foreach(string key in ep.Properties.Keys) { sb.AppendLine(" " + key + ": " + ep.Properties[key]); } } if (fj.Status.Result != null && fj.Status.Result.ExecutionResults.Count > i) { ExecutionResult er = fj.Status.Result.ExecutionResults[i]; sb.AppendLine(" Success: " + er.Success); sb.AppendLine(" Attachments (" + er.Attachments.Count + "):"); foreach (FileData fd in er.Attachments) { sb.AppendLine(" Name: " + fd.Name); } sb.AppendLine(" Errors (" + er.Errors.Count + "):"); foreach (string error in er.Errors) { sb.AppendLine(" " + error); } } } sb.AppendLine("State: " + fj.Status.State); sb.AppendLine("Last State Change: " + fj.Status.LastStateChange); if (fj.Status.Result != null) { sb.AppendLine("Completed: " + fj.Status.Result.Completed); sb.AppendLine("Success: " + fj.Status.Result.Success); sb.AppendLine("SnapshotOnShutdown: " + fj.Status.Result.SnapshotOnShutdown); if (fj.Status.Result.SnapshotOnShutdown) { sb.AppendLine("SnapshotName: " + fj.Status.Result.SnapshotName); sb.AppendLine("SnapshotDesc: " + fj.Status.Result.SnapshotDesc); } sb.AppendLine("Log Files (" + fj.Status.Result.Logs.Count + "):"); foreach (FileData fd in fj.Status.Result.Logs) { sb.AppendLine(" Name: " + fd.Name); } } if (fj.Job.Properties != null && fj.Job.Properties.Count > 0) { sb.AppendLine("Properties:"); foreach (string key in fj.Job.Properties.Keys) { sb.AppendLine(key + ": " + fj.Job.Properties[key]); } } //sb.AppendLine(Utility.DumpObject(fj.Job, 0, typeof(ExecutablePackage), typeof(IEnumerable<ExecutablePackage>))); MessageBox.Show(sb.ToString()); //MessageBox.Show(Utility.DumpObject(js, 0, typeof(JobResult), typeof(List<FileData>), typeof(List<ExecutionResult>), typeof(ExecutionResult))); } } }