public static RunbookVersion CreateRunbookVersion(global::System.Guid tenantID, global::System.Guid runbookVersionID, global::System.Guid runbookID, int versionNumber, bool isDraft, global::System.DateTime creationTime, global::System.DateTime lastModifiedTime) { RunbookVersion runbookVersion = new RunbookVersion(); runbookVersion.TenantID = tenantID; runbookVersion.RunbookVersionID = runbookVersionID; runbookVersion.RunbookID = runbookID; runbookVersion.VersionNumber = versionNumber; runbookVersion.IsDraft = isDraft; runbookVersion.CreationTime = creationTime; runbookVersion.LastModifiedTime = lastModifiedTime; return runbookVersion; }
public void AddToRunbookVersions(RunbookVersion runbookVersion) { base.AddObject("RunbookVersions", runbookVersion); }
public void TestRunbook() { #if !DEBUG try { #endif Connect(); View.Save(); var runbook = ActiveRunbook == null ? null : api.Runbooks.Where(x => x.RunbookID == ActiveRunbook.Id).First(); var path = View.ActiveFile; RunbookVersion runbookVersion; if (runbook == null) { runbookVersion = new RunbookVersion(); runbookVersion.TenantID = new Guid("00000000-0000-0000-0000-000000000000"); runbookVersion.IsDraft = true; api.AddToRunbookVersions(runbookVersion); } else { runbookVersion = api.RunbookVersions.Where(x => x.RunbookVersionID == runbook.DraftRunbookVersionID && x.IsDraft).FirstOrDefault(); } var baseStream = new StreamReader(path, Encoding.UTF8).BaseStream; ((DataServiceContext)api).SetSaveStream(runbookVersion, baseStream, true, "application/octet-stream", string.Empty); var response = api.SaveChanges().FirstOrDefault() as ChangeOperationResponse; if (runbook == null && response != null) { api.Execute <RunbookVersion>(((EntityDescriptor)response.Descriptor).EditLink).Count(); runbook = api.Runbooks.Where(x => x.RunbookID == runbookVersion.RunbookID).First(); RefreshRunbooks(); ActiveRunbook = Runbooks.First(x => x.Id == runbook.RunbookID); activeRunbooks[path] = runbook.RunbookID; } var parameters = RunbookParameters == null ? new List <NameValuePair>() : RunbookParameters.Where(x => !string.IsNullOrEmpty(x.Value)).Select(x => new NameValuePair { Name = x.Name, Value = SerializeValue(x) }).ToList(); var result = runbook.TestRunbook(api, parameters); Job job; short?errors = 0; var exception = ""; while (!(job = api.Jobs.Where(x => x.JobID == result).First()).EndTime.HasValue) { if (job.JobStatus == "Suspended") { errors = job.ErrorCount; exception = job.JobException; job.Stop(api); } Thread.Sleep(1000); } if (job.JobStatus != "Stopped") { errors = job.ErrorCount; exception = job.JobException; } var output = QueryHelpers.GetJobOutput(api, job); var message = string.Format("#### Started: {0} - Finished: {1} - Status: {2} - Errors: {5} ####\r\nError: {4}\r\nOutput: {3}\r\n########\r\n", job.StartTime, job.EndTime, job.JobStatus, output, exception, errors); AppendOutput(message); #if !DEBUG } catch (Exception ex) { MessageBox.Show(GetErrorMessage(ex), "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } #endif }